WonderForYou 发表于 2009-8-17 18:40

关于Lingo的一个问题

本帖最后由 WonderForYou 于 2009-8-18 13:42 编辑

设定变量成集合以后为什么不出结果?

直接用变量出结果
MODEL:
    MAX= 4800 * T1 + 5600 * T2 - 10000 * X1 - 8000 * X2 - 6000 * X3 ;
    ( X1 - 500 ) * X2 = 0 ;
    ( X2 - 500 ) * X3 = 0 ;
    X1 <= 500 ;
    X2 <= 500 ;
    X3 <= 500 ;
    - X1 - X2 - X3 + A1 + A2 <= 500 ;
    - T1 - T2 + X1 + X2 + X3 >= - 1500 ;
    A1 - 0.5 * T1 >= 0 ;
    A2 - 0.6 * T2 >= 0 ;
  END

用集合不出结果
  MODEL:
    MAX= - 10000 * X_1 - 8000 * X_2 - 6000 * X_3 + 4800 * T_1 + 5600 *
   T_2 ;
    ( X_1 - 500 ) * X_2 = 0 ;
    ( X_2 - 500 ) * X_3 = 0 ;
    X_1 <= 500 ;
    X_2 <= 500 ;
    X_3 <= 500 ;
    - X_1 - X_2 - X_3 + A_1 + A_2 <= 500 ;
    X_1 + X_2 + X_3 - T_1 - T_2 >= - 1500 ;
    A_1 - 0.5 * T_1 >= 0 ;
    A_2 - 0.6 * T_2 >= 0 ;
  END

源程序1:
max=4800*t1+5600*t2-10000*x1-8000*x2-6000*x3;
(x1-500)*x2=0;
(x2-500)*x3=0;
x1<=500;
x2<=500;
x3<=500;
a1+a2<=x1+x2+x3+500;
x1+x2+x3+1500>=t1+t2;
2*a1>=t1;
5*a2>=3*t2;
end

源程序2:
sets:
o/1..2/:p,a,t,r;
q/1..3/:p1,x;
endsets

data:
r=0.5 0.6;
p=4800 5600;
p1=10000 8000 6000;
enddata

max=@sum(o(i):p(i)*t(i))-@sum(q(i):x(i)*p1(i));
(x(1)-500)*x(2)=0;
(x(2)-500)*x(3)=0;
@for(q(i):x(i)<=500);
@sum(o(i):a(i))<=@sum(q(i):x(i))+500;
@sum(q(i):x(i))+1500>=@sum(o(i):t(i));
@for(o(i):a(i)>=t(i)*r(i));
end

为什么?

xczxtxy 发表于 2009-8-17 21:15

???????????????????

gaovin 发表于 2009-8-19 19:29

我是了一下,求局部最优解时有问题,可能是两种写法的内部求解机构或顺序有变化。但求全局最优解时时没有问题的。

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

????????????????????????
页: [1]
查看完整版本: 关于Lingo的一个问题