배 문제 endbefore 에서 시작 CPLEX

0

질문

내가 노력하고 추가 Endbeforestartconstraint 내 contrained 프로그래밍 문제입니다. 그러나 나는 오류 메시지가 나의 끝 beforestart 지 않은 배열 형식입니다. 내가 이해하지 못하는 이 나가 거의 복사한 제약 조건과 데이터 sched_seq 예 CPLEX,나는 단지 그것을 변경하는 정수입니다.

내가 무엇을 하려고 달성하 제약 조건이 작업 3 고 작업 1 기 전에 수행하는 작업을 2 시작됩니다.

어떻게 해결할 수 있는 배열에 대한 오류가 이러한 제약 조건?

찾아주세요 아래의 관련 부분을 내 코드

tuple Precedence {int pre;int post;};

{Precedence} Precedences = {<3,2>,<1,2>};

dvar interval task[j in Jobs] in release..due;
dvar interval opttask[j in Jobs][m in Machines] optional size duration[j][m];

dvar sequence tool[m in Machines] in all(j in Jobs) opttask[j][m]
dexpr int makespan = max(j in Jobs, m in Machines)(endOf(opttask[j][m]));
minimize makespan;
 
subject to {
  // Each job needs one unary resource of the alternative set s (28)
  forall(j in Jobs){
    alternative(task[j], all(m in Machines) opttask[j][m]);
     
    }     
  // No overlap on machines
  forall(j in Jobs)
    forall(p in Precedences)
    endBeforeStart(opttask[j][p.pre],opttask[j][p.post]);
   
   forall(m in Machines){
     noOverlap(tool[m],transitionTimes);
       }     
    
};

execute {
  writeln(task);

dat.

nbMachines = 2;
nbJobs = 3;


duration = [
        [5,6], 
        [4,4],
        [5,8]
            ];

release = 1;

due = 30;
2

최고의 응답

1

거기에 몇 가지 오류에 당신의 모형,범위에 또는에 거꾸로 인덱스입니다. 또한,다음 시간,하시기 바랍 완료 프로그램으로 문제를 보여주는,단지 부분 중 하나,이것은 당신을 도울 수 있을 얻을 더 빨리 답변이 있습니다. 수정된 프로그램:

using CP;

int nbMachines = 2;
int nbJobs = 3;


range Machines = 0..nbMachines-1;
range Jobs = 0..nbJobs-1;

int duration[Jobs][Machines] = [
        [5,6], 
        [4,4],
        [5,8]
            ];

            
int release = 1;
int due = 30;

tuple Precedence {int pre;int post;};

{Precedence} Precedences = {<2,1>,<0,1>};

dvar interval task[j in Jobs] in release..due;
dvar interval opttask[j in Jobs][m in Machines] optional size duration[j][m];

dvar sequence tool[m in Machines] in all(j in Jobs) opttask[j][m];

dexpr int makespan = max(j in Jobs, m in Machines)(endOf(opttask[j][m]));
minimize makespan;
 
subject to {
  // Each job needs one unary resource of the alternative set s (28)
  forall(j in Jobs){
    alternative(task[j], all(m in Machines) opttask[j][m]);
     
    }     
  // No overlap on machines
  forall(m in Machines)
    forall(p in Precedences)
    endBeforeStart(opttask[p.pre][m],opttask[p.post][m]);
};

execute {
  writeln(task);
  }
2021-11-26 11:06:37
0

당신이해야에서 값 p.사전 또는 p.게시 외부에 있는 배열 색인이 범위.

2021-11-22 13:52:49

안녕@rdu,을 추가했습니다. 파일이 사용됩니다. 희망이 그것을 좀 더 명확하게 당신
Willem B

내가 이해하지 못하는 값이 어떻게 p.사전 또는 p.게시할 수 있습 밖에서 배열 색인으로 그들은 단순히 나타내는 범위 내에서 1..nbjobs. 배열의 크기보다 우선으로 가정에서 나타내는 값을 전하고 하나의 값을 나타내는 포스트.
Willem B

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................