Материалы тренинга по AnyLogic
.pdfОсновы Java для
Эта презентация является частью стандартной программы обучения
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru
Общиезамечания
•Не требуется знать принципы объектно ориентированного
программирования
•выраженийДостаточнознатьтипыданныхJava ипониматьсинтаксис
•Java учитывает регистр: переменная MyVar отлична от myVar!
•Именане могут содержать пробелов: имя “My Var” недопустимо!
•Каждоедействие должно заканчиваться“;”: MyVar = 150;
•Каждаяфункциядолжна иметьскобки: time(), add(a)
,.
•Булевскиепеременные могут принимать только значенияtrue и false, использовать значения 1 и 0 нельзя
•Точка “.” позволяетперейти “внутрь” объекта: agent.event.restart()
•Элементымассивовимеют индексы от 0 до N 1
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
282 |
Типы
double – вещественное число: 1.43, 3.6E18, 14.0 , ,
boolean – булево значение: true, false
• Составные типы – классы
String – текстоваястрока: “AnyLogic”, “Привет!” ArrayList, LinkedList – коллекции объектов
HyperArray – многомерныймассиввещественныхчиселв
системно динамических моделях
… и многие другие. См. справочникклассовAnyLogic и
Java
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
283 |
Выражения
• |
Арифметические операции |
|
|
||
|
+, –, *, /, % (остаток от деления) |
|
|
|
|
|
Прицелочисленном делениидробнаячасть отбрасывается, например: 3 / 2 равняется 1, |
||||
|
2 / 3 равняется 0 |
|
|
|
|
|
Операциитипа умножение имеют приоритет надоперациями типа сложение |
||||
|
Оператор ‘+‘ также конкатенирует строки типа String |
|
|||
• |
Операциисравнения |
|
|
|
|
|
>, >=, <, <=, ==, != |
|
|
|
|
• |
Логические операции |
|
|
|
|
|
&& (и), || (или), ! (не) |
|
|
|
|
• |
Условныйоператор |
|
|
Операции одинакового |
|
• |
|
|
|
|
слева направо |
Присваивание и сокращения |
|
||||
|
Для управления |
||||
|
=, +=, =, *=, /=, %=, |
++, |
|
|
|
|
Пример: a+=b равносильноa=a+b |
|
|
приоритетом используйте |
|
|
|
|
|
|
скобки |
|
|
|
|
|
|
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
284 |
Примеры
5 % 2 ≡ 1?
5 / 2 ≡ 2?
5. / 2 ≡ 5 / 2. ≡ 2.?5
(double)5 / 2 ≡ 2.?5
a += b; ≡ a = a+b;? a++; ≡ a = a+1;?
“Any” + “Logic” ≡ “AnyLogic? ”
Пусть x = 14.3, тогда: “x = ” + x ≡ “x = 14.3”
“” ≡ пустая?строка
“” + x ≡ “14?.3”
y = x > 0 ? x : 0
≡ y = max(?0, x )
x = 5 ≡ присвоить x?значение 5
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
285 |
Вызовметодовидоступкполям
• Вызов методов
Чтобывызватьметод, укажитеимя метода и после имени поставьтескобки. Если необходимо, в скобках через запятуюукажите параметры. римеры:
x = time();
moveTo( getX(), getY() + 100 ); traceln( “Population is increasing” );
• Доступкполямиметодам
Чтобыобратитьсяк полю или методуэлемента модели (стейтчарта, события, анимации), укажитеимя этого элемента, до авьтеточку . , а затем укажитеимя поляили метода. Примеры:
statechart.fireEvent( “go” ); sum = sum + agents.get(i).x;
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
286 |
КомментариивJava коде
Есть два вида комментариев:
/* text */ |
Обычный комментарий: игнорируется весь текст, |
|
|
находящийся междуASCII символами /* и */ (как в C и |
|
|
C++). |
|
|
. |
. |
ASCII символов // и до конца строки (как в
C++)
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
287 |
|
|
Реплицированныеобъекты
• Реплицированныйобъект
представляется массивом переменного м . л м нты м и им т
индексы от 0 до N 1
Получение размера массива: people.size()
Получение i гоэлемента массива: people.get( i )
Добавление новогообъекта: add_people();
Удаление объекта: remove_people( person );
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
288 |
Встроенныефункции
•Системные функции
–getOwner(), pause(), traceln(), isStateActive(), и т.д.
•Функции для работы со временем
–time(), date(), getHourOfDay(), minute(), и т.д.
–Базовые: sqrt(), sin(), cos(), exp(), log(), round(), и т.д.
–Случайные числа: uniform(), exponential(), bernoulli(), и т.д.
–Системная динамика: delay(), delay3(), smooth(), trend(), и тд. .
•И другие …
. |
, |
, |
|
справочнике классовAnyLogic |
|
|
|
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
289 |
Вероятностныераспределения
uniform( min, max ) |
писывает случа ную величину, для которо |
||||
|
|
|
|||
|
|
|
вероятность попадания в любой интервал между min и |
||
|
|
|
|||
|
|
|
max прямо пропорциональна длине этого интервала. |
||
|
|
|
|
|
exponential( lambda ) |
спользуется для моделирования временных |
lambda |
|
|||
интервалов между случайными событиями. Важное |
|
||||
|
|
||||
свойство: отсутствие последействия. |
|
|
triangular( min, mode, max )
Обычно используется в условиях недостатка данных о длительности какого-либо процесса.
min |
mode max |
|
|
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
290 |
Основныеконструкцииязыка
• |
Присваиваниеили вызов метода: |
|
|
y = f(x1,x2) + 5*z; |
|
|
event.restart( uniform( 10, 20 ) ); |
|
|
|
|
• |
Ветвление по условию: |
|
|
r en s a o a ac |
ons an |
|
attack(); |
|
|
else |
|
|
escape(); |
|
• |
Цикл: |
|
|
double total = 0; |
|
|
for ( Person p : people ) |
|
|
total += p.income; |
|
|
for( int i=0; i<100; i++ ) |
|
|
, |
291 |
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
Коллекции
•Коллекции – это предопределенные классы, реализующие базовыеструктуры данных
•Одна и та же операция для разныхклассовзанимаетразное время
|
|
ArrayList |
LinkedList |
HashSet |
SortedSet |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Получение размера |
|
Const |
Const |
Const |
Const |
|
||
о авление элемента |
|
ons |
ons |
ons |
og |
|
||
Удаление элемента |
|
Linear |
Linear |
Const |
Log |
|||
даление по индексу |
|
nea |
nea |
- |
- |
|
|
|
Получение по индексу |
|
Const |
Linear |
- |
- |
|
|
|
|
|
|
|
|
|
|
||
Поиск мин/макс |
|
Linear |
Linear |
Linear |
Const |
|
||
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
|
292 |
Источникиинформации
Справочник классов AnyLogic
РазделAPI Reference справочнойсистемы AnyLogic
СпецификацияJava API |
|
|
http://java.sun.com/javase/6/docs/api |
|
|
Одна из лучших книг по Java: |
|
|
ruce c e . n ng n |
ava. |
|
Доступнапо адресу: |
|
|
. . . |
. |
. |
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
293 |
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
294 |
Модельцепочки
Эта презентация является частью стандартной программы обучения
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru
Модельцепочкипоставок
Теперь мы построиммодель простойцепочки поставок. Эта модель удетвключать в се я разра отанные ранее модели завода и оптовогомагазина ритейлера. Они будутиграть роль компонентов этоймодели.
Цепочкапоставок будетработать следующим образом:
Давайте предположим, что и ритейлер и завод принадлежат одной
.
типа товара (стиральной машины) посредством имеющегося у нее оптовогомагазина.
На складе ритейлера всегда имеется определенное количество товара. Когда оно достигает заданного нижнего уровня, ритейлер посылает запрос на завод на производствои доставку новой партии товара.
Пополучении запроса, завод начинает выпуск требуемого
количествастиральныхмашин. Каждые 10 машинобразуютсобой
партиютовара, котораягрузится на грузовики отправляется ритейлеру.
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
296 |
Цепочкапоставок. Фаза1
Первая фаза этоймодели будет играть роль
подготовительной.
Мысоздадимещеодинклассактивногообъектаипоместимв
него экземпляры обоих ранее созданных классов активных объектов (Factory и Retailer).
Таким образом, в нашей модели будут одновременно (и пока что независимодруг от друга) работать оба участника нашей
цепочки поставок.
Позднеемыусовершенствуемэтумодель, сделавтак, что
товарыбудут производитьсяна заводе в соответствии с посылаемыми ритейлеромзапросамина производство.
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
297 |
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
298 |
Цепочкапоставок. Фаза1. Шаг 1
Создайте |
еретащите ac ory и e a e на диаграмму a n |
|
|
классактивного |
|
объекта Main |
|
|
|
Расположите анимацииклассов, какпоказано здесь
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
299 |
|
|
Создайте класс активного объекта и поместите в него созданныеранее активные объекты Factory и Retailer.
Создайте еще один класс активного объекта и назовите его a n. a n удет играть роль верхнего уровняиерархии в нашей модели. Здесь мы зададимвзаимодействие между
ритейлеромизаводом.
Добавьте экземпляры классов активныхобъектов Retailer и Factory на диаграмму классаMain.
Вложенные объекты
, |
|
|
. |
активныхобъектов могут включатьв себя другиеактивныеобъекты. |
|||
Вложенныев классэкземпляры другихклассовактивныхобъектов |
|||
т л |
м |
ъ |
м . |
Вы увидите значки вложенных объектов и презентации |
|
о оих классовна презентации классаMain. Разместите их |
|
так, как показано на слайде выше – чтобы план завода |
|
располагалсяподпланомритейлера. |
|
© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru |
300 |