mezhaoyun 发表于 2009-8-24 17:33

lingo程序有点小问题,请高手帮忙修改一下。谢谢

sets:
department/A..E/;
city/1..3/;
benefit(department,city):B,x;
dist(city,city):C;
comm(department,department):D;
matrix(department,city,department,city);
endsets
max=10000*@sum(benefit(i,j):B(i,j)*x(i,j))-@sum(matrix(i,j,k,l)|i#lt#k:C(j,l)*D(i,k)*x(i,j)*x(k,l);
@for(department(i):@sum(city(j):x(i,j))=1);
@for(city(j):@sum(department(i):x(i,j))<=3);
@for(benefit,@gin(x));
data:
    B=0  10  0
      0  15  20
      0  10  15
      0  20  15
      0  5   15;
   C=100  130  90
     130  50   140
     90   140  50;
   D=0  0  1000  1500  0
     0  0  1400  1200  0
     1000  1400  0  0  2000
     1500  1200  0  0  700
     0  0  2000 700  0;
enddata

注:在lingo11.0上运行提示for函数应用不当,请高手纠正。多谢。

kongfanqing 发表于 2009-8-24 19:05

@for(benefit,@gin(x));
修改为:@for(benefit:@gin(x));
试试吧

kongfanqing 发表于 2009-8-24 19:05

@for(benefit:@gin(x));

kongfanqing 发表于 2009-8-24 19:06

是冒号,不能用逗号

lyyy 发表于 2009-8-24 19:41

目标函数有点乱,其它如上所说,楼主再看看自己的目标函数,能够运行。

黑星 发表于 2009-8-25 21:26

model:
sets:
department/A..E/;
city/1..3/;
benefit(department,city):B,x;
dist(city,city):C;
comm(department,department):D;
matrix(department,city,department,city);
endsets
max=10000*@sum(benefit(i,j):B(i,j)*x(i,j))-@sum(matrix(i,j,k,l)|i#lt#k:C(j,l)*D(i,k)*x(i,j)*x(k,l));
@for(department(i):@sum(city(j):x(i,j))=1);
@for(city(j):@sum(department(i):x(i,j))<=3);
@for(benefit:@gin(x));
data:
    B=0  10  0
      0  15  20
      0  10  15
      0  20  15
      0  5   15;
   C=100  130  90
     130  50   140
     90   140  50;
   D=0  0  1000  1500  0
     0  0  1400  1200  0
     1000  1400  0  0  2000
     1500  1200  0  0  700
     0  0  2000 700  0;
enddata
这样不知道满不满足你的要求?

xiaoguo 发表于 2009-9-6 17:11

呵呵,是冒号

xiaoguo 发表于 2009-9-6 17:12

好好加油,比赛了
页: [1]
查看完整版本: lingo程序有点小问题,请高手帮忙修改一下。谢谢