问题标签 [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 回答
686 浏览

algorithm - 加权箱包装/背包优化

我正在努力对我正在处理的问题进行分类,这意味着我无法弄清楚是否有任何已建立的启发式解决方案。你认为这是什么类型的问题,你会建议我如何解决它?

我有一系列桶 A、B、C、D。每个桶都可以包含一定数量的项目。桶的总大小与人口的大小相匹配。总体中的每个项目都有 A、B、C、D 的分数。

我想将项目分类到桶中,以使匹配桶的总分最大化;即桶A中所有项目的A分数,桶B中所有项目的B分数等等。因此,即使项目的 A 分数较高,理想情况下也有可能在桶 B 中,因为可能有很多项目具有高 A 分数,而很少有高 B 分数的项目。

0 投票
0 回答
74 浏览

r - R中参数估计的混合整数规划

我正在寻找一种使用 R 为 linux 程序找到最佳参数的好方法。

每次运行大约需要 20 秒。

你输入一个整数作为输入,然后得到一个十进制数。我的目标是让这个输出数字尽可能接近 4.5,尽管有时这是不可能的。我也想保持输入尽可能低可能的。输入可以在 30 到 10,000 之间变化。

我已经对该主题进行了一些研究,并尝试了玩具数据集。但我不确定哪个是最好的方法。我已经尝试了一些简单的 if/for 循环,详尽地遍历所有输入(或者足够直到我合理接近)。但这似乎很粗糙。我只是逐渐增加/减少输入并测量对输出的影响。这确实告诉我输入和输出之间的关系不是线性的。它也比最初看起来更复杂,有很多峰值和低谷。

lpsolve 和 ompr 包似乎是正确的,但我不确定如何使用它们,因为所涉及的理论远远超出了我的范围!

0 投票
0 回答
373 浏览

python - Gurobi Python:展示 MILP 的最佳解决方案

我不仅要获得 MIP 的最佳解决方案,还要获得 5 个最佳解决方案。我知道,如何让 Gurobi 保存 5 个最佳解决方案,但我不知道如何像使用最佳解决方案(见下文)一样访问它们,特别是 2 个决策变量的值x[i,j]y[j]

提前致谢!

0 投票
1 回答
116 浏览

pyomo - 如何从 Coin-OR 框架获取可行性泵的迭代和运行时间

我编写了一个算法,可以找到混合整数凸优化问题的可行点。现在我希望将它与MINLPlib 库中的测试平台上的混合整数非线性程序的可行性泵进行比较。

我可以通过 Pyomo 从Coin OR项目访问 BONMIN 求解器,该项目还实施了可行性泵。是此求解器的可能选项列表。

我的问题是

  1. 以下选项对于测试(普通香草)可行性泵是否正确?

    如果没有,任何提示如何正确地做到这一点表示赞赏。

  2. 如何访问可行性泵的迭代次数(即泵送周期)?我可以在打印输出中看到迭代信息,但如果它存储在某个变量中,这将非常有帮助。
0 投票
0 回答
162 浏览

python - 为 MILP 实施增量优化

我正在尝试实现增量优化,在其中我可以为 MILP 模型提供新的约束/变量,并随着时间的推移删除一些其他约束/变量。更不用说已解决的变量只要不被删除就应该被视为固定值。

我的问题是是否有标准的方法/工具可以做到这一点?到目前为止我想到的是使用 python 操作 GAMS sqlite 数据库,有更好的主意吗?可以使用其他环境。

我很感激任何线索来实现这样的事情。谢谢

0 投票
1 回答
108 浏览

matlab - 如何将整数切割添加到 MILP 约束以找到替代的最佳解决方案?

我正在用 MATLAB 中的二进制变量解决 MILP 优化问题,我想通过排除以前的解决方案来找到多个最佳解决方案。因此,我知道我必须在我的模型中包含以下整数切割作为约束:

总和 {y_j : y'_j = 1} + 总和 {(1-y_j) : y'_j = 0} <= M - 1

其中,y_j 是我的二进制变量向量。M 是二进制变量的总数(j 循环从 1 到 M),y'_j 是我的二进制变量在先前解决方案中的值。

在 MILP 框架中,通过以下形式的矩阵 A 包含约束:A* x <= b,其中 x 是二进制变量的向量,b 是已知系数的 RHS。

然后,我的问题是我无法将上述约束“翻译”成这种 MILP 格式。

非常感谢您的帮助,

乔治

0 投票
0 回答
164 浏览

python-3.x - 通过 pyomo 为 Baron 求解器设置优先级分支

我在 Python 中使用 Pyomo 和 MINLP 求解器“BARON”。我已经实现了让它运行并通过 pyomo 将选项(例如 maxTime)传递给求解器。

在男爵手册中,他们解释了在 pyomo 中设置分支选项的选项:“分支优先级(可选):可以使用关键字 BRANCHING PRIORITIES 提供分支优先级。这些参数的默认值设置为 1。变量违规乘以在选择分支变量之前用户提供的优先级。示例分支优先级部分如下: BRANCHING_PRIORITIES{ x3: 10; x5: 0; }"

我如何通过 pyomo 实现它,因为我无法设置它solver.option[x1]=1

Pyomo 在线文档 5.1.1 指的是后缀和与 AMPL 的接口,用于设置一般分支的优先级。我还没有理解后缀,如果我的代码中包含哪些行以设置某个变量的优先级,我将不胜感激。

提前致谢。

0 投票
0 回答
626 浏览

python - Python 混合整数优化

我是混合整数优化问题的新手。目前,我正在使用具有默认 CBC 求解器的纸浆 python 接口来解决问题。问题是提高癌症诊所模型中的资源利用率,下面是具有目标函数和约束的代码。当我使用 prob.solve() 时,我有 3 个不同的问题: 1. 我得到 BeginTreatment 变量的值 1.0 但是我没有得到 ContinueTreatment 变量的值 1.0?2. 基于主席连续性约束,不应将编号超过 29 的插槽分配给 8 的 pat_type,因为最多只有 40 个插槽可用。但我还是看到了吗?(不仅适用于 8 的 pat_type,其他也适用) 3. 我应该尝试不同的求解器而不是纸浆的默认 CBC 求解器吗?如果是,我该怎么做?

0 投票
0 回答
617 浏览

python-3.x - 求解变量取二进制值的线性方程组

我正在尝试求解变量取二进制值的线性方程组

我的矩阵 A 大约有 400 列和 3000 行。由于篇幅限制,只发布了几列。我的输出向量始终为 1。我所有的变量只能采用二进制值 - 0 或 1

0 投票
1 回答
855 浏览

linear-programming - 使用纸浆在混合整数线性规划中公式化函数的平方

我有一个线性方程 Ax = b。我正在尝试使用 Python 中的纸浆来最小化 (Ax-b)^2。A 的尺寸为 (1000, 500),b 的尺寸为 (1000,)。

到目前为止,我已经尝试过:

我如何将正方形用于函数 mse。如果我尝试:

我收到此错误:

* ** 或 pow() 不支持的操作数类型:'LpAffineExpression' 和 'int'*