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

python - 使用 Gurobi 在 MIP 中逐小时提取影子价格

我正在尝试为我的 MIP 模型中的特定约束提取影子价格 - 并使用 Gurobi 作为求解器。

当我建立约束时,我使用以下代码 -

# Balance Constraint for hour in hours: model.addConstr((quicksum(p[hour, i] for i in num_gen) + (quicksum(discharge[hour, i] for i in num_gen)) == demand[hour] + quicksum(charge[hour, i] for i in num_gen)), name="balance")

然后,解决了 MIP,并优化了 MIP 的固定版本,我使用以下代码提取需求约束的对偶值。

然而,上面只返回一个值,正如我所期望的那样,应用此约束的每小时都有一个影子价格。

也许这是我的一个误解 - 但如果有人能提供帮助,将不胜感激!

0 投票
0 回答
98 浏览

mathematical-optimization - 如何修改 JuMP 中的变量属性?

我正在使用 Julia+JuMP 和 Gurobi 来解决 MIP。是否可以修改BranchingPriority等变量属性?

到目前为止,我只在文档中找到了修改模型参数的方法。唯一可能的与变量相关的修改是设置下限和上限。

任何帮助将不胜感激。

0 投票
2 回答
2061 浏览

optimization - 投资组合优化中的基数约束

我正在使用 cvxpy 来解决一些简单的投资组合优化问题。我无法理解的唯一约束是非零投资组合持有数量的基数约束。我尝试了两种方法,一种 MIP 方法和一种传统的凸方法。

这是一个有效的传统示例的一些虚拟代码。

我有想法使用 sum_smallest 和 sum_largest ( cvxpy manual ) 我的想法是将最小的 nk 个条目限制为 0 并让我的目标范围 k 总和为 1,我知道我不能按顺序改变不等式的方向保持凸面,但也许任何人都知道一种在保持简单的同时约束问题的聪明方法。

我的第二个想法是把它变成一个混合整数问题,s.th沿着线

查看我的二进制向量,它似乎在做正确的事情,但 sum_entries 约束不起作用,查看二进制向量值我注意到 0 不是 0 它非常小,例如 xxe^-20 我认为这会搞砸向上。如果这是正确的方法,任何人都可以给我任何指导吗?如果有帮助,我可以使用标准求解器以及 Mosek。我更喜欢非 MIP 实现,因为我知道这是一个组合问题,对于更大的问题会变得非常慢。最终,我想限制目标持股的确切数量或范围,例如 20-30。

cvxpy 中围绕 MIP 的文档也很短。谢谢

0 投票
3 回答
6007 浏览

linear-programming - LP/MIP 和 CP 的区别

约束规划(CP)和线性规划(LP)或混合整数规划(MIP)有什么区别?我知道 LP 和 MIP 是什么,但不了解与 CP 的区别 - 还是 CP 与 MIP 和 LP 相同?我对此感到困惑...

0 投票
0 回答
281 浏览

r - R:GA包离散输入参数

要进行哪些更改以便将输入参数视为离散/整数值?

在适应度函数中进行高惩罚不是正确的选择,因为它成为迭代过程的一部分。跳过非整数值也是迭代过程的一部分。需要在以下方面进行更改:

ga(type = c("binary", "real-valued", "permutation"), min, max, nBits, fitness, ..., )

使函数只接受整数/离散参数。我有四个离散参数。

同样的问题会出现MINLP问题。

我想不通:(谢谢..

0 投票
0 回答
306 浏览

optimization - 使用 bonmin 为 MINLP 从 neos 中的失败运行中获取可变结果

我正在使用 neos-server 来解决高度受限的 MINLP,使用 bonmin 算法。使用分支定界法或混合法求解。输入代码是 AMPL

我想知道是否可以为失败的运行输出可变结果?

我已经尝试了这里列出的几乎所有 bonmin 选项

https://projects.coin-or.org/Bonmin/browser/stable/1.7/Bonmin/doc/BONMIN_UsersManual.pdf?format=raw

我对优化求解器知之甚少,无法真正理解所有这些选项。

我尝试了不同的 AMPL 选项,但这些选项只有在我成功运行时才有效。

最终,我想用最近失败运行的值输出模型中的所有变量。

这是我的命令文件

以下是失败运行的标头输出。这为我的所有变量提供了输出,但它们都是 0

0 投票
2 回答
580 浏览

mathematical-optimization - 确定整数程序是否不可行

假设我们有一个带有几千个约束的整数或混合整数程序。

如何判断这个IP/MIP是否可行?

0 投票
1 回答
1002 浏览

nonlinear-optimization - Pyomo 和条件目标函数

是否可以(如果可以)使用具有条件表达式的目标函数?

更改文档中的示例,我想要如下表达式:

可以像这样直接建模还是我必须考虑某种转换(如果是这样的话,这会是什么样子)?

只需执行上述操作,就会出现如下错误消息:

我认为这是因为 Pyomo 认为我想获得一个值,而不是带有变量的表达式。

0 投票
1 回答
252 浏览

matlab - CPLEX API for MATLAB 中的分段线性约束

我是 CPLEX 和优化的(几乎)初学者。我正在尝试使用 CPLEX (12.7.1) 的新增功能在 Matlab 中设置优化问题,该功能可以定义分段线性 (PWL) 约束。但是,我不清楚如何在 Matlab 中做到这一点。这方面的文档非常稀少。IBM只有一个例子(transport.m),它将分段线性约束定义为线性等式和类型2的SOS的组合。但是,这并不是真正使用新添加的特性来直接指定分段线性函数。随着变量数量和分段约束的增加,matlab 中的程序会变得相当繁琐。你知道在Matlab中是否有一种不同的表达方式?

谢谢

0 投票
1 回答
338 浏览

r - ompr 目标:最小化行和的方差

我正在使用ompr带有 的包r,但我无法弄清楚如何将目标函数更改为我的需要。第一个模型正在运行,但目标并不是我真正需要的。

我需要最小化 x 的行和的方差。有谁知道该怎么做?

谢谢!