请哪位大侠帮助看看这个程序的问题在哪里?lingo语言的,老说是for函数引用错误.

1个回答

  • 会比较难解 目标函数是非线性的

    MODEL:

    Title Location Problem;

    sets:

    supply/1..38/:a,b,s;

    receive/1/:x,y,h;

    got/1..451/:e,f,n;

    link_1(supply,receive):c;

    link_2(supply,got):d;

    endsets

    data:

    a=-6,-3.25,3.04,2.75,-4.06,-0.71,-5.21,-2.29,-6.58,-8.17,-1.92,-7.75,3.33,-6.79,-6.24,3.71,-7.63,-1.63,0.17,-0.17,-4.71,-6.21,-3.58,-3.75,9.42,

    1.25,1.33,4.2,5.71,-5.83,1.17,-1.29,5.38,12.38,9.42,-10.5,0.5,9.71;

    b=-2.96,-1.88,7.92,6.29,12.38,-7.08,2.29,0.38,-3.96,-8.71,15.75,-1.88,1.63,-7.04,-5.17,-5.29,-2.13,-4.58,6.83,0.46,-7.63,-7.46,-15.29,-14.46,

    8.13,6.04,-3.17,-2.5,1.21,-6.21,16.58,14.29,13.04,8.42,-3.71,-14.88,3.42,7.58;

    s=8,10,8,10,2,8,2,4,12,10,4,16,8,6,8,12,6.4,6,6,10,6,6,12,12,4,8,14,12,6,10,4,3.2,12,2,28,16,6,4;

    h=200;

    n=0.25;

    enddata

    min=@sum(link_1(m,i):c(m,i)*(x(i)-a(m)^2+(y(i)-b(m)^2)^(1/2)))+@sum(link_2(m,j):d(m,j)*((e(j)-a(m)^2+(f(j)-b(m)^2)^(1/2))));

    @for(supply(m):@sum(receive(i):c(m,i))+@sum(got(j):d(m,j)) =312.6;

    @for(receive(i):@sum(supply(m):c(m,i))