scipy - 有没有办法初始化 scipy.optimize.linprog 的起点?
问题描述
我有一系列线性程序要解决。每个实例仅与前一个实例不同,A、边界和成本略有不同。直观地说,以前问题的解决方案应该会有所帮助。我该如何实施呢?
scipy.optimize.linprog有一个选项x0
x0:一维数组,可选
自变量的起始值,将由优化算法细化。对于修改后的单纯形法,这些必须对应于一个基本的可行解。
这似乎可以做到这一点,但如果我只是初始化先前优化的结果()似乎不起作用res.x
。它失败并出现以下错误:
6 : Guess x0 cannot be converted to a basic feasible solution
解决方案
该错误基本上意味着res.x
您刚刚解决的问题不满足您在传递res.x
as时尝试解决的问题的约束x0
。
这是为什么?线性规划问题的解决方案总是在可行集的一个顶点处,基本上在您的约束所允许的边界上。如果您的下一个问题与您解决的问题略有不同,则很可能上一个问题的解决方案不满足新问题的约束——它在边界上,问题的微小变化使边界移动了位并使上一点在外面。在不了解优化问题的细节的情况下,很难在这里推荐一个明智的策略。例如,如果您知道点 (0,...,0) 总是可行的,您可以缩小所有坐标,res.x
直到进入可行集。
已经有一段时间了,所以我不确定,但是您可以尝试一下,因为在可行集之外method='interior-point'
可能会更宽容。x0
否则谷歌“如何找到线性规划问题的可行解决方案”
推荐阅读
- azure - 如何允许匿名和经过身份验证的访问 Azure Web App
- android - 如何在 Flutter 应用程序中断开与多个连接的 ble 设备的连接?
- mysql - 获取按组分隔的列的平均值
- javascript - 我无法使用承诺按时间延迟升序获取数字来控制台登录
- vue.js - 如何删除html标签
- python - 如果缺失值高于阈值,则使程序停止
- sqlite - 查询数据库,SQlite,无法打开数据库
- svn - 如何恢复到 svn 中对本地 repo 所做的更改?
- javascript - Angular + HTML - 如何打开下载文件资源管理器窗口而不是自动下载?
- javascript - TypeScript - 你如何链接访问可选的嵌套类型属性?