Горячий стартовый QP решатель в CPLEX - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь выяснить, как запустить решатель квадратичного программирования для CPLEX.Меня особенно интересует теплый запуск решателя QP для невыпуклых квадратичных программ, заканчивающихся в стационарных точках первого порядка.

Я считаю, что функция start () должна делать это, но я не могувыяснить, как заставить решатель использовать начальные данные.

def setproblemdata(p):
    p.objective.set_sense(p.objective.sense.minimize)

    target = p.parameters.optimalitytarget.values
    p.parameters.optimalitytarget.set(target.first_order)

    p.linear_constraints.add(rhs=[20.0, 30.0], senses="LL")

    obj = [1.0, 2.0, 3.0]
    ub = [40.0, cplex.infinity, cplex.infinity]
    cols = [[[0, 1], [-1.0, 1.0]],
            [[0, 1], [1.0, -3.0]],
            [[0, 1], [1.0, 1.0]]]

    p.variables.add(obj=obj, ub=ub, columns=cols,
                names=["one", "two", "three"])

    qmat = [[[0, 1, 2], [0.0, -1.0, 0.0]],
        [[0, 1, 2], [-1.0, 2.0, -1.0]],
        [[0, 1, 2], [0.0, -1.0, 2.0]]]

    p.objective.set_quadratic(qmat)

    p.parameters.advance.set(2)
    s = p.start.status


def qpex1():
    p = cplex.Cplex()
    setproblemdata(p)
    p.start.set_start([], [], [40.000000, 24.333333, 10.666667], [], [], [])
    p.solve()

Моя начальная точка находится на выходах CPLEX стационарной точки первого порядка, но я обнаружил, что она не отвечает на мой ввод.

1 Ответ

0 голосов
/ 10 октября 2018

Под капотом метод Cplex.start.set_start вызывает CPXcopystart в C Callable Library.Из документации CPXcopystart говорится:

Стартовая информация не применима ни к оптимизатору барьеров, ни к оптимизатору смешанных целых чисел (MIP).

Итак, этоожидается, что начальная информация игнорируется в вашей тестовой программе выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...