作业帮 > 综合 > 作业

请问这个lingo线性规划算法哪里有问题

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/01 18:27:46
请问这个lingo线性规划算法哪里有问题
model:
sets:
months/1..12/:prod,a,f,y;
endsets
data:
a=2 3 4 6 8 10 10 6 4 3 2 2;
y=1;
enddata
@for(months(I)| prod(I) #GT# prod(I-1):
f(I)= 10 * @abs(prod(I)-prod(I-1));
);
@for(months(I)| prod(I-1) #GT# prod(I):
f(I)= 5 * @abs(prod(I-1)-prod(I));
);
min = @sum(months:f);
@for(months(i)|i#eq#1:prod(i)+1-a(i)
有了进一步改进(刚学这个,
@for(months(I)|I#ge#2:
f(I)=@if(prod(I)#GE#prod(I-1),10 * @abs(prod(I)-prod(I-1)),5 * @abs(prod(I-1)-prod(I)));
程序运行提示这一行有错,我用的lingo4
谢谢zjpwang的指点。前面那句我已经把gt改为ge。不过按照你说的“不可省略部分”我加了,如下
@for(months(I)|I#ge#2:
f(I)=@if(prod(I)#GT#prod(I-1),10 * @abs(prod(I)-prod(I-1)),@if(prod(I-1) #GT# prod(I),5 * @abs(prod(I-1)-prod(I)),0)));
但还是这一行有错。
请问你用的是哪个版本的,是4.
你运行的结果是多少?
@for(months(I)| prod(I) #GT# prod(I-1):
当I=1时I-1=0出错
语句也有问题
可改成如下形式(因为prod(I)==prod(I-1)时怎么搞不知道,数值用?代替了)
@for(months(I)|I#ge#2:
f(I)=@if(prod(I)#GT#prod(I-1),10 * @abs(prod(I)-prod(I-1)),@if(prod(I-1) #GT# prod(I),5 * @abs(prod(I-1)-prod(I)),)));
处要填入prod(I)==prod(I-1)的情况,不能省略!
少了“)” 注意检查
@for(months(I)|I#ge#2:
f(I)=@if(prod(I)#GT#prod(I-1),10 * @abs(prod(I)-prod(I-1)),@if(prod(I-1) #GT# prod(I),5 * @abs(prod(I-1)-prod(I)),0)));
这个没错误!我这可以运行!
----------------------------------------------
我的是LINGO10.0.网上都有的下,下一个高一点的吧太老了.
程序:
sets:
months/1..12/:prod,a,f,y;
endsets
data:
a=2 3 4 6 8 10 10 6 4 3 2 2;
y=1;
enddata
@for(months(I)|I#ge#2:
f(I)=@if(prod(I)#GT#prod(I-1),10 * @abs(prod(I)-prod(I-1)),@if(prod(I-1) #GT# prod(I),5 * @abs(prod(I-1)-prod(I)),0)));
min = @sum(months:f);
@for(months(i)|i#eq#1:prod(i)+1-a(i)