cplex - CPLEX 中的热启动 QP 求解器
问题描述
我试图弄清楚如何为 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 输出,但我发现它没有响应我的输入。
解决方案
在底层,Cplex.start.set_start方法调用C Callable Library 中的CPXcopystart 。从它的文档中CPXcopystart
说:
起始信息不适用于障碍优化器,也不适用于混合整数优化器 (MIP)。
因此,在上面的测试程序中,预计开始信息会被忽略。
推荐阅读
- vba - 使用 VBA 突出显示 Microsoft Word 文档中的单词实例,包括文本框
- c++ - C++中文档分类的SVM实现
- typescript - TypeScript 无法在子类方法中推断类型
- docker-compose - Traefik v2.1.4 - 如何创建静态路由并重定向到特定主机和端口
- visual-studio-code - VSCode:是否可以使用相同的参数运行“最后”启动配置?例如,我不想让测试专注于运行它
- python - Python - Pandas - 删除第一次出现的字符和修复字符串之间的内容
- reactive-programming - 使用响应式 Couchbase java 驱动程序进行批处理
- list - 如何在 React Native 中的 FlatList 项上添加 Click 事件?
- visual-studio-code - Jest Puppeteer - 为其设置 Visual Studio 代码
- xml - Xml 下面的 Key 是什么?