Программирование java в anylogic

мод сис / Основы_Java_для_AnyLogic

Общие замечания • Не требуется знать принципы объектно-ориентированного программирования • Достаточно знать типы данных Java и понимать синтаксис выражений • Обратите внимание на следующее: • Java учитывает регистр: переменная MyVar отлична от myVar ! • Имена не могут содержать пробелов: имя “ My Var ” недопустимо! • Каждое действие должно заканчиваться “ ; ”: MyVar = 150; • Каждая функция должна иметь скобки: time() , add(a) • Следует помнить о целочисленном делении: 3/2 = 1 , а не 1.5 • Булевские переменные могут принимать только значения true и false , использовать значения 1 и 0 нельзя • Точка “ . ” позволяет перейти “внутрь” объекта: agent.event.restart() • Элементы массивов имеют индексы от 0 до N-1

Типы • Примитивные типы double – вещественное число: 1.43 , 3.6E18 , ­14.0 int – целое число: 12 , 16384 , -5000 boolean – булево значение: true , false • Составные типы – классы String – текстовая строка: “AnyLogic” , “Привет!” ArrayList, LinkedList – коллекции объектов HyperArray – многомерный массив вещественных чисел в системно-динамических моделях … и многие другие. См. справочник классов AnyLogic и Java

Выражения • Арифметические операции + , – , * , / , % (остаток от деления) При целочисленном делении дробная часть отбрасывается, например: 3 / 2 равняется 1 , 2 / 3 равняется 0 Операции типа умножение имеют приоритет над операциями типа сложение Оператор ‘ + ‘ также конкатенирует строки типа String

• Операции сравнения > , >= , < ,

Операции одинакового приоритета выполняются слева направо Для управления приоритетом используйте скобки

Примеры 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 ≡ true если x равен ? 5, иначе false , тогда как: x = 5 ≡ присвоить x ? значение 5

Читайте также:  Программирование блока управления двс

Вызов методов и доступ к полям • Вызов методов Чтобы вызвать метод, укажите имя метода и после имени поставьте скобки. Если необходимо, в скобках через запятую укажите параметры. Примеры: x = time(); moveTo( getX(), getY() + 100 ); traceln( “Population is increasing” ); • Доступ к полям и методам Чтобы обратиться к полю или методу элемента модели (стейтчарта, события, анимации), укажите имя этого элемента, добавьте точку ‘ . ’, а затем укажите имя поля или метода. Примеры: statechart . fireEvent( “go” ); sum = sum + agents . get(i) . x;

Комментарии в Java коде Есть два вида комментариев:

/* text */ Обычный комментарий: игнорируется весь текст,
находящийся между ASCII символами /* и */ (как в C и
C++).

/** * The class represents AnyLogic 3D animation. It contains the canvas object. * @author Daniil Chunosov * @version 5.0 */ public class Animation3DPanel extends javax.swing.JPanel …

// text Строчный комментарий: игнорируется весь текст от
ASCII символов // и до конца строки (как в
C++)

// Prepare Engine for simulation: engine.start( root ); engine.runFast(); // fast mode – no animation

© 2002-2009 ООО «Экс Джей Текнолоджис», www.xjtek.ru 7–7

Реплицированные объекты • Реплицированный объект представляется массивом переменного размера. Элементы массива имеют индексы от 0 до N-1 Получение размера массива: people .size() Получение i-го элемента массива: people .get( i ) Добавление нового объекта: add_ people (); Удаление объекта: remove_ people ( person );

Встроенные функции • Системные функции – time() , getOwner() , pause() , isStateActive(…) , и т.д. • Математические функции – Базовые: sqrt, sin, cos, tan, exp, log, round, zidz, xidz , и т.д. • Специальные функции – Случайные числа: uniform, exponential, bernoulli, beta , и т.д. – Для работы со временем: delay • И другие … – См. классы Utilities, Presentable, ActiveObject и Agent в справочнике классов AnyLogic

Описывает случайную величину, для которой вероятность попадания в любой интервал между min и max прямо пропорциональна длине этого интервала. exponential( lambda )

Используется для моделирования временных lambda
интервалов между случайными событиями. Важное
свойство: отсутствие последействия.

triangular( min, mode, max ) Обычно используется в условиях недостатка данных о длительности какого-либо процесса.

min mode max

Источник

Создание Java классов

AnyLogic позволяет пользователю создавать в рамках модели свои собственные Java классы с любой необходимой вам функциональностью.

  1. В панели Проекты, щелкните правой кнопкой мыши по любому элементу модели, в которой вы хотите создать Java класс, и выберите Создать > Java класс… из контекстного меню.
  2. Появится диалоговое окно Новый Java класс.
  3. На первой странице Мастера введите имя нового Java класса в поле Имя и введите имя базового класса (если создаваемый класс будет наследоваться от какого-то другого) в поле Базовый класс.
  4. Щелкните мышью по кнопке Далее, чтобы перейти к следующей странице Мастера.
  5. На второй странице Мастера задайте поля создаваемого класса. Каждое поле задается в отдельной строке отображенной в Мастере таблицы. Введите тип поля в ячейке Тип (если вы создаете поле примитивного типа, вы можете просто щелкнуть мышью внутри ячейки и выбрать нужный вам тип из выпадающего списка), затем введите имя поля в ячейке Имя и при необходимости также измените уровень доступа к полю в ячейке Доступ и задайте начальное значение поля в ячейке Начальное значение.
  6. С помощью флажков Создать конструктор и Создать метод toString() укажите, хотите ли вы, чтобы автоматически были созданы конструктор создаваемого класса и метод toString(), отвечающий за текстовое представление объекта данного класса. Мы рекомендуем оставлять данные флажки установленными.
  7. Щелкните мышью по кнопке Готово. Вы увидите Java редактор, в котором будет отображен код созданного класса.

Источник

Java in AnyLogic

It would be nice if any simulation model could be put together graphically, in drag and drop manner. In practice, however, only very simple models are created using a mouse and not touching the keyboard. As you try to better reflect the real world in the model, you inevitably realize the need to use probability distributions, evaluate expressions and test conditions containing properties of different objects, define custom data structures and design the corresponding algorithms. These things are better done in text, not in graphics, and therefore any simulation modeling tool includes a textual scripting language.

From the very beginning we did not want to invent a proprietary scripting language for AnyLogic. Moreover, the creation of AnyLogic was much inspired by Java, which we think is the ideal language for modelers. On one hand Java is sufficiently high level language where you do not need to care about memory allocation, distinguish between objects and references, etc. On the other hand Java is fully powerful object oriented programming language with high performance. In Java you can define and manipulate data structures of any desired complexity, develop efficient algorithms, use numerous packages available from Sun™/Oracle™ and other vendors. Java is supported by the industry leaders and as Java gets better AnyLogic modelers automatically benefit from it.

A model developed in AnyLogic is fully mapped into Java code and, having been linked with AnyLogic simulation engine (also written in Java), and, optionally, with a Java optimizer, becomes a completely independent standalone Java application. This makes AnyLogic models cross-platform: they can run on any Java-enabled environment.

A frequently asked question is «How much Java do I need to know to be successful with AnyLogic?» Good news is that you do not need to learn object-oriented programming. The «backbone Java class structure» of the model is automatically generated by AnyLogic. In a typical model Java code is present in small portions written in various properties of the graphically created model objects. This can be an expression, a function call, a couple of statements. Therefore you need to get familiar with the fundamental data types, learn the basics of Java syntax, and understand that to do something with a model object you need to call its function.

This section of AnyLogic Help is by no means a complete description of Java language, this is not even an introduction into Java suitable for programmers. This is a collection of information that will allow you to manipulate data and model objects in AnyLogic models. It is sufficient for a typical modeler. For those who plan to write sophisticated Java code, use object-orientedness, work with external Java packages, we recommend to learn Java with a good textbook, for example, one of those ones:

Bruce Eckel. «Thinking in Java», available online here.

«Head First Java. Your Brain on Java — A Learner’s Guide» By Bert Bates, Kathy Sierra. Publisher: O’Reilly Media.

You can find also some concise but very helpful information on Java here: http://www.javabeginner.com.

For details on Java classes, see Java SDK documentation.

Источник

Java в AnyLogic

Было бы замечательно, если бы любую имитационную модель можно было создать графически, простым перетаскиванием элементов и соединением их друг с другом. Но в действительности только самые простые модели могут быть созданы с помощью мыши и без участия клавиатуры. Пытаясь отразить в модели аспекты реального мира, вы неизбежно столкнетесь с необходимостью использования функций вероятностных распределений, вычисления выражений и проверки условий, анализирующих значения свойств различных объектов, задания нестандартных структур данных и разработки соответствующих алгоритмов. Все это лучше делать не графически, а в тексте, и поэтому любой инструмент имитационного моделирования содержит текстовый язык задания сценариев.

С самого начала мы не хотели изобретать свой собственный язык сценариев для AnyLogic. Более того, создание AnyLogic было во многом вдохновлено именно Java, который мы считаем идеальным языком программирования для разработчиков моделей. С одной стороны, Java — достаточно высокоуровневый язык, избавляющий пользователя от хлопот по выделению памяти, различию между объектами и ссылками и т.д. С другой стороны, Java является полнофункциональным объектно-ориентированным языком программирования с высокой производительностью. В Java вы можете задавать структуры данных любой сложности, разрабатывать эффективные алгоритмы, использовать многочисленные пакеты классов от Sun™/Oracle™ и других разработчиков. Java поддерживается лидерами отрасли и по мере улучшения Java все новые преимуществами возможности языка автоматически добавляются в арсенал пользователей AnyLogic.

Разработанная в AnyLogic модель полностью отображается в Java код, и будучи связанной с исполняющим модулем AnyLogic (также написанном на Java) и опционально с Java оптимизатором, становится абсолютно независимым самостоятельным Java приложением. Это делает модели AnyLogic кросс-платформенными: они могут быть запущены в любой поддерживающей Java среде.

Часто задается вопрос «Как много я должен знать о Java, чтобы успешно создавать модели в AnyLogic?». Спешим обрадовать — вам совершенно не обязательно знать что-либо об объектно-ориентированном программировании. «Скелет» структуры Java классов модели автоматически создается AnyLogic. В типичной модели Java код присутствует в виде небольших фрагментов, написанных в различных свойствах графически созданных пользователем элементов модели. Это могут быть выражения, вызовы функций, небольшое количество строк кода. Поэтому вам нужно просто ознакомиться с основными типами данных, выучить основы синтаксиса языка Java и запомнить, что для того, чтобы произвести какое-либо действие с объектом модели, нужно вызвать его функцию.

Этот раздел Справки AnyLogic ни в коей мере не является полным описанием языка Java и не подходит даже в качестве вводного пособия в язык Java для программистов. Это скорее набор информации, достаточный для разработчика моделей AnyLogic, который позволит вам работать с данными и объектами моделей. Для тех, кто планирует писать сложный Java код, использовать преимущества объектно-ориентированного подхода, работать с внешними пакетами Java классов, мы рекомендуем изучить Java с помощью хорошего учебника, например, одного из следующих:

Для самостоятельного изучения Java мы рекомендуем вам прочесть начальные главы одной из лучших книг по Java: Bruce Eckel. Thinking in Java. На английском языке книга доступна на Amazon. Перевод на русский: Брюс Эккель. Философия Java, 2 редакция.

Документация по Java классам (на английском языке) доступна здесь.

Кроме того, вы можете найти и другие онлайн учебники и учебные курсы на русском языке, например: В.Фесюнов. Конспект лекций по Java

Источник

Оцените статью