Python API
Для работы с сервисом облачных вычислений ArhiCloud существует несколько возможностей разрабатывать модели на языке Python и запускать решение - пакеты arhiplexpy и ArhiOMO. В данном разделе описаны основные принципы работы с первым из перечисленных.
Где я могу найти перечень методов используемых библиотек?
Полный справочник API доступен по ссылке.
Системные требования
Python API доступно для версий Python 3.8, 3.11, 3.12 для Windows, а также 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 для Linux.
Установка arhiplexpy
Пакет arhiplexpy предоставляется Пользователям совместно с приложением ArhiPlex Remote Client. После установки на Windows или Linux пакет для python расположен в каталоге {ARHIPLEX_HOME}/lib/python/
.
Для установки пакета в окружение воспользуйтесь менеджером пакетов pip. Например, перейдя в командной строке в директорию {ARHIPLEX_HOME}/lib/python/
установка осуществляется с использованием команды
Порядок действий для расчёта на Python
После установки пакета arhiplexpy с использованием пакетного менеджера, убедитесь, что у вас:
- Установлен ArhiPlex Remote Client (если arhiplexpy вам был предоставлен отдельно от ARC)
- Установлен лицензионный ключ (переменная окружения X_API_KEY). Подробнее об установке лицензионного ключа - в разделе "Быстрый старт".
Далее для решения математической задачи осуществляется:
- Подключение пакета arhiplexpy в программный код на python
- Создание объекта модели
- Создание переменных математической модели
x1 = model.add_variable(0, 40, 1, arhiplexpy.variable_type.continuous, 'x1') x2 = model.add_variable(0, arhiplexpy.kArhiplexInf, 2, arhiplexpy.variable_type.continuous, 'x2') x3 = model.add_variable(0, arhiplexpy.kArhiplexInf, 3, arhiplexpy.variable_type.continuous, 'x3') x4 = model.add_variable(2, 3, 1, arhiplexpy.variable_type.integer, 'x4')
- Создание ограничений математической модели
- Выбор направления оптимизации
- Решение задачи с использованием облачного сервиса ArhiCloud
Код простейшей программы на Python выглядит следующим образом:
import arhiplexpy
if __name__ == "__main__":
model = arhiplexpy.Model()
model.set_dbl_param("mip_rel_gap", 0.1)
x1 = model.add_variable(0, 40, 1, arhiplexpy.variable_type.continuous, 'x1')
x2 = model.add_variable(0, arhiplexpy.kArhiplexInf, 2,arhiplexpy.variable_type.continuous, 'x2')
x3 = model.add_variable(0, arhiplexpy.kArhiplexInf, 3,arhiplexpy.variable_type.continuous, 'x3')
x4 = model.add_variable(2, 3, 1, arhiplexpy.variable_type.integer, 'x4')
model.add_constraint(–x1 + x2 + x3 + 10 * x4 <= 20, 'c1')
model.add_constraint(x1 – 3 * x2 + x3 <= 30, 'c2')
model.add_constraint(x2 – 3.5 * x4 == 0, 'c3')
model.set_objective_sense(arhiplexpy.objective_sense.maximize)
result = model.solve_remote(name_mapping_file="test.map")