설명
이 모델은 EMP의 분리를 사용하여 작업장 일정 문제를 해결합니다. 재구성. 처리해야 하는 일련의 작업(j)이 있는 문제 일련의 단계로. 그러나 모든 작업에 모든 단계가 필요한 것은 아닙니다. 제로 기다림 전송 정책은 단계 사이에서 가정됩니다(일단 작업이 시작되면 전송할 수 없음). 중단됩니다). 실행 가능한 솔루션을 얻으려면 모든 것을 제거해야 합니다. 직업 간의 충돌. 어떤 단계에서도 두 가지 작업을 수행할 필요가 없습니다. 언제든지. 목표는 완료 시간인 임시 기간을 최소화하는 것입니다. 모든 직업. 이 모델에는 재설정할 수 있는 데이터 세트 1, 6, 9가 포함되어 있습니다. 예: 게임 메가 슬롯 --example=6 참고자료: Raman & Grossmann, 컴퓨터 및 화학 공학 18, 7, p.563-578, 1994. Aldo Vecchietti, LogMIP 사용자 매뉴얼,http://www.logmip.ceride.gov.ar/2007 기고자: Alex Meeraus, 2009년 1월
소형 모델 유형 :논리적
카테고리 : 메가 슬롯 EMP 라이브러리
메인 파일 : 메가 슬롯gms
$title 세 개의 데이터 세트를 사용한 작업 예약 - 임시 기간 최소화(메가 슬롯SEQ=15)
$onText
이 모델은 EMP의 분리를 사용하여 작업장 일정 문제를 해결합니다.
재구성. 처리해야 하는 일련의 작업(j)이 있는 문제
일련의 단계로. 그러나 모든 작업에 모든 단계가 필요한 것은 아닙니다. 제로 기다림
전송 정책은 단계 사이에서 가정됩니다(일단 작업이 시작되면 전송할 수 없음).
중단됩니다). 실행 가능한 솔루션을 얻으려면 모든 것을 제거해야 합니다.
직업 간의 충돌. 어떤 단계에서도 두 가지 작업을 수행할 필요가 없습니다.
언제든지. 목표는 완료 시간인 임시 기간을 최소화하는 것입니다.
모든 직업.
이 모델에는 재설정할 수 있는 데이터 세트 1, 6, 9가 포함되어 있습니다. 예:
게임 메가 슬롯 --example=6
참고자료:
Raman & Grossmann, 컴퓨터 및 화학 공학 18, 7, p.563-578, 1994.
Aldo Vecchietti, LogMIP 사용자 매뉴얼, http://www.logmip.ceride.gov.ar/ 2007
기고자: Alex Meeraus, 2009년 1월
$offText
$예제를 설정하지 않은 경우 $ 예 1 설정
j개의 작업을 설정합니다.
단계
lt(j,j) 위쪽 삼각형
별칭(j,jj),(s,ss);
매개변수 w(j,jj) 최대 쌍별 대기 시간
pt(j) 총 처리 시간;
변수 t 완료 시간
x(j) 작업 시작 시간
양의 변수 x; 이진변수 y;
방정식 comp(j) 작업 완료 시간
seq(j,jj) 작업 순서 j 이전 jj ;
comp(j)..t =g= x(j) + pt(j);
seq(j,jj)$(not sameas(j,jj)).. x(j) + w(j,jj) =l= x(jj);
모델 m / 모두 /;
* 이제 다른 예 1,6 또는 9에 대해서만 데이터를 입력합니다.
$ifThen %example% == 1
* 1~3개 직업, 3단계 예시 데이터
j개 작업 설정 / A, B, C /, s개 단계 / 1*3 /
테이블 p(j,s) 처리 시간
1 2 3
5 3
비 3 2
C 2 4
스칼라 optval / 11 /;
$elseIf %example% == 6
* 6~7개 직업, 5단계 예시 데이터
j개 작업 설정 / A, B, C, D, E, F, G /, s개 단계 / 1*5 /
테이블 p(j,s) 처리 시간
1 2 3 4 5
3 5 2
ㄴ 3 4 3
ㄷ 6 3 6
디 8 5 1
전자 4 6 2
여 2 5 7
글 8 5 4
스칼라 optval / 36 /;
$elseIf %example% == 9
* 9~5개 직업, 5단계 예시 데이터
j개 작업 설정 / A, B, C, D, E /, s개 단계 / 1*5 /
테이블 p(j,s) 처리 시간
1 2 3 4 5
2 6 5 7 3
ㄴ 5 2 4 5 4
씨 4 8 2 8 3
디 3 3 5 6 4
전자 5 4 3 5 5
스칼라 optval / 46 /;
$else
$abort '예는 1,6 또는 9여야 하지만 --example=%example%'입니다.
$endIf
* 완전한 데이터 준비
매개변수 c(j,s) 단계 완료 시간;
lt(j,jj) = ord(j) < ord(jj);
c(j,s) = sum(ss$(ord(ss)<=ord(s)), p(j,ss));
w(j,jj) = smax(s, c(j,s) - c(jj,s-1));
pt(j) = 합(s, p(j,s));
c,w,pt를 표시합니다.
파일 emp / '%emp.info%' /; put emp '* 문제 %gams.i%';
루프(lt(j,jj),
put / 'disjunction *' seq(j,jj) 'else' seq(jj,j));
닫다;
옵션 limcol=0,limrow=0,optcr=0;
t를 최소화하는 EMP를 사용하여 m을 해결합니다.
abort$(abs(m.objval-optval) > 1e-6) '올바른 해결책을 얻지 못했습니다.';