LINGO里面的关于变量与下标重名的问题model: !求解围堵13条要道的方案;sets:s/1..20/;c/1..13/;links(s,c): dis, x;Endsets !数据的定义部分;data:dis = @FILE(C:\Program Files\MATLAB71\work\cumcm2011B\data.txt);enddata!目标函
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/28 10:47:53
LINGO里面的关于变量与下标重名的问题model: !求解围堵13条要道的方案;sets:s/1..20/;c/1..13/;links(s,c): dis, x;Endsets !数据的定义部分;data:dis = @FILE(C:\Program Files\MATLAB71\work\cumcm2011B\data.txt);enddata!目标函
LINGO里面的关于变量与下标重名的问题
model:
!求解围堵13条要道的方案;
sets:
s/1..20/;
c/1..13/;
links(s,c): dis, x;
Endsets
!数据的定义部分;
data:
dis = @FILE(C:\Program Files\MATLAB71\work\cumcm2011B\data.txt);
enddata
!目标函数;
min=@max(links(s,c):x(i,j)*dis(i,j));
运行到目标函数这里指出我的links(s,c)的s是变量与下标重名,但是links(s,c)不是定义好了么,求指导!
LINGO里面的关于变量与下标重名的问题model: !求解围堵13条要道的方案;sets:s/1..20/;c/1..13/;links(s,c): dis, x;Endsets !数据的定义部分;data:dis = @FILE(C:\Program Files\MATLAB71\work\cumcm2011B\data.txt);enddata!目标函
把links(s,c)改成links(i,j)试试
这里@max(links(i,j):x(i,j)*dis(i,j))是集合操作函数
表示对衍生集合links中的每个i,j(i=1,2,...,20;j=1,2,...,13)求表达式x(i,j)*dis(i,j)的值,然后找出最大值
i,j称为索引变量(index variables),可以看作矩阵的行标与列标,也可以看作循环参数
而之前定义的s与c为集合名,lingo不允许集合名作为索引变量名,否则会出语法错误
min=@max(links(i,j):x(i,j)*dis(i,j));也可简写为min=@max(links:x*dis);