modeling - 我将如何构建与图对应的整数优化模型
解决方案
伙计,我同意其他人的观点,即你应该比那幅画得更具体一点;)。特别是,您既没有指定任何目标/目标方向,也没有给出任何上下文,那么这个图应该是与整数变量相关的,除了可以通过 MIP 技术建模的析取可行集的存在。看起来你的问题是你概念化的形式化。但是,如果您只是懒惰并且只对对析取区域建模感兴趣,您应该研究析取编程技术,例如“big-M”(注意:big-M 重新表述可能会出现问题)。如果你能得到一个(相当容易),你应该瞄准一些凸包重构。
回到您的图片,很明显您在两个实际维度(假设在 R^2 中)存在问题,其中限制可行集的约束是线性的(构成可行多边形的线)。
所以你知道你有两个维度并且需要两个真正的连续变量,比如说x[1]
和x[2]
,来制定你的每个线性约束(a[i,1]*x[1]+a[i,2]<=rhs[i]
对于一些索引 i 对应于你的图表中的行数)。此外,您的变量似乎被限制在第一个字节上,因此x[1]>=0
应该x[2]>=0
保持不变。现在,要添加析取,您需要一些仅在某个条件为真时才成立的约束。因此,您可以添加两个二元决策变量,比如说y[1],y[2]
和一个附加约束y[1]+y[2]=1
,以表明只能同时激活一组约束。您应该能够在 big-M 的帮助下通过重新制定约束来实现这一点,如下所示:
如果你用你的线从上面绑定东西:
a[i,1]*x[1]+a[i,2]-rhs[i]<=M*(1-y[1])
如果我对应一个多边形,
a[i,1]*x[1]+a[i,2]-rhs[i]<=M*(1-y[2])
如果我对应另一个多边形,如果你的线从下面
绑定东西:如果我对应-M*(1-y[1])<=-a[i,1]*x[1]-a[i,2]+rhs[i]
一个多边形,
-M*(1-y[1])<=-a[i,1]*x[1]-a[i,2]+rhs[i]
如果我对应另一个多边形. 重要的是 M 足够大,但不能太大而导致数值问题。
话虽如此,我绝不是这些析取编程技术的专家,所以请随意插话,添加更正或使事情更清楚。
此外,一个更复杂的问题通常会产生更详细和令人满意的答案;)如果您努力制作一个真正的小示例问题,您可能会得到一个完整的问题表述,甚至是一段可执行的代码。时间。
推荐阅读
- java - 如何从“listItemArray”实现“lstItemXY”?
- python - 在 Kivy 中执行按钮功能而不触摸它?
- firebase - Firestore 安全规则:对请求使用 hasOnly 来检查是否仅更新了特定字段
- c# - C# ArgumentException Image.FromStream 在一个套接字上具有多个发送
- attributeerror - bbc-microbit:micropython AttributeError:“str”对象没有属性“partition”
- c - 什么将空字符串复制到另一个字符串?
- javascript - 量角器错误:预期 null 等于“某个值”
- dart - runApp 使用有状态小部件引发异常
- c - 有没有一种快速的方法来消除 Visual Studio 中 C 程序中未使用的类型?
- apache-spark - Spark如何计算字符串列的均值和标准差