首页
学习
活动
专区
圈层
工具
发布

AMPL:下标
EN

Stack Overflow用户
提问于 2014-10-15 11:39:10
回答 1查看 121关注 0票数 1

你好,各位乐观主义者!

我对以下约束有一些问题:

代码语言:javascript
复制
#The supply at node i equals what was present at the last time period + any new supply and      subtracted by what has been extracted from the node.    
subject to Constraint1 {i in I, t in T, c in C}:
    l[i,t-1,c] + splus[i,t] - sum{j in J, v in V, a in A} x[i,j,v,t,c,a]= l[i,t,c];

这自然导致这个约束在它第一次循环时提供错误,因为t-1没有定义(对于我来说,li,0,c没有定义。哪里

代码语言:javascript
复制
  var l{I,T,C} >= 0;    # Supply at supply node I in time period T for company C.
  param splus{I,T};     # Additional supply at i.
  var x{N,N,V,T,C,A} integer >= 0;  #Flow from some origin within N to a destination within N using vehicle V, in time T, for company C and product A.

集合T;(在.mod中)是定义为:

代码语言:javascript
复制
 set T := 1 2 3 4 5 6 7; in the .dat file

我试过这样做:

代码语言:javascript
复制
subject to Constraint1 {i in I, t in T: t >= 2, c in C}:
all else same

这给我带来了语法错误。我还尝试为所有可能的组合包括"let 101,1 := 0“,这使我产生了错误

代码语言:javascript
复制
  error processing var l[...]:
  no data for set I

我也试过

代码语言:javascript
复制
subject to Constraint1 {i in I, t in T, p in TT: p>t, c in C}:
   l[i,t,c] + splus[i,p] - sum{j in J, v in V, a in A} x[i,j,v,p,c,a]= l[i,p,c];

哪里

代码语言:javascript
复制
set TT := 2 3 4 5 6;

在.dat文件中(仅在.mod中设置TT;),这也会导致错误。有人知道怎么做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-15 17:40:02

解决这个问题的一种方法是在索引表达式的末尾指定条件t >= 2

代码语言:javascript
复制
subject to Constraint1 {i in I, t in T, c in C: t >= 2}:
  ...

有关索引表达式语法的更多详细信息,请参见A.3节索引表达式和下标

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26381629

复制
相关文章

相似问题

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