问题标签 [mathprog]

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

model - 使用 Glpk 进行线性规划建模时的语法错误

这是我的全部问题:

在此处输入图像描述

信息:

*最大限度。总投资:125美元

*支付是购买单位的总和 x 支付/单位

*每次投资成本:购买成本 + 成本/单位 x 单位数量(如果您购买至少一个单位)

*成本为每次投资成本的总和

约束:

*您不能同时投资 2 和 5。

*仅当您至少投资 2 和 3 之一时,您才可以投资 1。

*您必须至少投资 3,4,5 中的两个。

*您的投资不得超过最大单位数。

问题:最大化利润:回报 - 成本

我的建模:

我收到此语法错误:

你能帮帮我吗?

0 投票
2 回答
2547 浏览

linear-programming - GLPK Mathprog 组集

我正在尝试编写一个可以解决多项选择背包问题 (MCKP) 的模型,如涉及维度、需求和多项选择约束的背包问题中所述:公式之间的泛化和转换(在此处找到,参见图 8 和图 9)。您可以在此处找到基本背包问题的示例 GPL 模型。对于寻求快速解释背包问题的任何人,请阅读以下插图:

你是一个冒险家,偶然发现了一个宝库。有数百个美妙的项目“i”,每个都有一个重量“w”和一个利润“p”。假设您有一个重量为“c”的背包,并且您想在不使背包装满的情况下获得最大的利润。使您获得最大利润的项目的最佳组合是什么?

在代码中:

其中“I”是一篮子物品,x[i] 是二元变量(0 = 未选择,1 = 已选择)

我遇到的问题是添加了多个组。MCKP 要求从每个组中只选择一项。因此,例如,假设我们有三个可供选择的组。它们可以表示如下(忽略实际值):

我对如何迭代每个组以及如何定义变量 x 感到困惑。我认为它看起来像:

其中 i 是组 j 中项目的索引。这假设我定义了一组集合:

然后我会遍历项目组:

但我很担心,因为我相信 GPL 不支持有序集。我已经看到了这个相关的问题,其中答案建议在集合中定义一个集合。但是,我不确定它在这种特定情况下如何应用。

我的主要问题要明确:在 GPL 中,我如何迭代集合(在这种情况下是一组组,其中每个组都有一组项目)?

0 投票
1 回答
1719 浏览

glpk - GLPK 在约束中使用变量

我正在尝试编写约束,但出现此错误:

这是代码:

错误是针对“C4”约束的。我的问题是在“c4”中如何在其条件下使用变量?我该如何解决这个错误?

0 投票
2 回答
1342 浏览

glpk - 定义方程和二元变量

它提示我作为错误消息

x11b 未定义

我看了几页,格式相同。知道为什么会这样吗?

0 投票
1 回答
221 浏览

c++ - MathProg 到 C++ 的转换

我用 MathProg 语言写了一个问题来检查我对某些混合整数问题的理解是否正确。过了一会儿,我能够弄清楚,我可以假设这个解决方案是正确的。

但我真正需要的是在 C++ 代码中实现的相同例程。我花了一些时间用 GLPK C API 重写问题,但在单元测试期间我发现 C++ 版本没有返回解决方案,因为没有可行的解决方案。

显然我犯了一些错误,我需要找到哪里。

是否有一些调试或预览方法可用于,例如,查看由我的 C++ 代码和 MathProg 模型生成的模型来比较它们?简单地遍历所有我可能搞砸的地方将是一些解决方案,但非常无效。

0 投票
1 回答
958 浏览

linear-programming - 或 GLPSOL AMPL/MathProg 线性规划中的条件

我想编写一个优化模型,根据某些约束选择两个任务中较小的一个。

现在,T1 和 T2 代表任务的持续时间,而 doT1 代表执行这些任务的标志。如果需要,我希望此优化仅选择其中一个。

当我把约束

我在 glpsol 中收到一条错误消息,上面写着不允许线性形式的乘法。

是否可以在线性规划中表达 OR 条件?

0 投票
1 回答
1704 浏览

linear-programming - 关于 GPL 代码的问题

我试图解决以下问题,使用 GLPSOL 求解器:

弗雷德有 5000 美元在未来五年内投资。每年年初,他可以将钱投资于一年或两年的定期存款。银行为一年期定期存款支付 4% 的利息,为两年期定期存款支付 9%(总计)的利息。此外,West World Limited 将从第二年初开始提供为期三年的证书。这些证书将返回 15%(总计)。如果 Fred 将每年可用的资金进行再投资,请制定一个线性程序,向他展示如何在第五年末最大化手头的总现金。

我想出了以下LP模型:

由于 x ij是第 j 年投资于期权 i 的金额,我们希望
最大化 z = 1,04x 15 + 1,09x 24 + 1,15x 33
但须符合:

  • x 11 + x 12 <= 5000
  • x 31 = x 34 = x 35 = 0
  • x 12 + x 22 + x 32 <= 1,04 x 11
  • x 13 + x 23 + x 33 <= 1,04 x 12 + 1,09 x 21
  • x 14 + x 24 <= 1,04 x 13 + 1,09 x 22
  • x 15 <= 1,04 x 14 + 1,09 x 23 + 1,15 x 32
  • x ij >= 0

并尝试用 GPL 编写它:

但是,我收到以下错误:

inv.mod:14: x 多重声明
上下文: ...[ 1 , 5 ] + 1.09 * x [ 2 , 4 ] + 1.15 * x [ 3 , 3 ] ; st x
MathProg 模型处理错误

有人对此有任何想法吗?

0 投票
1 回答
233 浏览

c - 以编程方式访问 GLPK 中的 MathProg 解决方案

我在 MathProg 中表达了一个问题,使用 C API 似乎无法描述。具体来说,我在变量之间有约束。我生成了一个 MathProg 文件并将其传递给 GLPK。它找到了正确的解决方案,但我看不到如何以编程方式访问此解决方案。返回的glp_prob结构没有行或列。我可以解析求解器打印的解决方案,但我希望有更好的方法。

或者,如果可以使用 C API 表达变量之间的约束,我怀疑这也可以解决我的问题。我的 MathProg 代码如下。

0 投票
1 回答
409 浏览

glpk - 矩阵游戏中剪刀石头布的不可行解(GLPK)

我尝试使用 GLPK来实现这个线性问题。当我针对石头剪刀布游戏(在混合策略中具有均衡性)进行测试时x=(1/3, 1/3, 1/3)y=(1/3, 1/3, 1/3我得到了不可行的解决方案。

我回到 MathProg 来检查它是否会成功。不幸的是,它也失败了。我猜这是由于-1值的原因,因为基本的单纯形法不允许负变量,并且需要进行一些转换才能绕过它(尽管我认为它只涉及变量,而 GLPK 会自动执行此操作)。

我已经定义了这样的问题:

  • 播放器 1 的型号:

    /li>
  • 数据:

    /li>

我运行它:

我的猜测是否正确,我可以应用一些简单的解决方法(例如设置一些标志)?还是我搞砸了其他事情(以错误的方式写下问题或忽略了某些事情)?

编辑:

在将矩阵的每个值增加常数1(使所有值都非负)后,我得到了正确的解决方案(GameValue也被移动了,1所以我可以通过减去它来恢复它)。它是否仅在这种情况下有效,或者如果(在运行 GLPK 之前)我将所有参数增加常数以使它们全部为非负数,它是否会中断?我可以在 GLPK 中设置一些标志来自动执行吗?

0 投票
0 回答
67 浏览

ampl - “宽松现金”难题的 AMPL/MathProg 约束

我尝试在 AMPL/MathProg 代码中阐述HE Dudeney 的“现金宽松”问题。

挑战“散钱”问题:

我口袋里能装的最大的钱是多少——全部是流通硬币,没有银元——如果我不能换一美元、半美元、25美分硬币、一角硬币或镍币找零?

问题我的方法不完整:

问题:如何...正确制定约束部分?