问题标签 [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.
model - 使用 Glpk 进行线性规划建模时的语法错误
这是我的全部问题:
信息:
*最大限度。总投资:125美元
*支付是购买单位的总和 x 支付/单位
*每次投资成本:购买成本 + 成本/单位 x 单位数量(如果您购买至少一个单位)
*成本为每次投资成本的总和
约束:
*您不能同时投资 2 和 5。
*仅当您至少投资 2 和 3 之一时,您才可以投资 1。
*您必须至少投资 3,4,5 中的两个。
*您的投资不得超过最大单位数。
问题:最大化利润:回报 - 成本
我的建模:
我收到此语法错误:
你能帮帮我吗?
linear-programming - GLPK Mathprog 组集
我正在尝试编写一个可以解决多项选择背包问题 (MCKP) 的模型,如涉及维度、需求和多项选择约束的背包问题中所述:公式之间的泛化和转换(在此处找到,参见图 8 和图 9)。您可以在此处找到基本背包问题的示例 GPL 模型。对于寻求快速解释背包问题的任何人,请阅读以下插图:
你是一个冒险家,偶然发现了一个宝库。有数百个美妙的项目“i”,每个都有一个重量“w”和一个利润“p”。假设您有一个重量为“c”的背包,并且您想在不使背包装满的情况下获得最大的利润。使您获得最大利润的项目的最佳组合是什么?
在代码中:
其中“I”是一篮子物品,x[i] 是二元变量(0 = 未选择,1 = 已选择)
我遇到的问题是添加了多个组。MCKP 要求从每个组中只选择一项。因此,例如,假设我们有三个可供选择的组。它们可以表示如下(忽略实际值):
我对如何迭代每个组以及如何定义变量 x 感到困惑。我认为它看起来像:
其中 i 是组 j 中项目的索引。这假设我定义了一组集合:
然后我会遍历项目组:
但我很担心,因为我相信 GPL 不支持有序集。我已经看到了这个相关的问题,其中答案建议在集合中定义一个集合。但是,我不确定它在这种特定情况下如何应用。
我的主要问题要明确:在 GPL 中,我如何迭代集合(在这种情况下是一组组,其中每个组都有一组项目)?
glpk - GLPK 在约束中使用变量
我正在尝试编写约束,但出现此错误:
这是代码:
错误是针对“C4”约束的。我的问题是在“c4”中如何在其条件下使用变量?我该如何解决这个错误?
glpk - 定义方程和二元变量
它提示我作为错误消息
x11b 未定义
我看了几页,格式相同。知道为什么会这样吗?
c++ - MathProg 到 C++ 的转换
我用 MathProg 语言写了一个问题来检查我对某些混合整数问题的理解是否正确。过了一会儿,我能够弄清楚,我可以假设这个解决方案是正确的。
但我真正需要的是在 C++ 代码中实现的相同例程。我花了一些时间用 GLPK C API 重写问题,但在单元测试期间我发现 C++ 版本没有返回解决方案,因为没有可行的解决方案。
显然我犯了一些错误,我需要找到哪里。
是否有一些调试或预览方法可用于,例如,查看由我的 C++ 代码和 MathProg 模型生成的模型来比较它们?简单地遍历所有我可能搞砸的地方将是一些解决方案,但非常无效。
linear-programming - 或 GLPSOL AMPL/MathProg 线性规划中的条件
我想编写一个优化模型,根据某些约束选择两个任务中较小的一个。
现在,T1 和 T2 代表任务的持续时间,而 doT1 代表执行这些任务的标志。如果需要,我希望此优化仅选择其中一个。
当我把约束
我在 glpsol 中收到一条错误消息,上面写着不允许线性形式的乘法。
是否可以在线性规划中表达 OR 条件?
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 模型处理错误
有人对此有任何想法吗?
c - 以编程方式访问 GLPK 中的 MathProg 解决方案
我在 MathProg 中表达了一个问题,使用 C API 似乎无法描述。具体来说,我在变量之间有约束。我生成了一个 MathProg 文件并将其传递给 GLPK。它找到了正确的解决方案,但我看不到如何以编程方式访问此解决方案。返回的glp_prob
结构没有行或列。我可以解析求解器打印的解决方案,但我希望有更好的方法。
或者,如果可以使用 C API 表达变量之间的约束,我怀疑这也可以解决我的问题。我的 MathProg 代码如下。
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 中设置一些标志来自动执行吗?
ampl - “宽松现金”难题的 AMPL/MathProg 约束
我尝试在 AMPL/MathProg 代码中阐述HE Dudeney 的“现金宽松”问题。
挑战“散钱”问题:
我口袋里能装的最大的钱是多少——全部是流通硬币,没有银元——如果我不能换一美元、半美元、25美分硬币、一角硬币或镍币找零?
问题我的方法不完整:
问题:如何...
正确制定约束部分?