1. Rule-Based Schedulung 실제로 Feasible 한지를 확인해보자.

  1. Job 테이블 (작업의 종류 : 10개, 제품의 종류 : 2개)
→  job 전체 상태를 관리하는 용도
  1. Operation 테이블

    → 실제 스케줄링 대상은 Job 전체가 아니라 Operation임

    → 제품 1의 경우, G1으로 재진입이 있다는 점을 생각해야함

    → Operation Sequence를 신경쓸 것

  2. Machine 테이블

    → 작업을 기계 할당하는 걸 Operation이라고 하는 것임

    → 기계는 총 8대 존재

    → 머신의 종류 3대 존재

    → 중요한 점은 last_product_type임 (set_up_time 존재)

  3. Set up / Q-Time 룰 테이블

→ 이건 별도의 락업 테이블로 존재 

*** 명확하게 정리하자 —> 결국 확인을 할라면 수식작성이 필요하다!!!

Job = 최종적으로 완성해야 하는 하나의 생산 대상

Operation = 그 Job을 만들기 위해 거쳐야 하는세부 공정 1단계

Machune = 그 Operation을 실제로 처리하는 설비

1. 집합 정의

$$ \begin{aligned} {J} &= \{1,2,\dots,10\} && \text{: 생산 대상 Job의 집합} \\

{T} &= \{P1, P2\} && \text{: 제품 유형의 집합} \\

{G} &= \{G1, G2, G3\} && \text{: 설비 그룹(Machine Group)의 집합} \\

{M} &= \{1,2,\dots,8\} && \text{: 전체 설비(Machine)의 집합} \\

{M}_g &\subseteq {M} \quad \forall g \in {G} && \text{: 그룹 } g \text{에 속한 설비 집합} \\

{M}{G1} &= \{1,2,3\},\quad {M}{G2} = \{4,5\},\quad {M}_{G3} = \{6,7,8\} && \text{: 각 설비 그룹별 설비 구성} \\

{O}_j &= \begin{cases} \{1,2,3,4\}, & \text{if job } j \text{ is of type } P1 \\ \{1,2,3\}, & \text{if job } j \text{ is of type } P2 \end{cases} && \text{: Job } j \text{의 공정(Operation) 집합} \\

g_{j1} &= G1,\quad g_{j2}=G2,\quad g_{j3}=G1,\quad g_{j4}=G3 && \text{: P1 제품의 공정 순서} \\

g_{j1} &= G1,\quad g_{j2}=G2,\quad g_{j3}=G3 && \text{: P2 제품의 공정 순서} \end{aligned} $$

2. 목적 함수 작성 [Make Span 최소화]

$$ \begin{aligned} \min \quad & C_{\max} && \text{: 전체 완료시간 최소화} \end{aligned} $$

3. 제약식 작성

1) 기본 제약 식 (Set Covering 느낌)

$$ \begin{aligned}\sum_{m \in {M}{g{jo}}} x_{jom} &= 1&& \forall j \in {J},\ \forall o \in {O}j&& \text{: 각 operation은 가능한 설비 중 정확히 하나에 배정} \\ C{jo} &= S_{jo} + p_{jo}&& \forall j \in {J},\ \forall o \in {O}j&& \text{: 완료시간 정의} \\ S{j1} &\ge r_j&& \forall j \in {J}&& \text{: 첫 공정은 release time 이후 시작} \\ S_{j,o+1} &\ge C_{jo}&& \forall j \in {J},\ \forall o \in {O}j \setminus \{\max {O}j\}&& \text{: 공정 순서 제약} \\ C{\max} &\ge C{j,\max {O}_j}&& \forall j \in {J}&& \text{: makespan 정의}\end{aligned} $$