Bài toán lập thời khóa biểu

Một phần của tài liệu Thuật toán hệ kiến Max - Min và ứng dụng (Trang 53)

Giới thiệu bài toán:

Bài toán lập thời khóa biểu cho trường đại học theo hệ tín chỉ (University Course Timetabling Problem – UCTP) được phát biểu như sau:

Có N môn học được các sinh viên đăng ký tham gia cần được xếp lịch vào một tuần gồm K tiết học tương ứng . Các môn học được tổ chức tại các phòng học đáp ứng đủ các điều kiện học tập của môn học đó (mỗi phòng học chỉ chứa được một lượng người nhất định và đáp ứng được một số điều kiện học tập cho trước, trong khi mỗi môn học lại đòi hỏi phải có một số điều kiện học tập riêng của nó).

Một lời giải hoặc một thời khoá biểu chấp nhận được là tất cả các môn học đều được chia vào các tiết học và các phòng tương ứng thỏa mãn các ràng buộc cứng sau:

- Không sinh viên nào tham dự nhiều hơn một môn học trong cùng một khoảng thời gian.

- Phòng học phải rộng cho các sinh viên ngồi học và đáp ứng đầy đủ các điều kiện của môn học đó.

- Chỉ duy nhất một môn học ở mỗi phòng trong bất kỳ một khoảng thời gian cho trước nào.

Thêm vào đó một thời khoá biểu chấp nhận được sẽ được đánh giá bằng số vi phạm các ràng buộc mềm được cho như sau:

- Hạn chế số sinh viên phải tham dự một môn học vào tiết cuối cùng trong ngày.

- Hạn chế các sinh viên chỉ học đúng 1 lớp trong cùng một ngày.

Áp dụng hệ kiến Max-Min cho bài toán UCTP:

Dựa vào các ràng buộc đã cho của bài toán, việc đầu tiên là sắp xếp các môn học vào các tiết học tương ứng, sau đó các môn học đã được phân vào các tiết học này được ghép với các phòng tương ứng đáp ứng đủ điều kiện bằng một thuật toán ghép cặp cực đại để có được lời giải hoàn chỉnh.

Xây dựng đồ thị cấu trúc cho bài toán UCTP

Việc đầu tiên để áp dụng được ACO metaheuristic cho bài toán UCTP là ánh xạ bài toán vào một đồ thị cấu trúc tương ứng , khi đó đường đi trên đồ thị thể hiện một lời giải của bài toán . Đồ thị cấu trúc của bài toán UCTP là đồ thị với tập đỉnh E x T trong đó mỗi một con kiến đi theo danh sách các môn học và ứng với mỗi một môn học eE (E là tập các môn học) con kiến lựa chọn một tiết học tT (T là tập các tiết học) tương ứng.

Start t2

Stop

tk

Hình 5: Đồ thị cấu trúc của bài toán UCTP

Các con kiến bắt đầu tại đỉnh Start, đi theo danh sách các môn học và ứng với mỗi một môn học ei E con kiến sẽ lựa chọn một tiết học t  T, kết thúc tại đỉnh Stop. Khi đó con kiến xây dựng xong hành trình của mình.

Các con kiến đi theo sự lựa chọn của chúng trên đồ thị cấu trúc, chúng xây dựng phép gán Ai : EiT với i=0, 1, ..., |E| trong đó E = {e1, e2, ..., ei}, con kiến bắt đầu với lời giải rỗng A0 = . Sau khi xây dựng được lời giải Ai-1

e1 e2 en

- 50 -

lời giải Ai được xây dựng ngẫu nhiên Ai = Ai-1{(ei, t)}. Tiết học t được chọn ngẫu nhiên trong T theo xác suất pei,t phụ thuộc vào ma trận mùi

ExT i

A ) [ , ]

( 1 min max

   (min,maxR) với một thông tin heuristic (Ai1)

bất kỳ được tính theo công thức sau :

         T e i e i i t e i t e i i t e A A A A A A p i i i i i              )) ( ( )) ( ( )) ( ( )) ( ( )) ( ), ( ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 1 ,

Trong đó thông tin mùi  và thông tin heuristic  đều lấy đối số là lời giải Ai-1. Sự ảnh hưởng của mùi và thông tin heuristic được đánh giá qua hai tham số  và  .

Ma trận mùi (adsbygoogle = window.adsbygoogle || []).push({});

Thông tin mùi được thể hiện bằng sự chính xác của việc đặt các môn học vào các tiết học. Với cách thể hiện này, ma trận mùi được cho bởi (Ai), i=1, ..., | E| và thông tin mùi không phụ thuộc vào lời giải thành phần A i. Trong trưòng hợp này, thông tin mùi sẽ được gắn liền với các đỉnh của đồ thị chứ không phải là các cạnh của đồ thị.

      ( , ') min ) ( ) ( ' max ) , ( 1 e e A t A e i t e i    Trong đó  là một ma trận phụ trợ R+ ExE

Rõ ràng thể hiện thông tin mùi ở dạng khác là có thể, nhưng với những ràng buộc đa dạng trong bài toán UCTP thì khó mà thiết kế được mô hình thông tin mùi chứa tất cả các thông tin liên quan. Hiện nay, các hệ kiến thường sử dụng cách thể hiện trên như là cách tốt nhất hiện có .

Thông tin heuristic

Công thức tính thông tin heuristic (e,t)(Ai1) được cho như sau :

) ( 0 . 1 0 . 1 ) ( 1 ) , ( 1 ) , (     et i i t e A V A  Nếu Ai-1(t)= Ngược lại

trong đó V(e,t)(Ai1) là số vi phạm ràng buộc nảy sinh khi thêm thành phần (e, t) vào lời giải thành phần Ai-1. Hàm V có thể được tính theo tổng số một vài hoặc tất cả vi phạm ràng buộc ngặt và ràng buộc mềm. Tuy nhiên do tính tự nhiên của bài toán UCTP, độ phức tạp tính toán khi tính một số loại vi phạm ràng buộc có thể rất cao . Chúng ta có thể chọn sự thuận lợi của thông tin heuristic để hướng dẫn quá trình xây dựng lời giải nhưng chỉ trong một số ít vòng lặp của bài toán với một hạn chế thời gian cho trước. Vì vậy phải xem xét và đánh giá các thuận lợi đó và việc sử dụng các thông tin heuristic không làm tăng chất lượng của lời giải xây dựng bằng thuật toán MMAS có kết hợp sử dụng tìm kiếm địa phương. Khi không sử dụng các thủ tục tìm kiếm địa phương, các thông tin heuristic vẫn có thể không cải thiện đư ợc chất lượng lời giải nhưng không ở cùng mức độ khi sử dụng tìm kiếm địa phương.

Mô tả thuật toán

Một đàn kiến m con được sử dụng và tại mỗi vòng lặp , mỗi con kiến xây dựng một lời giải (hay một sự sắp xếp môn học -tiết học ) bằng cách đặt các môn học tương ứng một -một vào các tiết học . Các môn học được tiền xử lý bởi đàn kiến bằng cách sắp xếp theo thứ tự giảm dần của số ràng buộc cạnh giữa các môn học . Sự lựa chọn tiết học cho môn học là một hàm ngẫu nhiên dựa vào thông tin mùi (e,t)(Ai). Giá trị mùi được khởi tạo ban đầu với tham số max và được cập nhật theo quy tắc cập nhật mùi toàn cục . Sau khi một con kiến xây dựng xong lời giải , các sắp xếp môn học -tiết học sẽ được chuyển thành một thời khóa biểu bằng cách sử dụng thuật t oán ghép cặp . Sau khi cả m con kiến đều sinh ra đươ ̣c thời khóa biểu của mình , mỗi thời khóa biểu sẽ được đánh giá bằng một hàm thích nghi (fitness funtion ). Cuối cùng là thủ tục cập nhật mùi toàn cục cho ma trận cường độ mùi, các vết mùi luôn được khống chế trong giới hạn max và min.

- 52 -

Hệ kiến Max-Min cho bài toán lập thời khóa biểu

Input : Bô ̣ dữ liệu I

max  1/

(e,t)  max (e,t)  E x T Tính c(e, e’) với (e,e')E2

Tính d(e)

Sắp xếp E theo thứ tự , kết quả là e1e2e3..en

while not (điều kiện dừng) do for a = 1 to m do

{quá trình xây dựng lời giải của con kiến a}

0

A

for i = 1 to |E| do

Chọn ngẫu nhiên tiết học t theo xác suất e t

i

p , cho môn học ei.

  i1

i A

A {(ei,t)}

end for (adsbygoogle = window.adsbygoogle || []).push({});

C lời giải sau khi áp dụng thuật toán ghép cặp cho An Citeration-bestbest(C, Citeration-best)

end for

Citeration-bestLời giải sau khi áp dụng các thủ tục tìm kiếm địa phương Cglobal-bestbest(C, Citeration-best)

Cập nhật mùi toàn cục cho  sử dụng Cglobal-best, min và max.

end while

Output : Một thời khoá biểu chấp nhận được Cglobal-best cho bộ dữ liệu I.

Giải thích chi tiết một số thông tin trong thuật toán: - Tiền xử lý thông tin các môn học

    0 1 ) ' , (e e c

d(e) = |{e’E\{e} | c(e, e’)  0}| (bậc củ a e) - Định nghĩa một thứ tự toàn phần  cho các môn học như sau :

) ' ( ) ( ) ' ( ) ( ) ' ( ) ( ' d e d e d e d e l e l e e e       trong đó l:EN là một hàm ánh xạ

nếu tồn tại 1 sinh viên theo học cả hai môn e và e’

Trong thuật toán kiến áp dụng cho bài toán, lời giải hay thời khoá biểu nào vi phạm ít ràng buộc ngặt nhất sẽ được lựa chọn để cải tiến bằng tìm kiếm địa phương.

Cập nhật mùi

Trong hệ kiến MMAS sử dụng cập nhật mùi cho các cạnh thuộc vào Cglobal best theo công thức sau:

       ) , ( ) , ( ) , ( ). 1 ( 1 ). 1 ( t e t e t e     

Theo quy tắc này các vết mùi đều được bay hơi một lượng theo hệ số bay hơi

 và những thành phần (e,t) thuộc lời giải hoặc thời khoá biểu tốt nhất sẽ được cộng thêm một lượng mùi mà ở đây thuật toán MMAS chọn bằng hằng số 1.

Theo quy tắc cập nhật mùi MMAS, các vết mùi sẽ bị khống chế trong khoảng ]

,

[min max như sau :

      ) , ( max min ) , ( t e t e   

 nếu nếu (e,t) min

max ) , (   et  ngược lại nếu Aglobal-best(e)=t ngược lại

- 54 -

KẾT LUẬN

Các nghiên cứu gần đây trên các thuật toán ACO tập trung nhiều vào cải tiến hiệu suất của thuật toán. Trong các thuật toán ACO như hệ kiến, hệ đàn kiến, hệ kiến MAX-MIN thì hiện nay hệ kiến MAX-MIN vẫn được ưa dùng hơn cả bởi tính đơn giản, dễ cài đặt của nó.

Trong bản luận văn này, chúng tôi trình bày một cách hệ thống của các thuật toán kiến, lớp ACOmin và giới thiệu thuật toán hệ kiến MAX-MIN nhằm mục đích tạo cho các độc giả quan tâm đến các thuật toán ACO có cái nhìn tổng quan hơn về thuật toán kiến-thuật toán nổi trội so với các thuật toán mô phỏng tự nhiên giải quyết các bài toán tối ưu tổ hợp hiện nay.

Trong luận văn này chúng tôi đã đề xuất hệ kiến MAX-MIN trơn, nội dung của hệ này tương tự hệ kiến MAX-MIN nhưng chúng tôi thay đổi cách cập nhật mùi, lượng mùi trên các cạnh không thuộc lời giải tốt giảm chậm làm tăng khả năng khám phá cho các con kiến và kết quả đạt được lời giải tốt hơn. Chúng tôi cũng đã thử nghiệm hệ kiến MAX-MIN trơn trên các bộ dữ liệu của bài toán TSP, nhất là những bài toán có số đỉnh lớn như lin318.tsp hay rat783.tsp thì kết quả tốt hơn nhiều so với hệ kiến MAX-MIN. Vấn đề chọn tham số cũng ảnh hưởng nhiều đến hiệu suất thuật toán, nên qua nhiều lần thử nghiệm với hệ kiến Max-Min trơn chúng tôi tìm được một tỷ lệ thích hợp giữa max và min là:

min = max / ( 0.0601*n2-6.0407*n+202.8 )

Hiện nay, các thuật toán ACO cho thấy có hiệu suất triển vọng trên các bài toán tối ưu tổ hợp. Chúng tôi hy vọng rằng trong tương lai hệ kiến MAX-MIN là một điểm xuất phát tốt cho quá trình nghiên cứu, cải tiến hiệu suất cho các thuật (adsbygoogle = window.adsbygoogle || []).push({});

toán . Chúng tôi hy vọng rằng, hiệu suất các thuật toán ACO sẽ được cải tiến hơn nữa và khả năng ứng dụng của ACO ngày một nhiều hơn.

- 56 -

TÀI LIỆU THAM KHẢO

[1] Krzysztof Socha, Joshua Knowles and Michael Sampels (2002), “A MAX-MIN Ant System for the University Course Timetabling Problem”, ANTS 2002, LNCS (2463), pp 1-13.

[2] Krzysztof Socha, Michael Sampels and Max Manfrin, “Ant Algorithms for the Univerrsity Course Timetabling Problem with Regard to the State-of-the-Art”.

[3] Hoang Xuan Huan & Dinh Trung Hoang, “On the ant colony system for the postman problem”, Journal of Science, Natural Sciences and Technology, Viet Nam National Univeristy, Ha Noi, vol.18, no 1, 2002, pp 29-37.

[4] Hoang Xuan Huan (2003), Convergence Analysis of ACO Algorithms and New Perpectives, manuscript.

[5] Hoang Xuan Huan, Do Duc Dong and Dinh Quang Huy (2004), “Multi-level Ant System and Typical Combanatorial Optimization Problems”, 2nd Optimization and Scientific Computation Conference, Institue of Mathematics, Ha Noi, Viet Nam, p 15.

[6] M.Dorigo, V.Maniezzo and A.Corloni (1991), Positive feedback as a search strategy, Technical Report 91-109, Departimento di electronica e informatica, Poletico di Milano, IT.

[7] M.Dorigo (1992), Optimization, learning and natural algorithms, PhD.dissertation, Milan Polytechnique, Italy.

[8] M.Dorigo, V.Maniezzo and A.Corloni (1996), “The Ant System : Optimization by a colony of cooperating agents”, IEEE, Trans.Syst., Man, Cybern.B, vol.26, no.2, pp 29-41.

cooperative learning approach to the travelling salesman problem”,

IEEE Trans, on Evolutionary Computation, vol.1, no.1, pp 53-66. [10] M.Dorigo and M.D.Caro (1999), “The Ant Conoly Optimization

metaheuristic, A New Idea in Optimization”, D.Corne, M.Dorigo and F.Glover, Eds. London, U.K, McGraw-Hill, pp.11-32.

[11] M.Dorigo and Thomas Stutzle (2000), The Ant Colony Optimization Metaheuristic : Algorithms, Applications and Advances.

[12] Marco Dorigo and Thomas Stutzle (2002), A short Convergence Proof for a class of Ant Colony Optimization Algorithms, IEEE.

[13] Marco Dorigo, Eric Bonabeau, Guy Theraulaz. Future Generation Computer Systems. Ant System and Stigmergy, 16 (2000) 851–871. [14] Thomas Stutzle and Holger Hoos (1997), MAX-MIN Ant System and

Local Search for the Traveling Salesman Problem, IEEE.

[15] Stutzle, Hoos (2000), “MAX-MIN Ant System”, Future Generation Computer System, pp 889-914.

[16] T. Stutzle (July 1997), “MAX-MIN Ant System for the quadratic assignment problem”, Technical Report AIDA–97–4, FG Intellektik, TU Darmstadt, Germany.

[17] T. Stutzle and M. Dorigo (1999), “ACO algorithms for the quadratic assignment problem”, New Ideas in Optimization, McGraw-Hill, London, UK, pp. 33–50.

[18] T. Stutzle and H. H. Hoos (1999), “MAX-MIN Ant System and local search for combinatorial optimization problems”, Meta-Heuristics: Advances and Trends in Local Search Paradigms for Optimization, Kluwer Academic Publishers, Boston, pp. 313–329.

- 58 -

[19] J.-L. Deneubourg, S. Goss, J.M. Pasteels, D. Fresneau, J.-P. Lachaud (1987), Self-organization mechanisms in ant societies II:Learning in foraging and division of labour, Experientia Suppl.

[20] P.P. Grassé (1959), “La reconstruction du nid et les coordinations interindividuelles chez bellicositermes natalensis et cubitermes sp”,

La théorie de la stigmergie: essai d’interprétation du comportement des termites constructeurs, Insectes Sociaux 6, pp. 41–81.

PHỤ LỤC

Mã nguồn tham khảo của thuật toán hệ kiến Max-Min giải bài toán TSP

 Cấu trúc dữ liệu của kiến:

typedef struct { long int *tour; char *visited; long int tour_length; } ant_struct; (adsbygoogle = window.adsbygoogle || []).push({});

 Chương trình chính

int main(int argc, char *argv[]) {

init_program(argc, argv);//Khoi tao cac tham so

for ( n_try = 0 ; n_try < max_tries ; n_try++ ) { init_try(n_try); //Dat cac tham so cho 1 lan chay while ( !termination_condition() ) { construct_solutions(); update_statistics(); pheromone_trail_update(); iteration++; } exit_try(n_try); } exit_program(); return(0); }

 Khởi tạo các tham số

void init_program( long int argc, char *argv[] ){ char temp_buffer[LINE_BUF_LEN]; char filename[30]; printf("\nNhap ten:");scanf("%30s",filename); strcpy(name_buf,"dl\\"); strcat(name_buf,filename); strcat(name_buf,".tsp"); optimal = 1; max_tries = 25; max_tours = 10000; n_ants = 50; alpha = 1.0; beta = 2.0; rho = 0.85; }

 Khởi tạo các giá trị cho một lần chạy

- 60 - n_tours = 1; iteration = 1; restart_iteration = 1; (*global_best_ant).tour_length = INFTY; found_best = 0;

tau_max = 1. / ( (1. - rho) * nn_tour() ); tau_min=tau_max/(0.0601*n*n-6.0407*n+202.8); init_pheromone_trails( tau_max );

compute_total_information(); }

 Điều kiện dừng

long int termination_condition( void ){ return ((n_tours>=max_tours)||

((*global_best_ant).tour_length<= optimal)); }

 Xây dựng lời giải

void construct_solutions( void ){ long int k; /* bien dem */

long int phase; /* so luong cac buoc xay dung */ /* Dat tat ca cac thanh pho chua duoc tham */

for ( k = 0 ; k < n_ants ; k++) { ant_empty_memory( &ant[k] ); }

phase = 0;

/* Dat cac con kien len cac thanh pho */ for ( k = 0 ; k < n_ants ; k++ )

place_ant( &ant[k], phase); while ( phase < n-1 ) {

phase++;

for ( k = 0 ; k < n_ants ; k++ ) {

neighbour_choose_and_move_to_next( &ant[k], phase); }

}

phase = n;

for ( k = 0 ; k < n_ants ; k++ ) { ant[k].tour[n] = ant[k].tour[0];

ant[k].tour_length = compute_tour_length( ant[k].tour ); }

n_tours += 1; }

 Lấy lời giải của con kiến tốt nhất

void update_statistics( void ){ (adsbygoogle = window.adsbygoogle || []).push({});

iteration_best_ant = find_best();

if(ant[iteration_best_ant].tour_length<(*global_best_ant ).tour_length ) {

copy_from_to(&ant[iteration_best_ant], global_best_ant); found_best = iteration;

write_report(); }

}

 Bay hơi mùi

void evaporation( void ){ long int i, j; for ( i = 0 ; i < n ; i++ ) { for ( j = 0 ; j <= i ; j++ ) { pheromone[i][j] *=rho; pheromone[j][i] = pheromone[i][j]; } } }  Cập nhật mùi

void global_update_pheromone( ant_struct *a ){ long int i, j, h;

Một phần của tài liệu Thuật toán hệ kiến Max - Min và ứng dụng (Trang 53)