Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Материалы тренинга по AnyLogic

.pdf
Скачиваний:
218
Добавлен:
28.03.2015
Размер:
12.93 Mб
Скачать

Основы 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