lingo 中min用smin
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/08 10:35:05
MODEL:SETS:qiefa/1,2,3/:x;bujian/1..4/:L,NEED;shuliang(qiefa,bujian):N;ENDSETSDATA:L=4,5,6,8;NEED=50
@for(supply(i):b(i)=@min(supply(j):d(i,j)*x(j)));再问:请问:如果我想加强条件,在取Bi=min{Dij*Xj}的时候限制Bi必须大于零,不能等于零,该
当然不对括号都要用英文的每句后面加分号不能连写不等号相乘要有*
a=@if(条件,正确时的值,错误时的值);随便找个lingo教程都会有详细的介绍的
sets:r/1..1000/:X;endsetsmin=@sum(r(i)|@mod(i,2)#eq#0:X(i))-@sum(r(i)|@mod(i,2)#eq#1:X(i));@sum(r:X)
似乎可以用@mod()来实现,我尝试了一下,没有最优MODEL:MIN=3*N^2-3*N+1;(3*(N-1)^2-3*(N-1)+1)*48*5+((3*N^2-3*N+1)-(3*(N-1)^2
@bin(x),01约束.
不知道你这样做的目的是什么单算这个用lingo没什么意义sets:num/1..100/:n;endsetsy=5*@sum(num(i):i)+1;
如果前面集合定义没错的话,那么这句也没错.建议把全部代码贴出来看看,lingo报错行数不一定准确,有时错误会在报错的上一行.
@sum()
lingo中开方函数是@sqrtlingo中所有函数都是以@开头的建议你最好是写成^(1/2)
link一般用作派生集就是一个二维的集看起来像矩阵那样的比如定义了两个集a表示时间的集b表示地点的集那么可以做一个集link(a,b)它里面的变量表示某个时间某个地点的情况当然这个link只是一个惯例
只要注意lingo语法就行了如果涉及到大规模的批量语句还是要用集操作另外你的xij>=是什么意思>=什么如果是0那不用加因为默认是非负的结果是无可行解这个看你写的就知道问题在哪了后三个式子跟前两个式子
取绝对值的函数.
改成这样min=x;1312.5*x-y7.79;
@gin(x)限制x为整数例子:max=x+y;x>1.1;x1.1;y
@min是集循环函数取集里面的最小值@smin是对几个数取最小
model:sets:A/1..4/:x,y;endsetsmin=@sum(A:y);@for(A(i):y(i)=-x(i)^2+i*x(i));@for(A:@bnd(-1,x,1));@sum
generatormemory初始记忆,就是一开始的设定,以方便还原不过你是把这个问题发到百度知道的电脑专栏里去,哪里有很多高手呢.
那要等于多少再问:就是非零的其余的数中的最小值,所有的数字都大于0再答:这个恐怕很难你可以试试把A换成@if(A#eq#0,M,A)其它两个同样的让M很大而且你这个问题确实很特别你的A是不是可以任意接