<aside>
💡
Q-time과 예방보전을 고려한 반도체 공정 flexible job shop 스케줄링
</aside>
<aside>
💡
데이터 정의 → 데이터 생성 → 시뮬레이션 + 알고리즘 → 비교 → 모델 정리 → 논문화
</aside>
전공종합설계및논문 팀 노션
<aside>
💡
데이터 정의(데이터 스키마)
‣
데이터 스키마
</aside>
<aside>
💡
시뮬레이션 + 알고리즘
모든 방법론의 공통적인 실행환경은 simpy(by 형훈)으로 하자
우리가 적용할만한 방법론들은 다음과 같다
- 룰 기반
- simpy 내부에서 실행
- spt,lpt,fifo 등의 기본적은 룰 기반 모델 활용
- toy problem에서 실제 간트차트와 결과물 비교
- 수리적 모델(MIP)
- gurobipy, pulp 등을 이용하여 모델링
- 제약조건이 잘 반영되고, 충분한 시간이 주어진다면 항상 최적해를 내기 때문에 연구의 base-line으로 활용 가능
- 유전 알고리즘
- simpy 내부에서 실행
- priority-based GA
- 각 작업선택순서에 대한 해(=염색체 = chromosome) 생성
- 해를 simpy에서 시뮬레이션 후 결과 도출
- 결과를 바탕으로 목적함수에 fit한 해 결정
- crossover, mutation 반복하여 좋은 스케줄링 전략 탐색
- 강화학습
- simpy 내부에서 실행
- machine이 idle일 때, job을 선택하는 agent로 구현
- state : machine, job 상태
- action : 최적의 후보 job 선택
- reward : makespan 최소화(+), q-time violate(-)
- simpy 환경과 상호작용하며 좋은 스케줄링 전략 도출
</aside>
<aside>
💡
연구 진행
- 연구 목표 (목적함수)
- makespan 최소화
- q-time violation 페널티 최소화 (q-time 적용시)
- Pm에 대한 페널티? 최소화(논의 필요)
- 연구 방식(내 생각)
- 투 트랙으로 분리
- 성현 & 훈 & 진호 : rule-base →RL
- 성현 & 형훈 & 승민 : GA → RL
- 모두가 simpy, GA, RL에 대한 기반 지식은 필수
-
toy problem(q-time, pm생략) 해결
- 초기 데이터는 toy_schema(by 성현) 활용
- 룰 기반으로 spt, lpt, fifo 등의 simpy 연습
- 실제 간트 차트 그리고 확인
- (선택)수리모델(mip 최적화)으로 확인
- 유전 알고리즘 적용 후 비교
- 강화 학습 적용 후 비교
→ 최적해(아무래도 실제 그린 그림일듯)와 얼마나 유사한지
-
toy problem + q-time
- (선택) 수리모델 확인
- 유전 알고리즘 적용 후 비교
- 강화학습 적용 후 비교
============내가 생각하는 중간고사 휴식 전 목표====================
-
toy problem + q-time + pm
- pm에 대한 명확한 정의 필요할듯(고장률 부분을 어떻게 해결할지 등등..)
- 수리모델 적용
- 유전 알고리즘 적용
- 강화학습 적용
-
data set 확대
- machine, job, operation 등의 수 늘리기
- 고장률, q-time 등 현실과 유사하게 반영하여 제약 설정
-
방법론 적용 후 결과 확인
- 수리모델(이 때의 mip가 아마도 최적해를 제공할듯? 제약조건이 잘 반영된다면)
- 유전 알고리즘
- 강화학습
-
우수모델 선정 후 논문 작성
- 유전 알고리즘의 경우는 sudo 코드 작성
- 강화학습의 경우는 state/action/reward 등에 대한 설명
</aside>
<aside>
💡
현재 상황에 대한 나의 의견
- 우리에게 명확한 baseline이 없다
- 명확한 기준을 정해야한다
- 기본 환경을 simpy로 통일하는 방향으로 가자
→ 그 이후에 강화학습, 유전알고리즘 등의 방법론을 사용해보면서 결과를 확인하고, 제약이나 데이터를 추가해가는 것이 좋은 그림 같다.
- 다같이 simpy에서 rule-base부터 시작하는게 좋을 것 같다…
</aside>