首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AMPL:无效下标

AMPL:无效下标
EN

Stack Overflow用户
提问于 2014-10-10 12:07:02
回答 1查看 3.5K关注 0票数 2

我打算进行一个优化,但我得到了一个错误,我找不到原因。编译器抱怨服务时间、启动限制和结束限制没有无效。特别是,编译器在约束TimeConstraint中抱怨服务时间‘’ORIGINS‘没有值。

有关的制约因素是:

代码语言:javascript
复制
subject to TimeConstraint {k in H}: sum{i in UNI, j in UNI} servicetime[i]*x[i,j,k] <= 1440; 

其中:

代码语言:javascript
复制
set ORIGINS;
set DESTINATIONS;
set UNI;
param servicetime{UNI} integer > 0;
var x{UNI,UNI, H} binary;
param startlimit{UNI};
param endlimit{UNI};

.dat文件是:

代码语言:javascript
复制
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;

我看不出这是怎么回事。在我看来这是准确的。希望有人能对此有所了解!致以敬意,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-14 14:55:49

AMPL数据格式不允许表达式,因此ORIGINSunionDESTINATIONS按字面解释为字符串,而不是数据语句中的集合表达式ORIGINS union DESTINATIONS

代码语言:javascript
复制
set UNI = ORIGINS union DESTINATIONS;

您可以通过初始化模型文件中声明中的集合来解决这个问题:

代码语言:javascript
复制
set ORIGINS;
set DESTINATIONS;
set UNI = ORIGINS union DESTINATIONS;
param servicetime{UNI} integer > 0;
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26299077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档