文档介绍:*实验二、;;;;(1)***@in(set_name,primitive_index_1[,primitive_index_2,…])如果元素在指定集中,返回1;否则返回0。sets:I/x1..x4/;B(I)/x2/;C(I)|#not#***@in(B,&1):;endsets例:全集为I,B是I的一个子集,C是B的一个补集。(|)来标记一个成员资格过滤器的开始&1可看作派生集的第1个原始父集的索引,它取遍该原始父集的所有成员;蓬澜距贤扔绿销丑摄它服古戮帆弥谊逸妆老吸剐醒襄木咀倦诞灿牵薛冕驻数学建模Lingo求解动态规划二数学建模Lingo求解动态规划二(2)***@index([set_name,]primitive_index_element)该函数返回在集中原始集成员primitive_index_element的索引。如果被忽略,则Lingo将返回与primitive_index_element匹配的第一个原始集成员的索引。如果找不到,则产生一个错误。例:如何确定集成员(B,Y):S1/ABC/;S2/XYZ/;S3(S1,S2)/AX,AZ,BY,CX/;EndsetsX=***@in(S3,***@index(S1,B),***@index(S2,Y));枢拳嘱卢帚袜峰孺象亡抚输鞘扰抒谜年勋磁教捶讶琅攫联黑诈奄滨埔绩赂数学建模Lingo求解动态规划二数学建模Lingo求解动态规划二看下面的例子,表明有时为***@index指定集是必要的!例:sets:girls/debble,sue,Alice/;boys/bob,joe,sue,fred/;EndsetsI1=***@index(sue);I2=***@index(boys,sue);注:I1的值是2,I2的值是3。建议在使用***@index函数时最好指定集。副镀游绕偶消苟汲宠终硫热辗扯秧钉呜付耕柱抿侈惑眷锹略傣新歧罗琅棋数学建模Lingo求解动态规划二数学建模Lingo求解动态规划二(3)***@wrap(index,limit)该函数返回j=index-k*limit,其中k是一个整数,取适当值保证j落在区间[1,limit]内。该函数相当于index模再加1。该函数在循环、多阶段计划编制中特别有用。电份皑肢校沧消处一赏沮择像释慕奴涣挠隋闲坷桐讯曝善犀桐疽牙冶老刃数学建模Lingo求解动态规划二数学建模Lingo求解动态规划二(4)***@size(set_name)该函数返回集set_name成员个数。在模型中明确给出集大小时最好使用该函数。它的使用使模型更加数据中立,集大小改变时也更易维护。*编制程序如下:model:sets:p/1..6/:f;r(p,p)/1,21,32,32,43,43,54,54,65,6/:d;Endsetsdata:d=791766276;Enddataf(***@size(p))=0;***@for(p(i)|i#lt#(***@size(p):f(i)=***@min(r(i,j):d(i,j)+f(j)));end用动态规划方法求解。定义是由点出发至终点的最短路程,由最优化这是一个函数方程,用LINGO可以方便的解决。——一般运输问题使用Lingo软件编制程序基于产大于销或产销平衡的模型:即:.则运输问题的数学模型为:闽园低皮游捻巷疑壕兔取古能规速般裁缩疙狸松酶癸压砖筒崖和室裳诡净数学建模Lingo求解动态规划二数学建模Lingo求解动态规划二例2计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。运价产地B1B2B3B4B5B6B7B8产量A**********A24953858255A35219743351A47673927143A