问题标签 [operations-research]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - 循环遍历 PuLP 嵌套变量以获取特定约束
我有以下约束:
sum of (between p = 0 to p = 2) of X_sap <= A_sa
我的课程是:
我的树液定义如下:
以下是我创建 X_sap 的方式:
x_vars = lp.LpVariable.dicts("X", sap, lowBound=0, cat='Continuous')
这是我创建区域约束的方式
我正在努力以这种方式生成对输出的约束
我输出的变量是
对于我如何实现这一目标,我们将不胜感激。我不知道如何循环通过我的 x_vars 而不会破坏它
linear-programming - 最小成本的线性规划问题
一家建筑公司有 6 个项目,每个项目都需要$d_i$
工人。公司在项目一开始时没有工人。
每个新工人必须参加安全课程,费用为 300 美元,每位工人还要多 50 美元。如果没有新工人,就没有课程。
解雇工人不花钱,而且工人不能被重新雇用。
假设工人的工资是每个项目 100,请制定一个线性规划问题,以最小化工人成本。
我尝试了什么:
设$x_i$
为 project 的新工人数$i$
。
让我们$y_i$
从以前的项目中剩余的老工人数量直到项目$i$
(所有雇用的工人 - 所有被解雇的工人)
让$z_i$
成为一个指标,使得$z_i =0 \iff x_i>0$
我要解决的功能是:
英石:
我觉得有些不对劲。主要原因是我尝试使用matlab解决这个问题,但失败了。
我做错了什么?我该如何解决这个问题?
optimization - 用于列生成的 Google OR 示例
是否有使用 C++ 中的 google OR 工具的列生成问题(切割库存问题或任何其他问题)的代码示例?
optimization - 如何使用 Pyomo 或 Julia 将 KKT 条件、双重可行性约束添加到原始模型中?
我必须为某些双层问题建模。该方法是通过用它们的 KKT 条件替换它们或用它们的最优条件替换它们来删除第二级问题,例如强对偶性......我希望自动执行此操作,而无需自己计算这些条件并将它们硬编码回原始条件。我有两个主要问题希望得到您的帮助:
- 如何将某些约束的对偶添加到目标函数?
- 有什么方法可以让我做我想做的事,如果没有,我可以从哪里开始编写它们,以便最终获得原始模型并返回具有原始、对偶约束和强对偶或 KKT 条件的模型?我想获得约束并手动形成对偶问题可能是正确的方法。
我非常感谢您提供的任何帮助,无论是在 Julia 还是 Pyomo 中。
optimization - 算法路由的阅读材料建议
我们开始研究工作中的一个问题,该问题有效地归结为以下问题:
假设我有红色人和蓝色人到达商店。红色的人有资格购买产品 A 和 B,蓝色的人有资格购买产品 B 和 C。产品 A、B 和 C 有不同的相关价格(p_A
、p_B
、p_C
),我对每种产品都有不同的库存i_A
(i_B
, i_C
)。
我正在尝试开始研究可以帮助我最佳地决定当一个新的红色或蓝色人出现时,向他们展示什么产品的算法。如果红人和蓝人有资格获得的产品是不同的(即,他们没有资格获得任何相同的产品),那么问题将很简单,但事实上他们都有资格获得产品 B (在这个非常简化的示例中)使设置有点复杂,这意味着我向新人展示产品 B 的可能性应该取决于消费者之前通过商店并被展示过的东西。
我在任何类型的运筹学类型的算法工作方面都没有太多经验。可能这个问题是多项选择背包问题的变体,但我希望从对这种工作更有经验的人那里获得一些关于什么是好的方法的意见。谢谢你的帮助。
python - 用整数规划求解最小化
我被要求解决以下问题:
问题:
你被要求用胶合板修理一座农舍。
你得到了三十张胶合板。(每个尺寸 = 10 英尺 x 10 英尺)
房子需要20 个圆(半径 = 2.5 英尺)和15 个矩形(大小 = 6 英尺 x 4 英尺)
切一个圆要20美元,切一个长方形要15美元。并且有以下三种裁切方式:
这是图片:https ://i.stack.imgur.com/mOomz.png
基本上,
第一种方法:从一张纸上切出 4 个圆圈
第二种方式:从一张纸上剪下 4 个矩形
第三种方式:从 1 张纸上切出 2 个圆环和 1 个矩形
(我将这些设置为 x,y,z: 切割的纸张数量)
您也可以用 45 美元购买 1 个单圆形,用30 美元购买 1 个矩形。
您不能浪费超过 30%的材料。(假设总未使用面积 <= 30%)
这是我解决问题的方法:
x,y,z = 以上述方式切割的张数
目标函数:
M = 80x+60y+55z
约束:
1. 4x+2z<=20
2. 4y+z<=15
3. x+y+z<=30
4. 0.215x+0.04y+0.367z<=0.3(x+y+z)
似乎我得到了所有的零,但我不知道如何设置约束。
我被要求用 ORtools python 解决这个问题。
但是用不正确的方程来做是没有任何意义的。
python - 如何在 python 中从头开始编写 Simplex 方法(以表格/矩阵形式)?
我已经得到了我的方程式和一切。我只是不知道如何迭代,即如何更新 A、b 和 c。我一直在尝试使用矩阵形式。如果有人可以帮助解决这个问题或表格形式,那就太棒了!我的问题很简单: min cx s,t Ax=b 其中这本身包括松弛变量,因此是初始 bfs 的明显选择。