lingo里面用的是集 你用@for函数对所有的做乘积
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 18:06:07
我直接帮你把编一下程序吗,模型就不建立了,很繁琐,看到程序你大概就能明白了.首先设每月的买入数为X(i),卖出数为Y(i),库存数Z(i),模型如下model:sets:A/1..6/:X,Y,Z;E
方法一:model: sets: Level/1..3/:P,U,Goa
model:SETS:QUARTERS1/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21/:S,N;QUARTERS2/1,2,3,4/:A
lingo主模型段不是一步一步的程序是列出来的约束你要么换个别的变量表示不可能一个数=-1的时候改成0
这个类似于二维装箱问题.你把图形的左右边和上边进行适当延伸,然后用二维装箱的,思路来解答,求解之后进行一个合理性检验.不敢要分.
需要先定义集然后再对集用@sum函数这个比较复杂希望你能找个教程详细看一下有什么问题可以再问我
model:sets:work/1..4/:job;workers/1..4/:worker;links(work,workers):x,pay;endsetsdata:pay=50101000307
max=(P1-10)*Q1+(P2-1)*Q2;P1=35-0.1*Q1;P2=25-0.1*Q2;Q1<=200;!lingo默认变量非负;Q2<=100;结果:Localoptima
你换个技能和研究一体机
1model:sets:food/1..4/:price,x;protein/1..4/:demand;link(food,protein):c;endsetsdata:price=50203080;
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
你这个两个目标函数是怎么回事说清楚再问:我不知道lingo不能求解多目标。。。那matlab可以吗再答:当然不能直接解了你多目标必须自己先确定优先级之类的然后按步骤一个一个的解不可能两个目标没有优先级
@if(条件,正确返回值,错误返回值);@for(fuwupingtai(i):@sum(links(i,j):x(i,j)))=@if(@for(links(i,j)|i#eq#j:x(i,j)=0
数学符号太多,不数学运算中经常使用符号,如+,-,×,÷,=,>,<小于等于≡恒等于或同余ln(x)以e为底的对数lg(x)以10为底的
min=9*x-0.02*x^2+2*x^3-1.5*x^4+0.02+x^5+5*@sin(x);x>2;x
lingo中下标只能从1开始sets:r/1..11/:;c/1..11/:;!j的上限未知,暂设为11;links(r,c):u,d;endsetssum=@sum(links(i,j)|j#gt#
最短距离3672model:sets:city/1..6/:level;!level(i)表示城市线路的连接次序,如果连接的是城市j和i,则level(j)=level(i)+1;link(city,
sets:r/1..5/:a;endsetsn=@size(r);b=@sum(r:a)/5;@sum(r:(a-b)^2)/n
在集循环函数里面的j下标声明的时候可以在后面加|j#ne#i来限制j不等于i比如@sum(seti(i):@sum(setj(j)|j#ne#i:sw(i,j)))你自己写一下吧
a=@if(x1*4+x2*6#eq#100,0,1).