我打算进行一个优化,但我得到了一个错误,我找不到原因。编译器抱怨服务时间、启动限制和结束限制没有无效。特别是,编译器在约束TimeConstraint中抱怨服务时间‘’ORIGINS‘没有值。
有关的制约因素是:
subject to TimeConstraint {k in H}: sum{i in UNI, j in UNI} servicetime[i]*x[i,j,k] <= 1440; 其中:
set ORIGINS;
set DESTINATIONS;
set UNI;
param servicetime{UNI} integer > 0;
var x{UNI,UNI, H} binary;
param startlimit{UNI};
param endlimit{UNI};.dat文件是:
set ORIGINS := 1 2 3 4 5 6 7;
set DESTINATIONS := 8 9 10 11 12 13 14;
set UNI = ORIGINS union DESTINATIONS;
param: startlimit endlimit servicetime:=
1 0 1440 360
2 0 1440 360
3 0 1440 360
4 0 1440 360
5 0 1440 360
6 0 1440 120
7 0 1440 120
8 0 1440 360
9 0 1440 360
10 0 1440 360
11 0 1440 360
12 0 1440 360
13 0 1440 120
14 0 1440 120;我看不出这是怎么回事。在我看来这是准确的。希望有人能对此有所了解!致以敬意,
发布于 2014-10-14 14:55:49
AMPL数据格式不允许表达式,因此ORIGINS、union和DESTINATIONS按字面解释为字符串,而不是数据语句中的集合表达式ORIGINS union DESTINATIONS
set UNI = ORIGINS union DESTINATIONS;您可以通过初始化模型文件中声明中的集合来解决这个问题:
set ORIGINS;
set DESTINATIONS;
set UNI = ORIGINS union DESTINATIONS;
param servicetime{UNI} integer > 0;
...https://stackoverflow.com/questions/26299077
复制相似问题