1. Trang chủ
  2. » Công Nghệ Thông Tin

slike thuyết trình xây dựng giải thuật giải quyết bài toán lập lịch cho trường học

17 546 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 157,41 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương trình demo.

Trang 1

Bài T p L n Trí tu nhân t o ậ ớ ệ ạ

Đ tài: L p l ch gi ng d y trong trư ng h c ậ ị ả ạ ờ ọ

Giáo viên hư ng d n ớ ẫ : Ph m Văn H i ạ ả

Nhóm sinh viên: Nhóm 11

Trang 2

 S p x p th i khóa bi u t i các trư ng h c là ắ ế ờ ể ạ ờ ọ bài toán ph i luôn đư c th c hi n trư c khi ả ợ ự ệ ớ

h c kỳ m i b t đ u ọ ớ ắ ầ

 Đây là m t bài toán mang tính th c ti n ộ ự ễ

Trang 3

• Các thông tin c a bài toán.  ủ

◦ Danh sách giáo viên g m: mã s , tên, s gi d y t i ồ ố ố ờ ạ ố đa.

◦ Danh sách các phòng h c g m: mã phòng, tên ọ ồ

phòng.

◦ Danh sách các môn h c: mã môn h c, tên môn h c, ọ ọ ọ

s ti t trong tu n ố ế ầ

Trang 4

• Các ràng bu c c a bài toán ộ ủ

◦ Ràng bu c v ngày h c: M t tu n có 5 ngày đi h c quy đ nh t th 2 đ n ộ ề ọ ộ ầ ọ ị ừ ứ ế

th 6 Th 7 và ch nh t là ngày ngh cho nên chương trình không x p l ch ứ ứ ủ ậ ỉ ế ị

h c vào các ngày th 7 và ch nh t ọ ứ ủ ậ

◦ Ràng bu c v giáo viên: L ch gi ng d y c a m i giáo viên không b ch ng ộ ề ị ả ạ ủ ỗ ị ồ chéo lên nhau T c là t i m t th i đi m, giáo viên ch đ m nhi m gi ng d y ứ ạ ộ ờ ể ỉ ả ệ ả ạ

m t l p h c ộ ớ ọ

◦ Ràng bu c v s ti t t i đa trong tu n c a giáo viên: S ti t d y c a giáo viên ộ ề ố ế ố ầ ủ ố ế ạ ủ không đư c vư t quá s ti t t i đa trong tu n c a giáo viên đó ợ ợ ố ế ố ầ ủ

◦ Ràng bu c v s ti t/bu i: S ti t h c trong m t bu i không quá 6 ti t/bu i ộ ề ố ế ổ ố ế ọ ộ ổ ế ổ

◦ Ràng bu c v l p h c: M i phòng h c t i m t th i đi m ch có m t l p h c ộ ề ớ ọ ỗ ọ ạ ộ ờ ể ỉ ộ ớ ọ

Trang 5

 Các ch s : ỉ ố

◦ g: ch s giáo viên ỉ ố

◦ t: ch s ngày ỉ ố

◦ p: ch s phòng ỉ ố

 Các tham s :

◦ Tgv: t ng s giáo viên ổ ố

◦ Tphong: t ng s phong ổ ố

◦ Tmon: t ng s môn ổ ố

Mô hình bài toán

Trang 6

 Các bi n ràng bu c: ế ộ

◦ M ng ả day, hour, room ch a các bi n ràng bu c v ngày ứ ế ộ ề

gi ng d y, gi b t đ u và phòng h c c a các bu i h c ả ạ ờ ắ ầ ọ ủ ổ ọ

 day[] có giá tr 2 ≤ ị day ≤ 6;

 hour[] có giá tr 0 ≤ hour ≤ 5; ị

 room[] có giá tr 0 ≤ ị room ≤ Tphong

◦ M ng ả duration ch a bi n v th i gian kéo dài c a bu i h c ứ ế ề ờ ủ ổ ọ (hay là b ng v i s ti t/tu n c a môn h c đó) ằ ớ ố ế ầ ủ ọ

◦ M ng ả teacher ch a các bi n ràng bu c v ngày gi ng d y, ứ ế ộ ề ả ạ

gi b t đ u và phòng h c c a các bu i h c ờ ắ ầ ọ ủ ổ ọ

◦ M ng ả gvtd[] ch a s lư ng ti t t i đa c a giáo viên ứ ố ợ ế ố ủ

Trang 7

 Bi u di n ràng bu c: ể ễ ộ

◦ Ràng bu c v giáo viên: L ch gi ng d y c a m i giáo viên không b ộ ề ị ả ạ ủ ỗ ị

ch ng chéo lên nhau T c là t i m t th i đi m, giáo viên ch đ m ồ ứ ạ ộ ờ ể ỉ ả

nhi m gi ng d y m t l p h c ệ ả ạ ộ ớ ọ

(day[i] == day[j]) && (((hour[j]+duration[j]) > hour[i]) || ( hour[i] + duration[i]) > hour[j])) && (teacher[i] == teacher[j])

◦ Ràng bu c v s ti t t i đa trong tu n c a giáo viên: S ti t d y c a ộ ề ố ế ố ầ ủ ố ế ạ ủ giáo viên không đư c vư t quá s ti t t i đa trong tu n c a giáo viên ợ ợ ố ế ố ầ ủ đó.

for (int j = 0; j<i;j++){

if(teacher[i] == teacher[j]){

dem = dem+duration[j];

}

}

dem < gvtd[teacher[i]]

Trang 8

- Ràng bu c v s ti t/bu i: S ti t h c trong ộ ề ố ế ổ ố ế ọ

m t bu i không quá 6 ti t/bu i ộ ổ ế ổ

hour[i] + duration[i]) > 6

- Ràng bu c v l p h c: M i phòng h c t i m t ộ ề ớ ọ ỗ ọ ạ ộ

th i đi m ch có m t l p h c ờ ể ỉ ộ ớ ọ

((room[i] == room[j]) && (day[i] == day[j])) &&

(((hour[j]+duration[j]) > hour[i]) || ( hour[i] +

duration[i]) > hour[j]))

Trang 9

 1 Gi i thu t tìm ki m quay lui (backtracking) ả ậ ế

◦ Gán giá tr l n lư t cho các bi n – vi c gán giá tr c a ị ầ ợ ế ệ ị ủ

bi n này ch đư c làm sau khi hoàn thành gán giá tr ế ỉ ợ ị cho bi n khác ế

◦ Sau m i phép gán ki m tra các ràng bu c có đư c ỗ ể ộ ợ tho mãn b i t t c các bi n đã đư c gán giá tr cho ả ở ấ ả ế ợ ị

t i th i đi m hi n t i – Quay lui n u có l i (không ớ ờ ể ệ ạ ế ỗ

tho mãn ràng bu c) ả ộ

◦ duration vì liên quan đ n nhi u ràng bu c nh t ế ề ộ ấ

◦ day và teacher

◦ room

Trang 10

 Code (java):

public void XepLich(int i){ //i là s th t môn đang xét ố ứ ự if(i == Tmon){

XuatDuLieu();

} else {

A: for(int n=0;n < 3;n++){ // duration

for(int t=2;t<=6;t++){ // day

for(int g=0;g<Tgv;g++){ // teacher

for(int p = 0; p < Tphong ;p++){ // room

Trang 11

if(kt(i,p,t,tietbd[n],g)){ //Hàm ki m tra các ràng bu c ể ộ day[i] = t;

hour[i] = tietbd[n];

room[i] = p;

teacher[i] = g; // lưu giá trị

XepLich(i+1); // hàm đ quy

break A;

}

}

}

}

}

}

}

Trang 12

 Cây l i gi i: ờ ả

Trang 13

 M c đích c a thu t toán ki m tra ti n là đ tránh các ụ ủ ậ ể ế ể

th t b i b ng ki m tra trư c các ràng bu c ấ ạ ằ ể ớ ộ

 Ki m tra ti n đ m b o s phù h p gi a bi n đang đư c ể ế ả ả ự ợ ữ ế ợ xét gán giá tr và các bi n khác có liên quan (ràng bu c) ị ế ộ

tr c ti p v i nó ự ế ớ

 Ý tư ng: ở

- m i bư c gán giá tr , theo dõi các giá tr h p l (có th đư c Ở ỗ ớ ị ị ợ ệ ể ợ gán) đ i v i các bi n chưa đư c gán giá tr ố ớ ế ợ ị

- Lo i b (d ng) hư ng tìm ki m hi n t i khi có b t kỳ m t bi n ạ ỏ ừ ớ ế ệ ạ ấ ộ ế (chưa đư c gán giá tr ) nào đó không còn giá tr h p l ợ ị ị ợ ệ

 Vì tính ch t c a bài toán, hàm ki m tra các bi n chưa ấ ủ ể ế

đư c gán s quy v vi c ki m tra bi n có th i gian h c ợ ẽ ề ệ ể ế ờ ọ trong tu n l n nh t, vì n u bi n này còn giá tr h p l ầ ớ ấ ế ế ị ợ ệ thì các bi n khác cũng s còn giá tr h p l ế ẽ ị ợ ệ

2 Thu t toán ki m tra ti n ậ ể ế

(Forward-checking)

Trang 14

 Code (java):

public void FC(int i, boolean B[][][][]){

boolean A[][][][] = new boolean[7][7][Tphong][Tgv];//Mi n giá tr h p l ề ị ợ ệ if(i == 0) {

//Kh i t o mi n giá tr ban đ u ở ạ ề ị ầ

for(int n=0;n < 5;n++){ //ti t b t đ u ế ắ ầ

for(int t=2;t<=6;t++){ //thứ

for(int g=0;g<Tgv;g++){ //giáo viên

for(int p = 0; p < Tphong ;p++){ //phòng

A[t][n][p][g] = true;

}

}

}

}

} else A=B; //Gi l i mi n giá tr c a l i gi i trư c đó ữ ạ ề ị ủ ờ ả ớ

if(i == Tmon){

XuatDuLieu();

} else {

Trang 15

C: for(int n=0;n < (6-duration[i]);n++){ //Ràng bu c v s ti t/bu iộ ề ố ế ổ

for(int t=2;t<=6;t++){ //thu

for(int g=0;g<Tgv;g++){ //giao vien

for(int p = 0; p < Tphong ;p++){ //phong

if(!A[t][n][p][g]) continue; // loai bo gia tri ko hop le

if(CheckForward(i, A)) {

for(int j=n;j<n+duration[i];j++){

A[t][j][p][g] = false;

for(int k=0;k<Tgv;k++){//Ràng bu c v l p h cộ ề ớ ọ

A[t][j][p][k] = false;

}

for(int m=0;m<Tphong;m++){//Ràng bu c v giáo viênộ ề A[t][j][m][g] = false; }

}

day[i] = t; hour[i] = n; room[i] = p; teacher[i] = g; FC(i+1,A); break C; }

}

}

}

}

}

}

Trang 16

Chương trình demo

Trang 17

 Ngôn ng và công c l p trình: ữ ụ ậ

◦ Java

◦ NetBeans IDE

◦ SQLite

 Các ch c năng:

◦ T o th i khoá bi u b ng thu t toán backtracking và ạ ờ ể ằ ậ forward-checking

◦ Xem các môn h c, giáo viên, danh sách phòng ọ

◦ Ch nh s a CSDL ỉ ử

◦ Thoát chương trình

Ngày đăng: 23/10/2014, 23:55

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w