数学建模社区-数学中国
标题:
程序出错了,invalid input . A syntax error has occurred
[打印本页]
作者:
Rain的雨
时间:
2013-7-16 20:27
标题:
程序出错了,invalid input . A syntax error has occurred
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;
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(j))^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(i,j))<=e(i););
@for(supply:@free(x);@free(y););
end
作者:
Rain的雨
时间:
2013-7-16 20:29
结果出现了invalid input . A syntax error has occurred 15] init
作者:
wujianjack2
时间:
2013-7-16 21:22
本帖最后由 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
中的第五楼我的回复,这是我就这一问题写的另一求解方式,希望可以帮助你,如果还有问题,欢迎交流!
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5