jit.gms : Just-in-Time Flowshop 설계

설명

이 JIT(Just-In-Time) 플로우샵 문제는 P 제품과 관련이 있습니다.
S 단계. 각 단계에는 다음을 수행하는 동일한 장비가 포함됩니다.
다른 제품에 대한 동일한 유형의 작업. 목표는
총 장비 관련 비용을 최소화합니다.

소형 모델 유형 :MINLP


카테고리 : 무료 슬롯 게임 모델 라이브러리


메인 파일 : jit.gms

$title JIT Flowshops 설계(JIT,SEQ=250)

$onText
이 JIT Flowshop 문제에는 P 제품과 관련된 문제가 있습니다.
S 단계. 각 단계에는 다음을 수행하는 동일한 장비가 포함됩니다.
다른 제품에 대한 동일한 유형의 작업. 목표는
전체 장비 관련 비용을 최소화합니다.

Gunasekaran, A, Goyal, SK, Martikainen T 및 Yli-Olli, P,
적시 제조 시스템의 장비 선택 문제.
운영연구학회지 44(1993), 345-353

구티에레즈(RA) 및 사히니디스(N, A)
풀링 문제에 대한 라그랑주 접근법.
국제J생산연구 34(1996), 797-818.

키워드: 혼합 정수 비선형 프로그래밍, 장비 선택, 적시
          제조, 용량 계획
$offText

세트
   p '제품'
   '단계';

매개변수
   alpha(p,s) '처리 비용'
   beta(p,s) '생산 불균형 비용'
   델타(p) '수요'
   mu(s) '기계 비용'
   M '투자 가능한 최대 금액'
   pi(p,s) '우선순위 가중치'
   sigma(p,s) '제품 주기'
   q(p,s) '배치 크기'
   tau(p,s) '처리 시간'
   오메가(들) '자원 요구사항'
   bigomega '모든 시스템에 사용 가능한 최대 리소스';

변수
   n(s) '머신 수'
   pr(p,s) '생산율'
   dpr(p,s) '절대값 차이'
   obj;

정수 변수 n;

방정식
   objdef
   Prdef(p,s)
   예산
   자원
   복근1
   ABS2;

objdef.. obj =e= sum((p,s), alpha(p,s)*sigma(p,s)/pr(p,s))
              + 합계((p,s)$(ord(s) < 카드), beta(p,s)*dpr(p,s))
              + 합(들, 뮤(들)*n(들));

prdef(p,s)..pr(p,s) =e= pi(p,s)/tau(p,s)*n(s);

예산.. 합계(s, mu(s)*n(s)) =l= M;

자원.. 합계(들, 오메가(들)*n(들)) =l= bigomega;

abs1(p,s+1).. dpr(p,s) =g= pr(p,s) - pr(p,s+1);

abs2(p,s+1).. dpr(p,s) =g= pr(p,s+1) - pr(p,s);

모델 지트 / 모두 /;

세트
   피 / p1*p3 /
   s / s1*s4 /;

매개변수
   델타(p) / p1 3000, p2 2000, p3 4000 /
   mubase(들) / s1 5000, s2 5500, s3 4000, s4 6000 /
   오메가 / s1 60, s2 50, s3 80, s4 40 /
   남 / 6E6 /
   빅고메가 / 3000 /;

테이블 dat(*,p,s) '테이블 10.16의 데이터'
         p1.s1 p1.s2 p1.s3 p1.s4 p2.s1 p2.s2 p2.s3 p2.s4 p3.s1 p3.s2 p3.s3 p3.s4
   알파 2.0 1.5 3.0 2.0 3.0 2.5 1.0 2.0 2.0 2.0 2.0 1.0
   베타 60 90 60 80 90 80 80 70 80 100 80 90
   카파 0.2 0.3 0.4 0.3 0.1 0.4 0.3 0.2 0.2 0.3 0.2 0.2
   파이 0.2 0.4 0.5 0.5 0.6 0.3 0.3 0.2 0.2 0.3 0.2 0.3
   타우 1 1 1 1 1 1 1 1 1 1 1 1
   800 800 800 800 700 700 700 700 900 900 900 900;

c '케이스' 설정 / case1*case9 /;

매개변수
   multq(c) / 케이스1 1, 케이스2 1, 케이스3 1
               케이스4 1, 케이스5 1, 케이스6 0.5
               케이스7 1.5, 케이스8 2, 케이스9 2.5 /
   multmu(c) / 케이스1 1, 케이스2 0.5, 케이스3 1.5
               케이스4 2, 케이스5 2.5, 케이스6 1
               케이스7 1, 케이스8 1, 케이스9 1 /
   rep(c,*) '요약 보고서';

n.lo(s) = 1;
pr.lo(p,s) = .01;
파이(p,s) = dat('파이',p,s);
알파(p,s) = dat('알파',p,s);
베타(p,s) = dat('베타',p,s)*1e+5;

abort$sum(s, abs(1 - sum(p, pi(p,s))) > 1e-10) '무게는 1에 추가되지 않습니다.', pi;

옵션 optCr = 0;

루프(c,
   q(p,s) = dat('q',p,s)*multq(c);
   mu(s) = mubase(s)*multmu(c);
   tau(p,s) = q(p,s)*(dat('tau',p,s) - dat('kappa',p,s)*1e-5*mu(s));
   시그마(p,s) = 델타(p)/q(p,s);
   pr.lo(p,s) = pi(p,s)/tau(p,s);

   minlp min obj를 사용하여 jit를 해결합니다.

   옵션 limRow = 0, limCol = 0, solPrint = off;

   담당자(c,s) = n.l(s);

   담당자(c,'ModelStat') = jit.modelStat;
   if(jit.modelStat = %modelStat.optimal% 또는 jit.modelStat = %modelStat.integerSolution%,
      rep(c,'처리') = sum((p,s), alpha(p,s)*sigma(p,s)/pr.l(p,s));
      rep(c,'불균형') = sum((p,s)$(ord(s) < 카드), beta(p,s)*abs(pr.l(p,s)- pr.l(p,s+1)));
      rep(c,'투자') = sum(s, mu(s)*n.l(s));
   );
);

디스플레이 담당자;