作业帮 > 数学 > 作业

lingo语句 model:sets:cities/s,a1,a2,a3,b1,b2,c1,c2,t/:l;roads(

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/08/27 03:55:02
lingo语句
model:
sets:
cities/s,a1,a2,a3,b1,b2,c1,c2,t/:l;
roads(cities,cities)/
s,a1 s,a2 s,a3
a1,b1 a1,b2 a2,b1 a2,b2 a3,b1 a3,b2
b1,c1 b1,c2 b2,c1 b2,c2
c1,t c2,t/:d;
endsets
data:
d=6 3 3
6 5 8 6 7 4
6 7 8 9
5 6;
l=0,;
enddata
@for(cities(i)|i#gt#1:
l(i)=@min(roads(j,i):l(j)+d(j,i)));
end
语句是这样的
@for(cities(i)|i#gt#1:
l(i)=@min(roads(j,i):l(j)+d(j,i)));
这句话的含义是什么.为什么是roads(j,i) 是在看不懂这句话的含义
这句的意思实际上是说 对于除了出发点以外的点 到点i的最短距离是 对于所有点j 到点j的最短距离和ij间距离和的最小值
这里实际上需要对j所对应的集运用函数min
你可以把@for分出来看 比如说给定i=2的话 那么就是l(2)= @min(roads(j,2):l(j)+d(j,2));
这样可能会清楚一点
更准确的表达应该是 @for(cities(i)|i#gt#1:
l(i)=@min(cities(j)|@in(roads,j,i):l(j)+d(j,i)));
再问: 为什么是roads(j,i) 而不是roads(i,j)呢 都是表示城市 i j之间的距离
再答: 那你要注意下标顺序啊 你自己针对i=2的情况下写一下看你写的下标j是在前面还是在后面 这个不能乱写的