问题标签 [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 投票
2 回答
2660 浏览

python - 使用逻辑与运算的混合整数编程 IF-THEN

我有以下约束,我试图用 Python 的 PuLP 模块在混合整数编程中建模:

给定线性规划变量:x1,x2,y1,y2其中 x1, x2, y1, y2 最终求解为整数值

我不确定如何处理Logical AND. IF condition如果AND不存在,我知道我必须使用 Big-M 符号。

0 投票
1 回答
197 浏览

mathematical-optimization - 如何编写一个简单的 MPS 文件提交到 NEOS 服务器

我正在尝试找到一个对我的问题足够快的开源 lp 求解器。我正在尝试构建一个 MPS 文件,以便将其提交到 NEOS 服务器并比较不同求解器的性能。

在最困难的情况下,我的问题涉及大约 150 个整数变量,但我从一个简单的案例开始,以帮助我弄清楚 MPS 文件格式是如何工作的。

这就是问题:

我写了以下 MPS 文件:

使用 NEOS ( https://neos-server.org/neos/solvers/index.html ) 提供的线性求解器,只有 Gurobi 可以解决它。其他人发现问题是不可行的(事实并非如此)。

我很确定这是我的 MPS 文件的问题,但我无法弄清楚它是什么。我究竟做错了什么?

0 投票
1 回答
177 浏览

python - Linprog Python - 实现二进制数

我有多个约束,它们可以直接进入 linprog,但我有两个约束,其中包含二进制组件。以下是一个:

1 或 0 是 Nabc

Mabc - 11(1) <= 0 <-- M111 - 11(1) 或 Mabc - 11(0) <= 0 <-- M111 - 11(0)

abc 是下标

我如何在 linprog 模块中实现它,或者可能使它不需要二进制文件。

这是我可以在 python 中实现的,因为没有与之关联的二进制数:

单克隆抗体 <= 40

0 投票
1 回答
154 浏览

python - 混合整数规划循环

我有一个带有 25 个约束和三个下标变量的混合整数程序。有两种类型的变量,一种是整数,一种是二进制。整数变量称为 Axyz,二进制变量称为 Bxyz。这是我的配方:

目标 A111 + A112 + A113 + A211 + A212 + A213 + ... A252525 <-- 最后一个是问题所在。我不能这样说。所以我需要将它们全部更改为一个下标的三位数字下标。我的意思是A111变成A001001001,A252525变成A025025025,这样编译器就可以读取了。

约束:第一个约束 A111 + 90 B111 <= 0 A112 + 90 B112 <= 0
与优化函数相同的问题。以及如何使这个约束输出。

第二个约束:A111 + A112 + A113 + A211 + A212 + A213 + ... A252525 >= 1000 使其输出。如何编码?

到目前为止,我唯一的代码是针对目标的,并且仅部分由于 A252525 问题而起作用。这里是:

如果你运行它,你会看到它在 A119 之后因为范围而开始重复。要了解我想要什么,您必须运行代码。

我希望输出看起来完全像下面这样。显然那些......是我想要的。输出实际上将包含介于两者之间的所有内容。


更新:

这是我想要的确切输出:

x 代表星期几(我们假设这 3 天)
y 代表星期(我们假设 2 周)
z 代表推销员(我们假设 10 个推销员)

这就像在第 1 周的第 1 天说推销员 1 正在工作,依此类推。在我想要的输出中,如前所述,有三个下标;xyz。所以在我想要的输出中,每个下标分别代表前两个、第二个和第三个两个数字。例如:对于第一项,x 是 01,y 是 01,z 也是 01,对于最后一项,x 是 03,y 是 02,z 是 10。我忘记提到的是我希望用户输入 x、y 和 z 的值。因为我希望用户输入 x=3,y=2,并且 z=10(这代表最后一个术语)。我假设会是这样。“y” 02 只有在“y”的所有 01 都完成后才会开始,即 A030110。在示例输出中查看此内容。

然后对于第一组约束,它需要像:

这将持续到目标中的每一个术语。

不要担心第二组约束。而且你不需要知道约束是什么意思。在这里你不需要知道它是什么意思。

0 投票
1 回答
1312 浏览

julia - 如何使用 JuMP 请求 MIP 的次优解决方案

我有一个混合整数编程问题。我可以使用 JuMP 找到最佳解决方案。但是我怎样才能找到第二好的解决方案呢?或三等奖等。

这可能是另一个同样最优的解决方案,或者它可能是一个更差的解决方案,或者它可能是:Infeasible- 可能没有大多数解决方案。

我知道对于类似 TSP 的问题,我可以通过逐步删除最佳路径上的链接来找到其他解决方案(即将某些城市之间的距离设置为无限)。对于调度类型的问题,我可以类似地逐步设置在最佳路径中使用的时隙的可用性被禁止。

但是有没有一种通用的方法来做到这一点,而无需编写自己的问题特定方法来禁止此解决方案?

0 投票
3 回答
100 浏览

python - Python中的混合整数程序

我有一个需要在 Python 中输出的 MIP 问题。到目前为止,请参阅以下尝试。我只需要一些可以为我指明正确方向的建议。

当前输出:

我的代码没有产生我想要的。这是我希望它产生的输出。

任何帮助,将不胜感激。我需要用来简化编码的任何模块也会有所帮助。我有更多的代码行,其中这些数字的顺序有不同的组合,但如果我能获得体面的知识,那么我应该能够做到。

我还希望能够将此输出打印到文本文件中。最简单的方法是什么?有什么建议么?谢谢

0 投票
1 回答
586 浏览

java - 如何在 Gurobi 中编写以下目标函数?

下面是目标函数:

在此处输入图像描述

我有以下 Java 代码:

更新代码

0 投票
0 回答
270 浏览

optimization - CPLEX:可能的最低差距不一定是 0.00%?

这是这个问题的后续问题:解释 CPLEX 中的 GAP

我在优化(最小)问题开始时使用了以下表达式:

这是引擎日志的一部分:

如您所见,似乎找到了“最佳”解决方案,但仍有 1.60% 的差距。

如何解释这个?我的想法是,我找到了最佳整数解决方案(没有一个更好的整数解决方案),但非整数值实现了更好的结果,降低了 1.60%(最小化问题)。

如果我的想法是正确的,那么这意味着只有当松弛解(通常是非整数)的最优值恰好是整数值时,才能实现 0.00% 的差距。

如果有人可以在这里帮助我,我将不胜感激。提前致谢。

0 投票
1 回答
361 浏览

constraints - How to read parentheses or brackets using CPLEX

I am trying to read a .lp file using CPLEX, and it is giving me an error 1615, which is not being able to read "(" or even "[". I am not happy with it because what I have needs to be read must have parentheses in it. Here is what I have:

[num1 + num2 + num3 + num4 + num5] * 1/12

First of all, I don't know how CPLEX would take in the multiplication sign. So, instead I have:

[num1 + num2 + num3 + num4 + num5] 1/12

And, then it may not be able to read fractions or the division sign. I am not even sure how to write this, so that it reads it. I can't solve the problem unless CPLEX reads the file successfully.

Now, similarly I am also using LPsolve, and it also cannot read parentheses, fractions, multiplication sign, and a division sign. Both of these are currently useless for me. In LPsolve, I just have to copy and paste the content into the window, and run it.

If any of you have an alternate way to write the statement I have above or a way for either CPLEX or LPsolve to read it, then that would be really helpful.

0 投票
2 回答
654 浏览

linear-programming - 具有最小和最大固定成本的线性规划

在以下优化问题中,我需要您的帮助。我有一个最大化混合整数线性规划问题。我想考虑最低和最高固定费用。

我是这样弄的。。

但是,这变成了不可行的解决方案。请你帮我优化这样的问题。