问题标签 [mixed-integer-programming]

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.

0 投票
0 回答
670 浏览

optimization - 为优化创建条件目标函数

上下文: xi 和 xj 对应于出发和到达时间。fij 给了我们对应于 ij 组合的等待时间。如果在抵达之前出发,我们会在差价上增加 1 天。目标是最小化与 ij 对应的等待时间和负载的总和。

是否可以将此函数建模为线性程序。

0 投票
0 回答
808 浏览

mathematical-optimization - If then else 约束 - 整数线性规划 - Gurobi

我想通过 Python API 使用 Gurobi 在一组约束中表达if then else语句,其中 B 和 A 是二元决策变量。

这是我坚持的声明:

如果(B[r,u,v,x,y])那么A[r,u,x] 或 A[r,v,y]

否则 ,当 A[r,u,x] =1 和 A[r,v,x] 时,设置 B[r,u,v,x,y] == 0

我知道如何将if then的第一部分表达为:

B[r,u,v,x,y] >= A[r,u,x]

B[r,u,v,x,y] >= A[r,v,u]

但不确定如何制定约束:当 B[r,u,v,x,y] 为 0 如果 A[r,u,x] 和 A[r,v,y] 在 else 中设置为 1部分。

谢谢

0 投票
1 回答
755 浏览

constraints - MIP/LP - 建模“如果 b=1 则 x=y”约束

我有一个混合整数规划 (MIP) 问题,目前在 Python 的 PuLP 库中建模。然而,我的问题非常笼统,语法在这里不起作用。

我想为我的模型添加一个约束,如下所示:

该变量b是取值为 0 或 1 的二进制变量xy是表示当前库存水平的变量。x作为一个连续变量,y作为一个整数变量。

我知道约束只能以以下格式建模:

我希望有一些解决方法可以对上述if b then x equals y约束进行建模。

到目前为止,这是我的方法:

对于 2 个二进制变量 x 和 y,以下情况成立:

我猜这个解决方案涉及一个大的 M 常数,甚至可能是更多的辅助变量。

一点背景:我想模拟一个库存问题,具有连续的库存水平。然而,订单决定应该只能是整数。因此,我需要用浮点数对库存水平进行建模。在顺序点 (b==1) 但是整数。

我希望有人可以在这里提供帮助,即使这是理论上的,而不是直接与编码相关的。对可能有帮助的进一步资源的提示也受到高度赞赏。

0 投票
1 回答
1253 浏览

linear-programming - 线性规划:非重叠约束?

我想在线性程序(或必要时的 MIP)中编写一个非重叠约束(即 2 个矩形不重叠)。我知道如何在约束编程中做到这一点:

对于对象 i 和 j:

x[i]+dx[i]<=x[j] 或 y[i]+dy[i]<=y[j] 或 x[j]+dx[j]<=x[i] 或 y[ j]+dy[j]<=y[i] 其中 x 和 y 是包含对象坐标的数组,dx 和 dy 是对象的维度。

知道在 LP/MIP 中执行此操作的最佳方法吗?谢谢!

0 投票
0 回答
1668 浏览

python - 切割平面法:使用python

我想在 python 中使用内置改进的单纯形方法实现切割平面方法,然后在其上应用切割平面方法(使用 scipy.linprog 或纸浆来实现单纯形方法以获得可行的解决方案)

问题是需要显示所有方程和画面的单纯形解决方案,以便我可以解决切割平面方法的额外约束。但是,Linprog 只为我提供了 x 和松弛变量的最佳值的解决方案,它没有给我整个方程组(画面),我可以在这些方程组上选择一个非整数方程,然后应用切割。有没有一种方法可以让我在 Python 中使用内置的单纯形法,然后自己实现切割平面?

(我不想在纸浆中实现整数约束以获得整数解,我想自己在单纯形表的顶部实现切割平面)。

非常感谢您的帮助!

0 投票
2 回答
1356 浏览

python - 和/或约束的混合整数线性规划

我希望使用 PuLP 来满足一组约束,但我不确定如何设置变量来做到这一点。

例如,我将如何为以下约束设置变量:

((x_1 < x_2) AND (x_1 < x_3)) OR ((x_1 > x_2) AND (x_1 > x_3))

变量 x_1 要么小于要么大于 x_2 和 x_3。

任何帮助,将不胜感激。谢谢!

0 投票
0 回答
323 浏览

python-3.x - 第一次在 Python 中使用 Scipy.optimize.linprog

你好,

我第一次使用 Scipy.optimize.linprog。

我的问题是这样的:

我不知道如何使用代码,但这些是我要优化的变量:

我需要有 8 名球员,总薪水最高为 50,000。它应该由 y_pred 优化。

结果将是 y_pred 得分最高且保持在 50,000 以下的 8 名玩家。

我可以使用以下代码导入 linprog:

我试过这个,但是,我再次不熟悉代码:

我收到以下错误:

更新:

找到了这段代码,它与我正在尝试做的事情完美配合(在 DraftKings 阵容中获得 8 名最佳球员):

0 投票
1 回答
503 浏览

python - MINLP中的Python外部约束函数

是否可以在 Python 的混合整数非线性编程库中添加一个外部自定义函数作为动态约束?我正在使用布尔变量和 Numpy 矩阵(大小 mxn),我想最小化请求的总值的总和(例如 tot_vals = 2,3......n)。因此,我想添加一些“空间”约束,我创建了函数(基于布尔索引)并尝试在我的优化过程中实现它们。在 CVXPY 中,它失败了,因为我只能添加 CVXPY 的格式化约束(据我所知),PULP 失败,因为它仅适用于 LP 问题,也许可以选择 Pyomo、OpenOpt 或 PySCIPopt?

预先感谢您的帮助

0 投票
1 回答
782 浏览

python - 使用 Python Pulp 在约束中使用 mod 函数

我正在写一个 LpProblem,我需要创建一个约束,其中一些变量的总和是 100 的倍数... 100、200、300...

我正在尝试使用 mod()、round() 和 int() 的下一个表达式,但没有一个有效,因为它们不支持 LpAffineExpression。

probl += lpSum([vars[h] for h in varSKU if h[2] == b]) % 100 == 0

probl += lpSum([vars[h] for h in varSKU if h[2] == b]) / 100 == int(lpSum([vars[h] for h in varSKU if h[2] == b] ) / 100)

probl += lpSum([vars[h] for h in varSKU if h[2] == b]) / 100 == round(lpSum([vars[h] for h in varSKU if h[2] == b] ) / 100)

你能给我一些写这个约束的想法吗?

谢谢!

0 投票
0 回答
486 浏览

if-statement - 整数线性规划中的 If-then 约束

我有一个 30*40 的矩阵。假设矩阵中的组件用“P”指定,每个“P”的行和列的相关编号由“X”和“Y”相应地指定。我有一个模型,输出应该为我们提供 P、X 和 Y。如何定义将 P 与其确切的 X 和 Y 连接起来的约束(用于求解单纯形)?例如,我想说:

如果 X=1 且 Y=1 则 P= 0.1

如果 X=1 且 Y=2 则 P= 0.5

如果 X=1 且 Y=3 则 P= 0.8 依此类推。

我不希望模型返回与其在矩阵中的位置不匹配的 P。我怎样才能做到这一点? 这是目标函数