lingo 的sum语句
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 20:16:16
那你解释一下你这个@if的条件是什么否则不好写啊你写的恐怕是有问题的再问:就是希望如果距离小于10权重为0.5,距离大于10权重为0.3,然后根据权重计算权重a乘以d再答:什么距离具体是哪个距离你这个
sets:r/1..5/:;c/1..3/:;link(r,c):x,d;endsetsdata:!d=;!d表示系数,根据实际填写;enddatasum=@sum(link(i,j):d(i,j)*
for语句的格式为:@For(中间是具体的语言);中间具体的语言是:你定义的集合变量申明,然后冒号之后就是你的运算表达式,表达式方式和正常的方式相同.比如sets:ww/w1..w6/:x,y;end
你把具体问题发出来吧你写的根本看不懂是什么意思再问:min=z(i)*((|m-x(i)|+|n-y(i)|)的累加;i是1到9;x(i)、y(i)和z(i)都是已知数据;约束条件是0<=m&l
c的数据里面少了一个数MODEL:SETS:WH/W1..W6/:AI;VD/V1..V8/:DJ;LINKS(WH,VD):C,X;ENDSETSDATA:AI=60,55,51,43,41,52;
这个实际上写的不好既然里面@sum只有k=1的情况直接写y1(i,1)就行了何必写个求和呢这句的意思就是对于所有的iq(i)*y1(i,1)求和是不超过capacity的
你这个两个目标函数是怎么回事说清楚再问:我不知道lingo不能求解多目标。。。那matlab可以吗再答:当然不能直接解了你多目标必须自己先确定优先级之类的然后按步骤一个一个的解不可能两个目标没有优先级
@sum()
注意lingo主模型段写的是约束不是赋值语句你这样写肯定不行可以用一个中间变量来过渡吧或者用一个0-1变量乘上你这个量
@if(条件,正确返回值,错误返回值);@for(fuwupingtai(i):@sum(links(i,j):x(i,j)))=@if(@for(links(i,j)|i#eq#j:x(i,j)=0
@sum(setname(index):x(index));代表对setname这个集里面的元素的x属性求和@for(setname(index):约束);代表对setname中每个下标都满足这个约束
for循环里面的指标都是局部的只在这句里面生效其它句子里面使用的下标跟这个重复没关系具体怎么写去找教程有具体的格式
没有说明,写什么函数
for语句的格式为:@For(中间是具体的语言);中间具体的语言是:你定义的集合变量申明,然后冒号之后就是你的运算表达式,表达式方式和正常的方式相同.比如sets:ww/w1..w6/:x,y;end
学过高中数学应该很容易得到min是z的平方根根本不需要用lingo这并不具有很高的说服力即使你画的点再密也得不到上面的结论非要用lingo的话建议看一下lingo的usermanual具体看submo
应该没错你自己用结果带进去试试再问:语法没错那逻辑功能也是符合我的设想的吗。。再答:那我不知道你想的是什么
把你完整的语句写出来光写一部分说没错是没有用的再问:model:sets:jiaoshou/1..7/:x1,x2,x3,x4,a1,a2,a3,a4;fujiaoshou/1..7/:y1,y2,y
sets:r/1..100/:;endsetscalc:sum=0;@for(s(i):sum=sum+i);endcalc单用sum函数sets:r/1..100/:;endsetssum=@sum
稍微变换一下就可以了如果A1>500,则A2-600
a=@smax(a,0);!@smax()函数用于求若干变量或表达式的最大值,此处将a和0的最大值赋给a即表示当a<0是a=0;@free(a);!lingo默认变量非负,@free(a)限定a为任意