У меня есть целевая функция с несколькими сотнями квадратичных членов, которые я хотел бы минимизировать; в этом случае я стараюсь минимизировать абсолютное расстояние между несколькими переменными. Итак, структура моей проблемы выглядит так (очень упрощенно):
Minimize
obj: [ a^2 - 2 a * b + b^2 ] / 2
Subject To
c1: a + b >= 10
c2: a <= 100
End
Я использую Python API для решения проблемы следующим образом:
import cplex
cpx = cplex.Cplex()
cpx.read('quadratic_obj_so.lp')
# use the dual simplex
cpx.parameters.lpmethod.set(cpx.parameters.lpmethod.values.dual)
cpx.solve()
print cpx.solution.get_values()[0:15]
print cpx.solution.status[cpx.solution.get_status()]
print cpx.solution.get_objective_value()
И для приведенного выше примера я получаю (показаны только итерации 16-18):
Itn Primal Obj Dual Obj Prim Inf Upper Inf Dual Inf
16 1.4492800e-19 -1.0579911e-07 3.81e-14 7.11e-15 5.17e-25
17 9.0580247e-21 -2.6449779e-08 1.91e-14 3.55e-15 2.33e-25
18 5.6612645e-22 -6.6124446e-09 5.45e-14 7.11e-15 6.46e-27
[73.11695794600045, 73.11695794603409]
optimal
0.0
поэтому a
и b
равны, что имеет смысл, поскольку я стараюсь минимизировать их расстояние, и ограничения явно выполняются.
Однако моя настоящая проблема намного сложнее, и я получаю:
Itn Primal Obj Dual Obj Prim Inf Upper Inf Dual Inf
92 1.4468496e+06 1.2138985e+06 1.80e+02 2.64e-12 5.17e-02
93 1.4468523e+06 1.2138969e+06 2.23e+02 2.17e-12 1.08e-02
94 1.4468541e+06 1.2138945e+06 2.93e+02 2.31e-12 5.62e-02
* 1.4457132e+06 1.2138598e+06 7.75e+00 7.61e-09 2.76e-02
num_best
1445714.46525
Теперь у меня есть несколько вопросов относительно вывода, которые тесно связаны:
1) Ясно, что это не объективное значение для напечатанного двойного симплекса. Почему это так, если я установил в качестве решателя двойной симплекс ?!
2) Как мне теперь получить доступ к результатам для двойного симплекса? Поскольку объективное значение меньше, меня бы больше интересовали эти результаты.
3) Гарантирует ли статус num_best
, что все ограничения соблюдены, т. Е. Действительно ли решение, но только не гарантировано, что оно будет оптимальным?
4) Primal Obj
и Dual Obj
очень сильно различаются. Есть ли стратегия минимизировать их разницу?
numericalEmphasis
. - person Erwin Kalvelagen   schedule 19.04.2016