IBM ILOG CPLEX中Size Limit Exceeded错误求助
IBM ILOG CPLEX调度问题遇“Size Limit Exceeded”错误求助
我正在用IBM ILOG CPLEX求解包含资源限制、任务依赖的调度问题,代码无语法错误,但持续出现“Size Limit Exceeded”错误,导致程序无法正常运行。
问题背景:我需要调度一组带多种约束的任务,已按照CPLEX文档规范定义变量、目标函数及约束,且问题规模在我认知里并未超出CPLEX的处理能力。我尝试了自身掌握的CPLEX相关调整方法,都没找到解决办法。
调度模型代码
int n=...; int m=...; //resources range i=0..n-1; range j=0..n-1; range t=0..n-1; range k=0..m-1; range z=0..n-1; int B[k]= ...; //Capacities int p[i]= ...; //activity duratio int ES[i]=...; int LS[i]=...; int b[i][k]=...; range A=0..n-1; //activities range R=0..m-1; //Resources range A_plus1 = 0..n-1; // Include n+1 in the range range H= 0..LS[n-1]; //Time horizon tuple MyTuple { int i; int j; } {MyTuple} E = ...; // Use your actual data here // int V=asSet(1..n); dvar boolean x[i][t]; minimize sum(i in 0..n-1) sum(t in ES[i]..LS[i]) t*x[n-1][t]; subject to { forall(e in E) sum(t in ES[e.j]..LS[e.j])t*x[e.j][t]>= sum(t in ES[e.i]..LS[e.i])t*x[e.i][t]+p[e.i]; forall(t in H, k in R) sum(i in 0..n-1) b[i][k] * sum(z in maxl(ES[i],t - p[i] + 1) .. minl(LS[i], t)) x[i][z] <= B[k]; forall(i in A_plus1) sum(t in ES[i]..LS[i])x[i][t]==1; x[0][0]==1; //forall(i in A union {n+1}) //forall(t in {ES[i],LS[i]}) forall(i in A_plus1) forall(t in H : !(t in {ES[i], LS[i]})) x[i][t]==0; forall(i in A_plus1) forall(t in H : (t >= ES[i] && t<= LS[i])) x[i][t] == 1; }
数据文件
n = 32; m = 4; Activity durations p = [0, 6, 1, 4, 5, 7, 3, 5, 6, 9, 9, 5, 7, 4, 10, 10, 5, 10, 6, 10, 7, 9, 10, 1, 6, 6, 9, 4, 4, 7, 1,0 ]; Resource availability B = [10, 10, 10, 10]; Resource requirements b = [ [0, 0, 0, 0], [1, 1, 1,0], [6,0, 2, 1], [0,1, 4,3], [2, 6, 2, 0], [5, 3, 0, 5], [6, 4, 4, 0], [0, 6, 5, 2], [2, 6, 0, 5], [6, 6, 6, 0], [4, 0, 6, 5], [4, 5, 4, 0], [2, 3, 0, 3], [0, 3, 2, 3], [5, 3, 4, 0], [2, 5, 4, 0], [5, 4, 3, 0], [4, 0, 4, 3], [7, 1, 0, 4], [0, 3, 4, 7], [7, 4, 4, 0], [0, 4, 6, 7], [2, 7, 4, 0], [0, 7, 5, 1], [2, 0, 4, 3], [8, 0, 4, 5], [0, 2, 3, 5], [2, 6, 3, 0], [3, 0, 4, 7], [1, 0, 7, 3], [6, 2, 5, 0], [0, 0, 0, 0] ]; Include data for all activities and resources here Precedence constraints E = { <0, 2>,<0, 4>, <0, 5>, <0, 6>, <0, 7>,<0,16>, <0, 17>, <0, 18>, <0, 19>, <0, 20>, <0, 21>, <0, 22>, <0, 23>, <0, 24>, <0, 25>, <0, 26>, <0, 27>, <0, 28>, <0, 29>, <0, 30>, <0, 31>, <1, 14>, <1, 2>, <2, 8>, <2, 7>, <3, 13>, <3, 12>, <4, 11>, <4, 7>, <5, 10>, <6, 9>, <7, 31>, <8, 31>, <9, 31>, <10, 31>, <11, 31>, <12, 31>, <13, 31>, <14, 31>, <15, 31>, <16, 31>, <17, 31>, <18, 31>, <19, 31>, <20, 31>, <21, 31>, <22, 31>, <23, 31>, <24, 31>, <25, 31>, <26, 31>, <27, 31>, <28, 31>, <29, 31>, <30, 31>, }; Earliest start times ES = [0, 0, 0, 6, 0, 0, 0, 0, 5, 1, 3, 7, 5, 10, 10, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0]; Latest start times LS = [0, 0, 10, 6, 8, 8, 8, 15, 14, 11, 11, 15, 13, 16, 10, 10, 15, 10, 0, 10, 13, 11, 10, 10, 19, 14, 14, 11, 16, 16, 19, 20];
内容的提问来源于stack exchange,提问作者hyyperi
相关产品推荐
相关产品推荐

