2010-06-20 8 views
6

대학의 시간표를 생성하는 알고리즘을 구현해야합니다. 나는 많은 알고리즘을 수색하고 발견했다. 그러나 여기에 문제가 있습니다. 나는 주간베이스가 아닌 전체 학기 시간표를 생성하는 알고리즘이 필요합니다. 코스의 사전 정의 된 순서도 고려해야합니다 (예 : 운동 1은 강의 2 이후와 강의 3 이전이어야합니다. 어떤 제안이 있습니까?전체 학기 동안 대학 시간표를 만드는 알고리즘이 있습니까?

감사합니다.

UPDATE :
I가 다음과 같은 하드 제약 :
H1 : 하나의 코스 부분은 언제든지 슬롯에 각 방에 할당됩니다.
H2 : 방은 모든 참석 학생을 호스트 할 수 있으며 이벤트에서 요구하는 모든 기능을 충족시킵니다.
H3 : 동시에 한 과목 이상을 듣지 않는 학생 (최소 의무 과목 이상)
H4 : 교사는 동시에 두 개 이상의 강좌를 가르치지 않습니다.

부드러운 제약 조건은 다음과 같습니다.
S1 : 강좌 부분은 강사에게 불편한 시간대에 할당해서는 안됩니다.
S2 : 교사 수업 사이에 최소한의 간격이 있어야합니다.
S3 : 학생을위한 수업 사이에 최소한의 간격이 있어야합니다.
S4 : 강의는 강사 기본 설정 (일 및 시간 슬롯)을 충족해야합니다.
S5 : 코스 파트는 주문을 미리 예약해야합니다.

예 :
코스 "소프트웨어 아키텍처"당신은 interval scheduling 보길 원하는 것일 수도

Week No Course Room Course Part Day  Time 
--------+---------+-------+--------------+----------+----- 
Week 1: SA  435  Lecture 1  Wednesday 8.15-11 
Week 2: SA  435  Lecture 2  Wednesday 8.15-11 
Week 3: SA  47  Lab 1   Monday  13-15 
Week 3: SA  436  Lecture 3  Wednesday 11-14 
Week 4: SA  243  Exercise 1 Monday  13-15 
Week 5: SA  436  Lecture 4  Wednesday 8.15-11 
+0

안녕하세요.제약 조건과 예제를 추가했습니다. – Thea

+0

야, 단위를 등록 할 때마다 나를 위해 prorgam/script가 있었으면 좋겠다. –

답변

0

here의 수정 된 알고리즘으로 끝났습니다. Iterative Forward Algorithm을 사용하고 소프트 제약에 대해 시뮬레이션 된 어닐링을 적용했습니다. 시간대 설정을 변경하여 주말과 공휴일없이 학기 동안 전체 시간대가 포함되도록했습니다. 예를 들어, 학기가 6 주이고 매주 40 시간이있는 경우 내 시간대 세트는 240 개의 전체 시간 슬롯을 포함합니다.

또한 주문에 대한 제약 조건을 추가했습니다. 이 제약 조건이 충족되지 않으면 현재 솔루션에 높은 가중치를 적용합니다. 이런 식으로 알고리즘은 순서가 아닌 코스가있는 솔루션을 선택하지 못하게합니다.

1

. 연습을 배치 할 수있는 위치와 같은 몇 가지 제약 조건을 추가 한 수정 된 버전이 필요한 것 같습니다. 욕심 많은 알고리즘은 대개 수정하기가 쉽고 기본 IS 알고리즘은 whole bunch of already modified versions입니다.

-1

IIRC 이러한 문제는 알고리즘으로는 완전히 해결할 수 없습니다.

+2

어쨌든 전체 검색을 수행 할 수 있습니다. –

0

비슷한 종류의 프로젝트를 진행하고 적응 형 유전자 알고리즘을 사용하여 현재 문제를 해결하고 있습니다.

유전 알고리즘을 자세히 연구하고 제약 조건을 사용하여 앞서 언급 한 모든 제약 조건을 고려하여 문제를 해결하기위한 순서도를 설계하십시오.