我只需要得到一个多面体的随机顶点。任何人都会做。我现在可以做到这一点的唯一方法是选择一个随机函数(比如 0s)以使用 scipy.optimize.linprog 最大化。但是,这很浪费,因为我真的不在乎我得到哪个顶点。我在文档中看到了一些关于使用回调函数获取求解器内部状态的内容,但我对单纯形算法了解不足,无法理解我需要哪个参数。我如何才能提取在阶段 1 中找到的顶点 scipy,然后中止计算?
使用 scipy 获取多面体的任何顶点
计算科学
线性规划
scipy
2021-12-05 03:23:35
1个回答
如果您使用 0 目标函数,则求解器应在遇到可行解时立即停止(因为该解将是最优解。)如果求解器使用 2 阶段原始单纯形法,它将在第一阶段后立即停止并且解决方案将是多面体的一个顶点。
在实践中,像这样的 LP 可行性问题实际上并不比具有非零目标的优化问题容易得多。您也许可以调整求解器的参数,以便它更快地找到原始可行解决方案,但这取决于您正在使用的求解器的详细信息。
其它你可能感兴趣的问题