Я решаю серию проблем с LP, используя API CPLEX Python. Поскольку многие проблемы по существу одинаковы, сохраните ручку, полную параметров. Я хочу использовать теплый старт с решением предыдущей проблемы для большинства из них, вызвав функцию cpx.start.set_start(col_status, row_status, col_primal, row_primal, col_dual, row_dual)
где cpx = cplex.Cplex()
.CPLEX находит оптимальное решение LP, но не возвращает никакой базовой ошибки
Эта функция задокументирована here. Два аргумента, col_status
и row_status
, получены по телефону cpx.solution.basis.get_col_basis()
и cpx.solution.basis.get_row_basis()
.
Однако, несмотря на cpx.solution.status[cpx.solution.get_status()]
возвращение optimal
и возможность получить как cpx.solution.get_values()
и cpx.solution.get_dual_values()
...
Вызов cpx.solution.basis.get_basis()
возвращается CPLEX Error 1262: No basis exists.
Сейчас, по словам this post можно назвать теплой начальную функцию с пустыми списками для состояния столбцов и строк, следующим образом.
lastsolution = cpx.solution.get_values()
cpx.start.set_start(col_status=[], row_status=[],
col_primal=lastsolution, row_primal=[],
col_dual=[], row_dual=[])
Однако на самом деле это приводит к еще нескольким итерациям CPLEX. Почему еще неясно, но общая цель состоит в том, чтобы иметь значительно меньше, очевидно.
Version Info Python 2.7.12 CPLEX 12.6.3
Любые шансы вы можете поделиться своей моделью (в идеале в формате SAV) на сайте обмена файлами, например http://filedropper.com? То есть, модель, где после вызова 'cpx.solve()' вы получаете «CPLEX Error 1262» при вызове 'cpx.solution.basis.get_basis()'. Кроме того, можете ли вы воспроизвести это поведение в интерактивном режиме? – rkersh
Совместное использование модели в настоящее время не является вариантом. Кроме того, модели чрезвычайно велики. Кроме того, я не собираюсь писать и отлаживать несколько сотен строк дублированного кода для интерактивного, просто чтобы воспроизвести ошибку. Сожалею. – Constantine