问题标签 [ompr]

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 回答
30 浏览

r - 如何解决 ompr 包 R 中的“未找到索引错误”?

我正在使用 ompr 包来开发 BIN PACKING 问题,如以下链接所示:

https://developers.google.com/optimization/bin/bin_packing

这是我运行的代码:

0 投票
3 回答
284 浏览

r - MIP (ompr) 模型在 R 中花费太多时间来解决

我正在尝试解决 R 中的容量设施位置问题。示例数据:

具有成本函数的模型:

此时,正在对结果进行计算。结果

有什么办法可以减少计算时间?如果我理解正确,那么 0.4% 是当前模型与预期结果之间的差异。即使差异远大于此,我也会很高兴,我可以获得合适的模型。有什么办法可以设置吗?就像 5-6% 的差异就足够了。

0 投票
4 回答
191 浏览

r - 有没有办法在 R 优化器中定义复杂的目标函数?

在 R 中,我正在尝试优化以下内容:选择使总和超过某个值的列数最大化的行,该值因列而异+行选择的其他一些基本约束。

R中是否有任何东西可以让您将逻辑合并到目标函数中?即最大化 countif ( sum(value column) > target value for column ) 超过 ~10k 列选择 5 行 ~ 500 行选择。

简单示例:抓取下面 4 行的组合,其 col 总和比任何其他 4 行组合更频繁地超过目标。

编辑 + 更新:我使用 ompr、ROI 和一些大 M 逻辑实现了以下内容。

该模型适用于小问题,包括那些不存在超过每列目标的解决方案的问题。

但是,当我将列数更改为仅 150 列时,上述返回不可行。鉴于我在较小的示例中测试了各种场景,我的直觉是我的模型定义是好的......

关于为什么这是不可行的任何建议?或者也许是定义我的模型的更优化方式?

0 投票
1 回答
50 浏览

r - 在 R 中使用 ompr 包创建 MIP 问题时出错

我目前正在使用 R 中的 ompr 和 roi 包来解决 IP 类型问题。我已经设法解决了一个简单的版本,但是,我现在正在尝试扩展问题,我只想在 1 个背包中包含一个项目(不要让它多次出现在背包中)。下面是我正在使用的示例数据集(称为 KP):

项目编号 物品种类 价值 重量
1 一个 114 24
2 557 136
3 543 136
4 10 136
5 4 136
6 C 161 152
7 一个 184 24
8 一个 751 24
9 一个 184 24
10 一个 150 24

我使用以下代码解决了我最初版本的背包(背包容量为 240):

我现在想使用容量向量 (200, 150) 解决扩展版本。这是我使用的代码,现在合并了一个 x[i, j] 二进制变量,如果将项目 i 添加到 c[j],则该变量设置为 1:

我试过调试代码,它本质上是没有正确生成的约束(这是发生错误的地方)。这是我得到的错误:

check_for_unknown_vars_impl(model, the_ast) 中的错误:表达式包含不属于模型的变量。

我已经尝试了各种方法来尝试解决这个问题,但似乎无法弄清楚我的约束有什么问题。

0 投票
0 回答
31 浏览

r - 在 rmpk 优化中调用变量

我正在尝试设置模型目标,并且我有一个矩阵 A,其行数与变量数相同,它们是二进制的。基本上我想只使用最终被选择的行(其中 x = 1)来取列平均值。在本例中,将选择 3 行。我这样做的尝试(如下所示)涉及在 A 的行上使用 sum_expr;如果 x[ m ] = 1,则第m行仅对总和有贡献。但这不起作用。有没有办法做到这一点?

或者,有没有办法“获取” sum_expr 中变量的值,即,将其视为普通变量?例如:

0 投票
1 回答
157 浏览

r - 在 R 中的 ompr 包中,我如何改写我的目标/约束/变量以避免“问题太大”错误?

我正在尝试使用ompr同事之前使用 CPLEX/GAMS 拟合的包(特别是此处描述的包:Haight et al. 2021)来学习在 R 中拟合线性整数规划优化模型。我正在我大学的 Linux 超级计算服务器上运行我的实现,它有 248gb 的内存,我认为这足以完成这项工作。

这是我的代码和来自服务器的故障报告的输出:

为了创建可重现的示例,可以按如下方式生成n.ij和的模拟版本:boats.n.ij

为什么我无法将目标添加到我的模型中?仅仅是我在暗示存在三个非常大的矩阵(决策矩阵uboats.n.ij矩阵和它们的乘积矩阵)吗?是不是因为模型已经是6.8gb左右的文件了?RI 遇到的内存或对象大小是否有上限?这些功能是否无法考虑具有这么多决策点的目标?

我可以确认我已经能够在一个非常小的优化子集上运行模型的缩小版本boats.n.ij,所以我认为这不是我的模型规范的问题,但我可能是错的.. .我还应该明确说明我对不涉及在 R 中解决此模型的解决方案不感兴趣,因为这是这里的明确目标。但是,如果有更强大的包可用,我愿意使用其他包(尽管我喜欢这个包)。

注意:与我引用的论文不同,我不再需要b.ij我的同事确实使用的向量,所以这不是这里的问题。

编辑:请注意,@nicola 的目标改革将设置并解决,但原始约束和/或变量将不再与它具有相同的关系,因此它会拟合与我想要拟合的模型不同的模型。在原始构造中,x[i] 中最多只有 10 个值,因此决策变量 u[i,j] 中 i 的最多 10 个唯一值将被允许为 1,这要归功于涉及我们的约束。预算参数B. 在@nicola 的版本中,在 u[i,j] 中允许有超过 10 个 i 的唯一值是 1。实际上,我至少不清楚最初编写的约束如何与@nicola 的目标相互作用,如果有的话。但是,我怀疑像@nicola 这样的目标绝对可以用来利用我的boats.n.ij 矩阵的稀疏性,以避免“问题太大”错误,但它需要相应地修改变量和/约束. 我更改了问题的标题,以便更清楚地了解我在寻找什么——我想避免错误,但要适合等效模型

第二次编辑:@nicola 的解决方案毕竟有效!ompr但是,自从我发布此问题以来,由于更新,变量和约束需要进行一些修改。请参阅以下玩具示例:

0 投票
1 回答
29 浏览

r - 如何在约束中包含矩阵乘法?

我正在尝试运行这个模型。我正在尝试最大化:x[4]

但我有两个问题,第一个矩阵乘法。

我收到以下错误。

M[i, ] %*% x 中的错误:需要数字/复数矩阵/向量参数

其次,我试图以矢量化的方式设置边界,但我不知道该怎么做。我尝试了以下方法:

这给出了:

找不到对象“我”

任何帮助都会非常有用!