LINGO编程问题,求大神帮解答~~~
SETS:DEMAND/1..6/:A,B,D;
SUPPLY/1..2/:X,Y,E;
LINK(DEMAND,SUPPLY):C;
ENDSETS
DATA:
!LOCATIONS FOR THE DEMAND;
A=1.25,8.75,0.5,5.75,3,7.25;
B=1.25,0.75,4.75,5,6.5,7.75,
!QUANTITIES OF THE SUPPLY AND DEMAND ;
D=3,5,4,7,6,11;E=20,20;
ENDDATA
INIT:
!INITIAL LOCATIONS FOR THE SUPPLY;
X,Y=5,1,2,7;
ENDINIT
!OBJECTIVE FUNCTION;
MIN=@SUM[LINK(I,J):C(I,J)*{([X(J)-A(I)^2+Y(J)-B(I)^2)^(1/2)};
!DEMAND CONSTRAINTS;
@FOR(DEMAND(I): @SUM(SUPPLY(J):C(I,J)=D););
!SUPPLY CONSTRAINTS;
@FOR(SUPPLY(I): @SUM(DEMAND(J):C(J,I)<=E(I););
@FOR(SUPPLY:@FREE(Y););
end
上面就是我在LINGO中写的解决一个最优化问题的程序,但是我每次运行的时候都会出现错误提醒如下:
Invalid number of initialization values in a DATA /INIT/CALC
statement. The required number of values is: 6.
13] D=3,5,4,7,6,11;E=20,20;
^
我真的不知道错误是出在了哪里啊啊啊!!!请大神帮我解答一下吧~~超级感谢~~
本帖最后由 袁海亮 于 2013-8-31 00:32 编辑
额 一不小心打错了。。。。
程序的倒数第二行应该是:
@FOR(SUPPLY:@FREE(Y););
发帖的时候不知道怎么不小心改成了那个表情了{:soso_e127:}
请各位懂得大神帮忙解答下吧 先在这谢过了~~ 我明明想打的是“@”啊 怎么都是出现那个表情替代啊。。。。 换个输入法吧。。 老肖 发表于 2013-8-30 15:33 static/image/common/back.gif
换个输入法吧。。
是输入法的问题吗?我在LINGO里面输的时候是@的,不是表情 但是就是会出现上面的那个错误提示~不知道到底是怎么了 X,Y=5,1,2,7;
这样写合法吗? SETS:
DEMAND/1..6/:A,B,D;
SUPPLY/1..2/:X,Y,E;
LINK(DEMAND,SUPPLY):C;
ENDSETS
DATA:
!LOCATIONS FOR THE DEMAND;
A=1.25,8.75,0.5,5.75,3,7.25;
B=1.25,0.75,4.75,5,6.5,7.75;
!QUANTITIES OF THE SUPPLY AND DEMAND ;
D=3,5,4,7,6,11;
E=20,20;
ENDDATA
INIT:
!INITIAL LOCATIONS FOR THE SUPPLY;
X=5,1;
Y=2,7;
ENDINIT
!OBJECTIVE FUNCTION;
MIN=@SUM(LINK(I,J):C(I,J)*((X(J)-A(I)^2+Y(J)-B(I)^2)^(1/2)));
!DEMAND CONSTRAINTS;
@FOR(DEMAND(I): @SUM(SUPPLY(J):C(I,J))=D);
!SUPPLY CONSTRAINTS;
@FOR(SUPPLY(I): @SUM(DEMAND(J):C(J,I))<=E(I));
@FOR(SUPPLY:@FREE(Y));
end我把语法错误给你改了!
magic2728 发表于 2013-8-31 01:28 static/image/common/back.gif
X,Y=5,1,2,7;
这样写合法吗?
这样写是可以的吧 。。。。 等同于X=5,2;Y=1,7 难道是错的?我看到LINGO的教程里面是这么说的:L 本帖最后由 wujianjack2 于 2013-8-31 10:23 编辑
楼主你好!很抱歉昨天没有看到你的问题,这里我对这个问题做出一个回答:
正确的代码如下:
MODEL:
SETS:
DEMAND/1..6/:A,B,D;
SUPPLY/1..2/:X,Y,E;
LINK(DEMAND,SUPPLY):C;
ENDSETS
DATA:
!LOCATIONS FOR THE DEMAND;
A=1.25,8.75,0.5,5.75,3,7.25;
B=1.25,0.75,4.75,5,6.5,7.75;
!QUANTITIES OF THE SUPPLY AND DEMAND;
D=3,5,4,7,6,11;E=20,20;
ENDDATA
INIT:
!INITIAL LOCATIONS FOR THE SUPPLY;
X,Y=5,1,2,7;
ENDINIT
!OBJECTIVE FUNCTION;
MIN=@SUM(LINK(I,J):C(I,J)*((X(J)-A(I))^2+(Y(J)-B(I))^2)^(1/2));
!DEMAND CONSTRAINTS;
@FOR(DEMAND(I): @SUM(SUPPLY(J):C(I,J))=D(I));
!SUPPLY CONSTRAINTS;
@FOR(SUPPLY(I): @SUM(DEMAND(J):C(J,I))<=E(I));
@FOR(SUPPLY:@FREE(Y);@FREE(X));
END
在LINGO 11上运行得到如下结果:
Local optimal solution found.
Objective value: 85.26604
Infeasibilities: 0.000000
Total solver iterations: 68
Variable Value Reduced Cost
X( 1) 3.254883 0.000000
X( 2) 7.250000 -0.1853513E-05
Y( 1) 5.652332 0.000000
Y( 2) 7.750000 -0.1114154E-05
或许楼主已经解决了这个问题,但是,我想再给出我的建议:
一.本问题应该来自谢金星的《优化建模与LINDO/LINGO软件》,希望楼主在输入代码时一定要仔细,注意括号的匹配;
二.LINGO中的语句均以圆括号开始结束,暂时不存在花括号与方括号,数据输入以分号结束,切记!
三.本程序可以对X,Y作一个范围限定,以减少程序的搜索空间,或许可以改善下求解步骤;
四.madio站长和magic2728超级版主很辛苦,他们对于这个问题的回答或许不如楼主意,madio站长的程序的目标函数或许不是楼主想要的,但其余语法是没有问题的。至于赋初值,你的做法是可以的,可能magic2728看错了,抱歉!希望你能够理解并继续支持我们,再次表示感谢!
以上是我个人的一些建议,仅供楼主参考,谢谢!
madio 发表于 2013-8-31 08:28 static/image/common/back.gif
我把语法错误给你改了!
恩恩 超级感谢啊~ 但是我刚把代码复制试了下还是提示说有错误。。。。提示如下:
Invalid input.A syntax error has occurred
SETS:
DEMAND/1..6/:A,B,D;
SUPPLY ^
真的是不懂问题出在哪啊:'(
页:
[1]
2