LINGO代码提示错误:Invalid input. A syntax error has occurred 程序如下:
model:sets:spot/1..10/:u;%对必经的10个景点赋予序号link(spot,spot):%景点之间通过边连接dist,%赋予距离矩阵,必须是对称的x...
model:
sets:
spot/1..10/:u; %对必经的10个景点赋予序号
link(spot,spot): %景点之间通过边连接
dist, %赋予距离矩阵,必须是对称的
x;
endsets
n=@size(spot); %根据距离矩阵的维度赋予n值
data:
dist= %输出距离矩阵
0 300 0 0 350 0 0 0 0 250
300 0 300 0 350 0 0 0 0 0
0 300 0 450 500 0 0 0 0 0
0 0 450 0 0 500 0 0 0 0
350 350 500 0 0 0 550 0 450 0
0 0 0 500 0 0 650 0 0 0
0 0 0 0 550 650 0 400 0 0
0 0 0 0 0 0 400 0 450 0
0 0 0 0 450 0 0 450 0 350
250 0 0 0 0 0 0 0 350 0
;
enddata
min=@sum(l9ink:dist*x);%目标函数:总路程最短
@FOR(spot(K):
@sum(spot(I)|I #ne# K:x(I,K))=1;%条件:只有唯一的一条边进入景点K
@sum(spot(J)|J #ne# K:x(K,J))=1;%只有唯一的一条边离开景点K
);
@for(spot(I)|I #gt# 1:
@for(spot(J)|J #gt# 1 #and# I #ne# J:
u(I)~u(J)+n*x(I,J)<=n~1);%添加条件3保证不存在子圈
);
@for(spot(I)|I #gt# 1:u(I)<=n~2); %限制u的范围以加速模型的求解
@for(link:@bin(x)); %定义x为0~1的变量
end 展开
sets:
spot/1..10/:u; %对必经的10个景点赋予序号
link(spot,spot): %景点之间通过边连接
dist, %赋予距离矩阵,必须是对称的
x;
endsets
n=@size(spot); %根据距离矩阵的维度赋予n值
data:
dist= %输出距离矩阵
0 300 0 0 350 0 0 0 0 250
300 0 300 0 350 0 0 0 0 0
0 300 0 450 500 0 0 0 0 0
0 0 450 0 0 500 0 0 0 0
350 350 500 0 0 0 550 0 450 0
0 0 0 500 0 0 650 0 0 0
0 0 0 0 550 650 0 400 0 0
0 0 0 0 0 0 400 0 450 0
0 0 0 0 450 0 0 450 0 350
250 0 0 0 0 0 0 0 350 0
;
enddata
min=@sum(l9ink:dist*x);%目标函数:总路程最短
@FOR(spot(K):
@sum(spot(I)|I #ne# K:x(I,K))=1;%条件:只有唯一的一条边进入景点K
@sum(spot(J)|J #ne# K:x(K,J))=1;%只有唯一的一条边离开景点K
);
@for(spot(I)|I #gt# 1:
@for(spot(J)|J #gt# 1 #and# I #ne# J:
u(I)~u(J)+n*x(I,J)<=n~1);%添加条件3保证不存在子圈
);
@for(spot(I)|I #gt# 1:u(I)<=n~2); %限制u的范围以加速模型的求解
@for(link:@bin(x)); %定义x为0~1的变量
end 展开
展开全部
给你改好了。很多问题
Lingo 注释用, !注释内容;,而百分号是 matlab 的注释
左括号和右括号出现了中文的。
中间还用到了波浪线,应该是减号?
model:
sets:
spot/1..10/:u; !对必经的10个景点赋予序号;
link(spot,spot): !景点之间通过边连接;
dist, !赋予距离矩阵,必须是对称的;
x;
endsets
data:
dist= !输出距离矩阵;
0 300 0 0 350 0 0 0 0 250
300 0 300 0 350 0 0 0 0 0
0 300 0 450 500 0 0 0 0 0
0 0 450 0 0 500 0 0 0 0
350 350 500 0 0 0 550 0 450 0
0 0 0 500 0 0 650 0 0 0
0 0 0 0 550 650 0 400 0 0
0 0 0 0 0 0 400 0 450 0
0 0 0 0 450 0 0 450 0 350
250 0 0 0 0 0 0 0 350 0
;
enddata
n=@size(spot); !根据距离矩阵的维度赋予n值;
min=@sum(link:dist*x); !目标函数:总路程最短;
@FOR(spot(K):
@sum(spot(I)|I #ne# K:x(I,K))=1; !条件:只有唯一的一条边进入景点K;
@sum(spot(J)|J #ne# K:x(K,J))=1; !只有唯一的一条边离开景点K;
);
@for(spot(I)|I #gt# 1:
@for(spot(J)|J #gt# 1 #and# I #ne# J:
u(I)-u(J)+n*x(I,J)<=n-1); !添加条件3保证不存在子圈;
);
@for(spot(I)|I #gt# 1:u(I)<=n-2); !限制u的范围以加速模型的求解;
@for(link:@bin(x)); !定义x为0~1的变量;
end
结果,
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询