Как получить разрыв оптимальности, используя CPLEX Python API? - PullRequest
0 голосов
/ 06 июня 2018

Как можно получить разрыв оптимальности (относительный и абсолютный) с помощью CPLEX Python API (CPLEX 12.5, Python 2.7.15)?Есть ли такая функция, как get_optimal_gap(), которая дала бы разрыв в оптимальности?Или синтаксический анализ вывода (как упоминалось здесь ) является единственным способом?Я вижу, что есть пользовательские функции, такие как solution.get_objective_value() - было бы неплохо, если бы кто-то мог предложить онлайн-ресурсы со списком всех функций, которые можно применить к объекту / файлу cplex.В настоящее время я использую следующий код (любезно: этот документ IBM):

    import cplex
    import sys

    def sample1(filename):
        c = cplex.Cplex(filename)
        try:
            c.solve()
        except CplexSolverError:
            print "Exception raised during solve"
            return

        # solution.get_status() returns an integer code
        status = c.solution.get_status()
        print "Solution status = " , status, ":",
        print c.solution.status[status]
        print "Objective value = " , c.solution.get_objective_value()

    sample1(filename)

1 Ответ

0 голосов
/ 06 июня 2018

Документация для CPLEX Python API: здесь (в настоящее время версия 12.8).

Чтобы получить относительный разрыв mip, вы можете использовать c.solution.MIP.get_mip_relative_gap() .Чтобы вычислить абсолютный разрыв в мипах, вам понадобится c.solution.MIP.get_best_objective () .

Если вы еще этого не сделали, вам также нужно взглянуть на CPX_PARAM_EPGAP и CPX_PARAM_EPAGAP параметры.

...