Любая модель, разработанная в AnyLogic, является Java-приложением и может быть модифицирована с помощью языка Java. Тем не менее, вы можете использовать Python в качестве дополнительного языка программированиях ваших моделях, подключая нужные библиотеки и реализуя соответствующие алгоритмы.
Чтобы воспользоваться возможностями Python при моделировании, используйте Pypeline — библиотеку, разработанную специально для AnyLogic. С ее помощью вы можете связать виртуальную машину Java и установленный локально интерпретатор Python. Таким образом вы можете исполнять код, написанный на Python, не портируя его в Java.
Больше информации о Pypeline — на посвященной ему странице GitHub.
- На компьютере должен быть установлен Python 3+.
- Путь до исполняемого файла Python должен быть указан в качестве переменной среды PATH.
Чтобы установить Pypeline
- Скачайте JAR-файл Pypeline со страницы релизов.
- Разместите файл в директорию, из которой он не будет случайно перемещен или удален.
- Запустите AnyLogic.
- Добавьте Pypeline в рабочее пространство: см. Управление библиотеками.
- Новая палитра Pypeline, состоящая из единственного элемента PyCommunicator, должна появиться в панели Палитра.
Чтобы проверить соединение
- Создайте новую пустую модель.
-
Перетащите элемент PyCommunicator с палитры Pypeline на графическую диаграмму.
Оставьте имя элемента по умолчанию (pyCommunicator). - Запустите модель.
- Щелкните по элементу PyCommunicator в окне запущенной модели.
-
В появившемся окне инспекта должны быть видны версия Python, установленная на компьютере, и путь до исполняемого файла Python.
Если появится сообщение об ошибке, проверьте его текст, чтобы определить причину неполадки.
У объекта PyCommunicator есть три основных функции с несколькими нотациями. Любая из этих функций возвращает объект типа Attempt, данные из которого вы затем можете обработать и использовать в коде Java.
Функция | Описание |
---|---|
Attempt run(String... lines) |
Выполняет код, не возвращающий значения. Так, pyCommunicator.run("x = 3") создаст переменную x в контексте Python и задаст ей значение 3. lines — строка (или несколько строк) кода, которую нужно выполнить. |
Attempt runResults(String... lines) |
Выполняет код, возвращающий значение. Так, pyCommunicator.run("5 + 3") выполнит операцию сложения и вернет ее результат в виде объекта Attempt. lines — строка (или несколько строк) кода, которую нужно выполнить. |
Class<T> runResults(T returnType, String... lines) |
Выполняет код, возвращающий значение указанного типа. Так, pyCommunicator.run(int.class, "5 + 3") выполнит операцию сложения и вернет ее результат в виде объекта int. lines — строка (или несколько строк) кода, которую нужно выполнить. |
Объект Attempt — это результат вызова функции run() или runResults().
Функция | Описание |
---|---|
boolean isSuccessful() | Возвращает булево значение: true, если код Python был выполнен без ошибок, false в остальных случаях. |
String getFeedback() | Возвращает результат вызова кода Python в виде строки (String). |
T getFeedback(Class<T> type) |
Возвращает результат вызова кода Python в виде объекта указанного типа. type — Тип объекта, который должен быть возвращен. |
Чтобы просмотреть модели, демонстрирующие различные варианты использования Python в AnyLogic, перейдите в раздел Примеры моделей на начальной странице, выбрав Справка > Примеры моделей из главного меню AnyLogic.
Введите python в строку поиска, затем щелкните по ссылке на модель, чтобы открыть ее в графическом редакторе.
-
Как мы можем улучшить эту статью?
-