我有一些变量和线性约束定义的线性问题,我想知道每个变量的可能值间隔。
例如,对于变量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的线性编程求解器,并将每个变量设置为优化函数,以使其最大化,具有上限,然后最小化以具有其下限。
这使我每个变量重复求解步骤两次,这可能不是最佳选择。
有人知道专门用于查找线性编程变量可能的求解区间的工具吗?
这是一个非常常见的主题,通常称为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.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句