Перейти к содержанию

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 -m pip install .
или
pip install .

Порядок действий для расчёта на Python

После установки пакета arhiplexpy с использованием пакетного менеджера, убедитесь, что у вас:

  1. Установлен ArhiPlex Remote Client (если arhiplexpy вам был предоставлен отдельно от ARC)
  2. Установлен лицензионный ключ (переменная окружения X_API_KEY). Подробнее об установке лицензионного ключа - в разделе "Быстрый старт".

Далее для решения математической задачи осуществляется:

  • Подключение пакета arhiplexpy в программный код на python
    import arhiplexpy
    
  • Создание объекта модели
    model = arhiplexpy.Model()
    
  • Создание переменных математической модели
    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)
    
  • Решение задачи с использованием облачного сервиса ArhiCloud
    result = model.solve_remote(name_mapping_file="test.map")
    

Код простейшей программы на 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")