KAIST 1학년 시간표 스케줄링 (서기호)

Download Report

Transcript KAIST 1학년 시간표 스케줄링 (서기호)

카이스트 1학년 시간표 스케줄링
산업및시스템공학과
20060299 서기호
1
목차
•
Ⅰ. Introduction
•
Ⅱ. Assumption
•
Ⅲ-ⅰ. 기본모형
•
Ⅲ-ⅱ. Bi-level Programming
•
Ⅲ-ⅲ. Single-level Programming
•
Ⅲ-ⅳ. Solution Approach
•
Ⅲ-ⅴ. Algorithm
•
Ⅳ. 결과
•
Ⅴ. 결론
2
Ⅰ. Introduction
카이스트 06년도 L군의 시간표
3
Ⅰ. Introduction
월요일, 수요일, 금요일
모든 요일에 1시간씩 하는
수업을 만들자!
4
Ⅰ. Introduction
2009년도 가을학기 산업및시스템공학과 시간표(월, 수, 금)
1. 강의시간이 너무 짧다
2. 효율적인 시간관리
5
Ⅰ. Introduction

카이스트 1학년 학생은 모두 같은 과목을 수강하게 된
다. 따라서 여러 class(분반)이 열리게 된다.

위의 특성을 이용하여 수업시간이 1시간 30분이지만,
학생은 주 5일동안 수업을 하는 시간표를 계획하는 것
이 목표이다.
6
Ⅱ. Assumption
Pattern (j – pattern, j = 1,...,4)
월-수 (j = 1)
Subject # index : I
(i= 1,…,NSG)
수-금 ( j = 2)
월-금 ( j = 3)
화-목 ( j = 4)
9:00 – 10:30
10:30 – 12:00
12:00 – 1:00
점
심
시
간
1:00 – 2:30
2:30 – 4:00
4:00 – 5:30
Time (k time, k = 1,…,5)
7
Ⅲ-ⅰ. 기본모형
∑i=1NSG∑j=14∑ k=15 Cijk * Xijk
maximize
subject to
과목에 따른 제약식
시간대에 따른 제약식
월-수
수-금
A1x ≤ b1
월-금
화-목
9:00 – 10:30
10:30 –12:00
12:00 – 1:00
점
심
시
간
1:00 – 2:30
2:30 – 4:00
4:00 – 5:30
j-pattern, k time
Cijk : cost(constant)
Xijk : # of class(variable), integer
8
Ⅲ-ⅰ. 기본모형

주 5일을 판단하는 변수가 필요하다.

Zijk = 1 : j, k 시간대에 i과목을 수강한다.
= 0 : otherwise

Yl = 1 : l 요일에 수업을 듣는다.
(요일에 관한 index : l )
= 0 : otherwise

∑l=15 Yl : 며칠 수업을 듣는지 여부

Zijk ≤ Xijk
for all i, j, k
Yl ⇔ Zijk
for all l
A2x + B2y + C2z = b2
9
Ⅲ-ⅱ. Bi-level Programming
max ∑i=1NSG∑j=14∑ k=15 Cijk * Xijk
s.t. A1x ≤ b1
A2x + B2y + C2z ≤ b2
max ∑i=1NSG∑j=14∑ k=15 Cijk * Xijk
where Xijk solves
min ∑ l=15 Yl
s.t. A1x ≤ b1
∑l=15 Yl = 5
A2x + B2y + C2z ≤ b2
Xijk is integer
Xijk is integer
Yl, Zijk ∈ {0, 1}
Yl, Zijk ∈ {0, 1}
※ Bi – level Programming ?
어떠한 목적들이 서로간에 대립이나 모순이 있을 경우 각각의 목적식을
계층적으로 표현하여 나타낸 문제이다.
10
Ⅲ-ⅱ. Bi-level Programming
∑ l=15 Yl ≠ 5
a’x ≤ b
∑ l=15 Yl = 5
※ Cutting Plane Method?
현재의 solution이 원하는
solution이 아닐 경우 현재의
solution을 만족하지 못하는
제약식을 추가하여 다시 모형을
푼다.
11
Ⅲ-ⅲ. Single-level Programming
max ∑i=1NSG∑j=14∑ k=15 Cijk * Xijk
where Xijk solves
min ∑ l=15 Yl
s.t. A1x ≤ b1
A2x + B2y + C2z ≤ b2
Xijk is integer
Yl, Zijk ∈ {0, 1}
max
M * ∑i=1NSG∑j=14∑ k=15 Cijk * Xijk −∑ l=15 Yl
s.t. A1x ≤ b1
A2x + B2y + C2z ≤ b2
Xijk is integer
Yl, Zijk ∈ {0, 1}
M : large number
※ Bi – level Programming => Single-level Programming
BLP 문제는 문제의 뜻을 명확하고 보기 좋게 설명하는 장점을 가지고
있지만 문제의 사이즈가 커지며 바로 풀 수가 없기 때문에 푸는데 시간이
오래 걸린다.
12
Ⅲ-ⅳ. Solution Approach
1. Solution Set을 줄이자!
(1) 과목수
4과목으로 주 5일의 시간표를 작성
⇒ 4과목 외의 다른 과목 추가해도 주 5일이 유지
∴ 제약이 비교적 약한 4과목을 선택하여 문제를 풀자!
(2) Integer -> Binary
class의 숫자에 따라 세 개의 시간대나 네 개의 시간대에 과목을
개설한다고 하면 integer 변수가 binary 변수로 변하게 된다.
∴ 강의 시간대를 조절하여 변수 type을 변화시키자!
13
Ⅲ-ⅳ. Solution Approach
2. Breaking Symmetries
화-목
화-목
9:00 – 10:30
물리/전산
9:00 – 10:30
화학/생물
10:30 – 12:00
화학/생물
10:30 – 12:00
물리/전산
1:00 – 2:30
전산
1:00 – 2:30
전산
2:30 – 4:00
물리
2:30 – 4:00
물리
4:00 – 5:30
생물
4:00 – 5:30
생물
과목 index에 따라서 2i 의 값을 부여 한 후 각 시간대 별로 합을 구한
후 내림차순으로 정리한다.
14
Ⅲ-ⅳ. Solution Approach
3. Strengthening The Cuts
∑(i,j,k) ∈S1 (1-X*ijk) + ∑(i,j,k) ∈S2 X*ijk ≥ 1
( S1 = {(i,j,k) | X*ijk = 1} , S2 = S1c )
※ 위의 cut은 cutting plane algorithm의 특수한 경우로 일반적으로
Combinatorial Benders’ Cut으로 불리 운다.
15
Ⅲ-ⅴ. Algorithm
16
Ⅲ-ⅴ. Algorithm
17
Ⅳ. 결과
•
1학년 학생이 듣는 과목은 물리(8), 화학(6), 미적(8), 생물(4), 논술(1
2), 전산(6), 물리실험, 화학실험, 영어(12)이다.
•
강의실과 교수님 그리고 시간에 제약을 상대적으로 덜 받은 물리,
화학, 미적, 생물 4 과목을 가지고 우선 강의시간표를 작성하였다.
•
Intel® Celeron® M processor 1.4GHz, 448 RAM에서 CPLEX 11.0의
프로그램을 사용하였다. iteration과 cut의 개수는 모두 28개 이고,
소요시간은 2분 12초가 걸렸다.
18
Ⅳ. 결과
[표 1. 4개의 과목에 대한 강의 시간표]
월
화
수
1교시
물리(3)
화학(2)
2교시
물리
화학(2)
물리(3)
생물
미적
생물
목
화학
금
물리(3)
화학(2)
물리
화학(2)
물리(3)
생물
미적
생물
화학
3교시
미적(3)
미적(3)
4교시
미적(3)
미적(3)
5교시
물리
화학
물리
화학
미적
생물(2)
미적
생물(2)
19
Ⅳ. 결과
[표 2. 모든 과목의 강의 시간표]
월
1교시 영어(3)
화
논술(3)
2교시
금
화학(2)
영어(3)
논술(3)
물리(3)
화학(2)
물리
화학(2)
물리(3)
화학
물리
화학(2)
물리(3)
화학
생물,전산
미적
생물
전산
생물,전산
미적
생물
전산
영어(3)
논술(3)
4교시 미적(3)
영어(3)
영어(3)
미적 생물(2),전산
목
물리(3)
3교시 미적(3)
5교시 물리 화학
수
논술(3)
논술(3)
영어(3)
논술(3)
영어(3)
영어(3)
물리
화학
미적
생물(2),전산
미적(3)
논술(3)
미적(3)
논술(3)
20
Ⅴ. 결론
•
시간표 작성 문제는 대부분 NP-hard문제에 속한다. 더욱이 학생
의 주 5일 수업의 조건이 추가되면서 단순히 기존의 모형으로는
풀기 어려운 문제가 되었다. 우리는 이 문제를 bi-level program probl
em 으로 모형화 할 수 있음을 보였고, 이 bi-level 문제와 동일한 해
를 주는 single-level 문제로 표현할 수 있음을 보였다. 이를 풀기 위
해 cutting-plane 방법을 도입하였다.
•
확장 형태로 작업장에서 작업자들간에 작업을 할당하는 문제 같
이 서로 상충되는 목적을 가지는 경우에 사용할 수 있다.
21
Reference
[1] 이호종/전건욱 “발견적 알고리즘을 이용한 강의시간표 작성에 관한 연구”,
한국국방경영분석학회 추계학술대회, 2003
[2] DIMITRIS BERTSIMAS and JOHN N.TSITSIKLIS “Introduction to LINEAR
optimization”, pp. 480 – 484
[3] GIANNI CODATO and MATTEO FISCHETTI “Combinatorial Benders’ Cuts” D.
Bienstock and G.Nemhauser (Eds.) : IPCO 2004, LNCS 3064, pp. 178-195, 2004
[4] UE-PYNG WEN and SHUH-TZY HSU “Linear Bi-level Programmig Problems – A
Review”, J. Opl Res. Soc. Vol. 42, No2, pp. 125-133, 1991
[5] W.CANDLER and R.D.NORTON(1977) “Multi-level programming and development
policy.” World Bank Staff Working Paper No.258, Wasington, DC.
[6] W.CANDLER, J.FORTUNY-AMAT and B.McCARL(1981) “The potential role of
multilevel programming in agricultural economics.” Am.J.Agric.Econ.63,521-531.
[7] https://portal.kaist.ac.kr/
[8] http://www.ilog.com/products/cplex/
22