lingo循环求和如何限制i的值
来源:学生作业帮助网 编辑:作业帮 时间:2024/10/04 12:17:59
sets:r/1..5/:;c/1..3/:;link(r,c):x,d;endsetsdata:!d=;!d表示系数,根据实际填写;enddatasum=@sum(link(i,j):d(i,j)*
@sum()
求和的地方写的没问题但是你集定义有问题集名和下标不要用一样的名字
sum(u1(1:N-1))再问:好像不是你这样的,每一步的累加都有ss(i)参与。再答:你试试结果就知道了,一样的再问:有问题的,和for循环运算出的最后结果不同。再答:你要的是累加结果吗,就是前两
sets:setname/1..7/:x,t;endsets@for(setname(i):@for(setname(j)|i#ne#j:(x(i)+t(i)#le#x(j))#or#(x(j)+t(
for语句的格式为:@For(中间是具体的语言);中间具体的语言是:你定义的集合变量申明,然后冒号之后就是你的运算表达式,表达式方式和正常的方式相同.比如sets:ww/w1..w6/:x,y;end
lingo有集你把矩阵当成一个集里面的元素做就行了随便找个教程看看吧不是一句话就能说清楚的事
clearx=0;sum=0;i=1;whilei
意思是选出其中20个N值,使其和最大?!排序下来,依次选前20个加起来不就行了.是这个意思吗?!
lingo中的循环需要用到你集合域定义的集合.您的x(i)应该有相应的定义如:a/1..n/:x;,k(i,j)是他们的衍生集合.link(x,x):k;表达式可以写成:@sum(a:@sum(a:(
绋嬪簭娌¢棶棰榽鍙?兘鍙?槸杞?欢鍙橀噺闄愬埗鈥︾瓟妗堟垜绠楀嚭鏉ヤ簡鈥?br/>T0.000000X(A1)150.0000X(A2)85.00000X(A3)150.0000X(A4)145.00
打个比方,定义:sets:a/1..5/;b/1..6/;c/1..7/;link1(a,b):r;link(a,b,c):x;endsets先一维求和再二维:@sum(link1(i,j):r(i,
model:sets:a/1..4/:x;b/1..3/:value;link(a,b):c;endsetsdata:value=1,1.5,2.5;enddatamax=x(1)+x(2)*x(3)
sets:liu/1..n/:a,b;endsetsfor(liu(i):a(i)*b(i).);
你的olen,owidllen,lwid分别表示什么?能解释清楚一些吗?放在合适的地方?是什么意思8个物体放8个位置?还是8个物体放1个位置位置各边要空出指定长的边吗?我知道你说的那个可以用一个@bn
在集循环函数里面的j下标声明的时候可以在后面加|j#ne#i来限制j不等于i比如@sum(seti(i):@sum(setj(j)|j#ne#i:sw(i,j)))你自己写一下吧
@for(demend(i):@sum(supply(j):x(i,j)
@sum(man(i)|i#GE#n#AND#i#LE#m:x(i,1));
先定义原始集再定义派生集就可以实现双重求和再问:我试试。。/
可以设置一个控制变量来乘,比如m(i)*k(i,j)*n(i)>=D(j)*n(i);再加上@if()语句,利用n(i)=@if(i#le#s,1,0)来给n(i)赋值,使得当is时有n(i)=0;则