[英]How to find possible values bounds of a variable in linear programming with Python?
我有一个由一些变量和线性约束定义的线性问题,我想知道每个变量的可能值区间。
例如,对于变量a
、 b
和c
以及约束a>b
、 b>c
和a+b+c=100
,我们有:
a in [33.33-100] b in [0-50] c in [0-33.33]
目前,我的解决方案是使用Pulp的线性规划求解器,并将每个变量设置为优化 function 以最大化,获得上限,然后最小化以获得其下限。
这使我对每个变量重复求解步骤两次,这可能不是最佳的。
有人知道专门用于查找线性规划变量可能的解区间的工具吗?
这是一个非常常见的话题,通常称为bounds-tightening ,在以下方面非常重要:
您描述的算法通常称为基于优化的边界紧缩算法,它并没有那么糟糕。 您的问题是,纸浆不允许您采取更底层的行动并使用热启动来不需要每次运行中的全部迭代。
Gleixner, Ambros M., et al. "Three enhancements for optimization-based bound tightening." Journal of Global Optimization 67.4 (2017): 731-757.
例如开始于:
基于优化的边界紧缩 (OBBT) 是减少非凸混合整数非线性程序 (MINLP) 变量域的最有效程序之一。 同时,它是最昂贵的绑定收紧程序之一,因为它解决了辅助线性程序 (LP) — 多达两倍的变量数量。 本文的主要目标是讨论有效实现 OBBT 的算法技术。
有非 LP 技术(例如区间算术)替代方案,例如基于可行性的边界收紧。
参见例如:
Belotti, Pietro, et al. "Feasibility-based bounds tightening via fixed points." International Conference on Combinatorial Optimization and Applications. Springer, Berlin, Heidelberg, 2010.
您现在知道一些要搜索的关键字。 也许以下是一个好的开始(虽然没有读过):
Puranik, Yash, and Nikolaos V. Sahinidis. "Domain reduction techniques for global NLP and MINLP optimization." Constraints 22.3 (2017): 338-376.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.