资源

迁移到OPTMODEL:多商品转运(lp17)

/***********************************************************************//*S A S A M P L E L I B R A R Y公司*//*                                                                     *//*名称:lp17*//*标题:迁移到OPTMODEL:多商品转运(lp17)*//*产品:或*//*系统:所有*//*钥匙:LP*//*程序:OPTMODEL*//*数据:*//*                                                                     *//*支持:更新:*//*参考:*//*MISC:的LP程序章节中的示例17*//*数学编程遗留程序*//*                                                                     *//***********************************************************************/标题“有固定费用的多商品转运问题”;数据商品_数据;做c=1到4;产出;结束;运行;数据arc_data;从$输入到$c1 c2 c3 c4 fx;数据线;farm-a芝加哥20 15 17 22 100farm-b芝加哥15 15 30 75farm-c芝加哥30 30 10 10 100农场-圣路易斯30 25 27 22 150farm-c圣路易斯10 9 11 10 75芝加哥纽约75 75 75 75 200纽约圣路易斯80 80 80 80 200;运行;数据供应_数据;输入节点$sd1 sd2 sd3 sd4;数据线;农场-100 100 40。农场-b 100 200 50 50farm-c 40 100 75 100NY-150-200-50-75;运行;过程操作模型;设置商品;将数据commodity_data读入COMMODITIES=[c];设置<str,str>ARCS;num unit_cost{ARCS,商品};num固定电荷{ARCS};将数据arc_data读入ARCS=[从到]{COMMODITIES中的c}<unit_cost[from,to,c]=col('c'||c)>固定费用=fx;打印单位_成本固定_费用;在ARCS}{i,j}中设置节点=union;num供应{节点,商品}初始化0;将数据supply_data nomiss读入COMMODITIES}中的[node]{c<supply[node,c]=col('sd'||c)>;印刷品供应;var AmountShipped{ARCS,c in COMMODITIES}>=0<=节点中的总和{i}最大值(电源[i,c],0);/*如果使用弧(i,j),则UseArc[i,j]=1,否则为0*/var UseArc{ARCS}二进制;/*总成本=可变成本+固定费用*/最小总成本=ARCS中的总和{商品}中的c单位_成本[i,j,c]*发货金额[i,j,c]+ARCS}固定电荷[i,j]*UseArc[i,j]中的和{i,j>;con flow _ balance{i在节点中,c在商品中}:ARCS}发货数量[i,j,c]中的总和{<(i),j>-ARCS}装运数量[j,i,c]<=供应[i,c]中的总和{(i)>;/*如果发货数量[i,j,c]>0,则UseArc[i,j]=1*/con fixed_charge_def{<i,j>在ARCS中,c在COMMODITIES}中:发货数量[i,j,c]<=发货数量[i,j,c].ub*UseArc[i,j];解决;打印发货金额;在ARCS中从[from to commodity]={i,j>创建数据解决方案,商品中的c:AmountShipped[i,j,c].sol ne 0}amount=AmountShipbed;退出;/*打印解决方案*/proc打印数据=解决方案;运行;