CPLEX 中的热启动 QP 求解器
Warm starting QP solver in CPLEX
我正在尝试找出如何热启动 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 输出的一阶固定点,但我发现它没有响应我的输入。
在幕后,C 可调用库中的 Cplex.start.set_start method calls CPXcopystart。从 CPXcopystart
的文档中可以看出:
Starting information is not applicable to the barrier optimizer nor to
the mixed integer optimizer (MIP).
因此,您上面的测试程序中忽略了起始信息是预料之中的。
我正在尝试找出如何热启动 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 输出的一阶固定点,但我发现它没有响应我的输入。
在幕后,C 可调用库中的 Cplex.start.set_start method calls CPXcopystart。从 CPXcopystart
的文档中可以看出:
Starting information is not applicable to the barrier optimizer nor to the mixed integer optimizer (MIP).
因此,您上面的测试程序中忽略了起始信息是预料之中的。