empdisj1.gms : EMP 분리 테스트 - makespan 최소화

설명

이 모델은 다음의 변형입니다.
Raman & Grossmann, 컴퓨터 및 화학 공학 18, 7, p.563-578, 1994.

기여자: Jan-H. Jagla와 Alex Meeraus, 2009년 1월

소형 모델 유형 :무료 슬롯 게임


카테고리 : 무료 슬롯 게임 테스트 라이브러리


메인 파일 : empdisj1.gms

$title EMP 분리 테스트 - makespan 최소화(EMPDISJ1,SEQ=429)

$onText
이 모델은
Raman & Grossmann, 컴퓨터 및 화학 공학 18, 7, p.563-578, 1994.

기여자: Jan-H. Jagla와 Alex Meeraus, 2009년 1월
$offText

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~3개 직업, 3단계 예시 데이터

j개 작업 설정 / A, B, C /, s개 단계 / 1*3 /
테이블 p(j,s) 처리 시간
    1 2 3
 5 3
 비 3 2
 C 2 4

스칼라 optval / 11 /;

* 완전한 데이터 준비
매개변수 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));

파일 emp / "%emp.info%" /; put emp '* 문제 %무료 슬롯 게임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) '올바른 해결책을 얻지 못했습니다.';

*동일한 테스트를 다시 수행하지만 키워드 분리를 한 번만 사용합니다.
put emp '* 문제 %무료 슬롯 게임i%' / 'disjunction';
루프(lt(j,jj),
   put / ' *' seq(j,jj) 'else' seq(jj,j));
닫다;

옵션 limcol=0,limrow=0,optcr=0;

t를 최소화하는 EMP를 사용하여 m을 해결합니다.
abort$(abs(m.objval-optval) > 1e-6) '올바른 해결책을 얻지 못했습니다.';