标签: mathprog

如何在GLPK中为我的变量写一个if条件?

这是我的完整问题:

在此输入图像描述

信息:

*最大.总投资:125美元

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

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

*费用是每笔投资的总和

约束:

*您可能不会同时投资2和5.

*只有投资2和3中的至少一个,您才可以投资1.

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

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

问题:最大化利润:支付 - 成本

 xi: # of units i ? {1,2,3,4,5}
 yi=1 if xi>0 else yi=0
 cost = sum{i in I} buyInCost_i * yi + cost-unit_i*xi
 pay-off = sum{i in I} (pay-off/unit)_i*xi
 profit = pay-off - cost

 Maximize profit

 Subject to

 y2+y5 <= 1
 y1<= y2+y3
 y3+y4+y5 >= 2
 x1<=5, x2<=4, x3<=5, x4<=7, x5<=3
 cost<=125
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

例如,我有这个二进制变量y

 yi=1 if xi>0 else yi=0  and i ? {1,2,3,4,5}
Run Code Online (Sandbox Code Playgroud)

我宣称我是一个数据集

 set I;

 data; …
Run Code Online (Sandbox Code Playgroud)

linear-programming glpk mathprog

5
推荐指数
1
解决办法
2万
查看次数

GLPK MathProg设置和组

我希望这对某人来说是显而易见的.我只使用了GLPK/MathProg.我无法弄清楚GNU MathProg(在GLPK中)的语法来执行以下操作,例如:

set PartsOfWeek;
set WeekDays;

data;
set PartsOfWeek := WorkWeek WeekEnd;

set WorkWeek := Mon Tue Wed Thu Fri;
set WeekEnd := Sat Sun;

set WeekDays := setof{d in (WorkWeek union WeekEnd)}(d);
Run Code Online (Sandbox Code Playgroud)

问题是MathProg拒绝了这个问题.

一般来说,我只希望能够: - 声明一个Partition(这里是PartsOfWeek)和一个set(这里是Weekdays) - 从数据构建分区 - 用分区中的集合元素填充集合.

一个更好的例子可能是季节和月份.

solver ampl mathprog

4
推荐指数
1
解决办法
1640
查看次数

标签 统计

mathprog ×2

ampl ×1

glpk ×1

linear-programming ×1

solver ×1