→ job 전체 상태를 관리하는 용도
Operation 테이블
→ 실제 스케줄링 대상은 Job 전체가 아니라 Operation임
→ 제품 1의 경우, G1으로 재진입이 있다는 점을 생각해야함
→ Operation Sequence를 신경쓸 것
Machine 테이블
→ 작업을 기계 할당하는 걸 Operation이라고 하는 것임
→ 기계는 총 8대 존재
→ 머신의 종류 3대 존재
→ 중요한 점은 last_product_type임 (set_up_time 존재)
Set up / Q-Time 룰 테이블
→ 이건 별도의 락업 테이블로 존재
*** 명확하게 정리하자 —> 결국 확인을 할라면 수식작성이 필요하다!!!
Job = 최종적으로 완성해야 하는 하나의 생산 대상
Operation = 그 Job을 만들기 위해 거쳐야 하는세부 공정 1단계
Machune = 그 Operation을 실제로 처리하는 설비
$$ \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} $$
$$ \begin{aligned} \min \quad & C_{\max} && \text{: 전체 완료시간 최소화} \end{aligned} $$
$$ \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} $$