- 在线时间
- 1150 小时
- 最后登录
- 2017-1-14
- 注册时间
- 2013-1-3
- 听众数
- 97
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7367 点
- 威望
- 20 点
- 阅读权限
- 150
- 积分
- 3110
- 相册
- 0
- 日志
- 0
- 记录
- 2
- 帖子
- 1299
- 主题
- 21
- 精华
- 2
- 分享
- 0
- 好友
- 298
TA的每日心情 | 奋斗 2014-3-2 00:26 |
---|
签到天数: 243 天 [LV.8]以坛为家I
|
本帖最后由 wujianjack2 于 2013-7-20 11:06 编辑
如果没猜错,本例来自谢金星,薛毅老师编者的《优化建模与LINDO/LINGO软件》第95页至第98页
楼主给出的程序主要错误有:
1.DATA段没有以ENDDATA结尾;
2.目标函数应该为:[OBJ] MIN=@SUM(LINK(I,J):C(I,J)*((X(J)-A(I))^2+(Y(J)-B(I))^2)^(1/2));楼主最后一个括号忘了写;
3.倒数第二个@FOR语句中,应该为C(J,I)而不是C(I,J)。
完整程序如下:
MODEL:
TITLE LOCATION PROBLEM;
SETS:
DEMAND/1..6/:A,B,D;
SUPPLY/1..2/:X,Y,E;
LINK(DEMAND,SUPPLY):C;
ENDSETS
DATA:
A=1.25,8.75,0.5,5.75,3,7.25;
B=1.25,0.75,4.75,5,6.5,7.75;
D=3,5,4,7,6,11;
E=20,20;
ENDDATA
INIT:
X,Y=5,1,2,7;
ENDINIT
[OBJ] MIN=@SUM(LINK(I,J):C(I,J)*((X(J)-A(I))^2+(Y(J)-B(I))^2)^(1/2));
@FOR(DEMAND(I):[DEMAND_CON] @SUM(SUPPLY(J):C(I,J))=D(I));
@FOR(SUPPLY(I):[SUPPLY_CON] @SUM(DEMAND(J):C(J,I))<=E(I));
@FOR(SUPPLY:@FREE(X);@FREE(Y););
END
LINGO 11 运行结果为(仅给出重要信息),虽说是局部最优,但尝试用Global Solver求解最好解是一样的:
Local optimal solution found.
Objective value: 85.26604
Infeasibilities: 0.000000
Total solver iterations: 68
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
如果楼主不满意,另一种可行的解答见此帖:http://www.madio.net/thread-190111-1-1.html 中的第五楼我的回复,这是我就这一问题写的另一求解方式,希望可以帮助你,如果还有问题,欢迎交流! |
|