Ускорьте программу LP с помощью обратных вызовов Cplex - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть программа Cplex, в которой я ищу оптимальное решение.К сожалению, мой Cplex работает слишком медленно.Перед запуском Cplex я могу использовать эвристику, чтобы получить относительно хорошее решение.

Вопрос: Как я могу использовать эти знания (то есть, зная хорошее решение) для ускорения программы?

Попытка решения: Iпытаюсь использовать Cplex.start.set_start (из CPLEX Python API).Однако я не знаю, как ввести мои переменные.

Например, среди прочих переменных: x1p3 = 0 и x7p2 = 1.

Я посмотрел на определение set_start вследующим образом: set_start (self, col_status, row_status, col_primal, row_primal, col_dual, row_dual), но это не помогает мне понять проблему.

1 Ответ

0 голосов
/ 11 февраля 2019

Есть несколько вещей, которые вы можете сделать, прежде чем приступить к решению вашей модели.Однако нет необходимости использовать обратные вызовы CPLEX.

  1. Вы можете использовать алгоритм предварительной обработки для исправления переменных в вашей модели

    • Существует два типа предварительной обработкиалгоритм: точный и эвристический .Точная предварительная обработка, безусловно, не влияет на ваше оптимальное решение;с другой стороны, эвристическая предварительная обработка может сократить ваше оптимальное решение.
  2. Использование эвристики для вычисления хороших оценок для вашей задачи.

    • Опять же, у вас есть два типа границ: первичные границы и двойные границы.Такие границы можно использовать для ускорения алгоритма ветвления и ограничения, поскольку он будет вызывать некоторые срезы в вашем ветвящемся дереве
    • Если вы используете первичную эвристику, вы можете использовать его решение для обеспеченияназывается теплый старт в CPLEX.Это первоначальное решение, отличное от обычного, которое также может ускорить разрешение вашей модели.
...