lingo怎么写西格玛求和
来源:学生作业帮助网 编辑:作业帮 时间:2024/10/04 12:17:43
lingo取整有几种形式:@floor(x):对x向下取整@bin(x):只取0或1@gin(x):限制x只能取整数
@sum()
求和的地方写的没问题但是你集定义有问题集名和下标不要用一样的名字
方法一:model: sets: Level/1..3/:P,U,Goa
k,i是变量还是集合下标呢?以下是变量的情况:@bnd(1,k,3);!1再问:谢谢,k,i又当下标,又当变量(作为指数)再答:要看具体情况吧,你把代码或数学模型贴出来看看吧再问:太感谢了,你有邮箱吗
需要先定义集然后再对集用@sum函数这个比较复杂希望你能找个教程详细看一下有什么问题可以再问我
可以用多个for循环解决另外可以下载数据使用
sets:r/1..5/:;!行;c/1..6/:;!列;link(r,c):B;!定义二维集合,声明B;endsetsy=@sum(link(i,j)|i#ge#2#and#i#le#4#and#j
MODEL:SETS:S/1..10/:T,C;ENDSETSDATA:C=12345678910;ENDDATA@FOR(S:@BIN(T));MIN=T(1)*C(1)+T(2)*C(2)+T(3
先定义好集才行给个例子吧sets:s1/1..4/:;s2/1..6/:;link(s1,s2):u,x;endsets第一部分就是@sum(link:u*x);
多看书,自学
lingo中的循环需要用到你集合域定义的集合.您的x(i)应该有相应的定义如:a/1..n/:x;,k(i,j)是他们的衍生集合.link(x,x):k;表达式可以写成:@sum(a:@sum(a:(
打个比方,定义: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,
是@sum啊两个求和就用两个@sum先求和一次然后再在外面再求和比如@sum(set1(i):@sum(sets2(j):b(i,j)*x(i,j)))当然也可以对i,j的集直接求和
model:sets:point/1..10/:x;road(point,point)|&1#gt#&2:a;endsetsdata:a=3151515158151588151588
sets:liu/1..n/:a,b;endsetsfor(liu(i):a(i)*b(i).);
在集循环函数里面的j下标声明的时候可以在后面加|j#ne#i来限制j不等于i比如@sum(seti(i):@sum(setj(j)|j#ne#i:sw(i,j)))你自己写一下吧
lingo中的下标都是从1开始的sum=@sum(setname(i)|i#le#n+1:x(i));有疑问联系我
求和用@sum()再比较大小没明白怎么回事?是要求最大值还是最小值?还是?
@sum(man(i)|i#GE#n#AND#i#LE#m:x(i,1));