Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 108 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
108
Dung lượng
1,07 MB
Nội dung
Đại Học Quốc Gia Tp Hồ Chí Minh TRƯỜNG ĐẠI HỌC BÁCH KHOA \XW[ TRẦN VĂN HÙNG SONG SONG HOÁ GIẢI THUẬT BRANCH-ANDBOUND CHO BÀI TOÁN TỐI ƯU TỔ HP Chuyên ngành : Công Nghệ Thông Tin Mã số ngành: 01.02.10 LUẬN VĂN THẠC SĨ TP HỒ CHÍ MINH, tháng 01 năm 2007 Lời cảm ơn Trước hết, xin bày tỏ lòng biết ơn Thầy, Cô khoa CNTT trường Đại Học Bách Khoa TP HCM giảng dạy, truyền đạt kiến thức cho suốt khóa học Đặc biệt cám ơn thầy hướng dẫn, tiến só Trần Văn Hoài giúp đỡ suốt trình thực luận văn Tôi xin bày tỏ lòng biết ơn đến khoa Công Nghệ Thông tin trường Đại Học dân lập Công Nghệ Sài Gòn nhiệt tình giúp đỡ tạo điều kiện cho thời gian học làm đề tài TP Hồ Chí Minh 01/2007 Trần Văn Hùng i TÓM TẮT Bài toán tối ưu tổ hợp (có thể biến đổi sang toán tương đương qui hoạch nguyên) có nhiều ứng dụng giới thực Đã có nhiều phương pháp giải toán này, số phương pháp nhánh cận kết hợp với mặt cắt phương pháp tiếng Khác với phương pháp tìm kiếm khác tìm kiếm giá trị tối ưu cục bộ, phương pháp nhánh cận đưa đáp án toàn cục Hơn nữa, phương pháp nhánh cận thích hợp cho việc tính toán song song Do vậy, phương pháp nhánh cận phương pháp có triển vọng to lớn việc giải toán tối ưu tổ hợp có kích cỡ lớn thời gian chấp nhận Báo cáo luận văn khảo sát tất vấn đề liên quan tới việc xây dựng framework bao gồm thiết lập mô hình cho toán, phương pháp sử dụng giải thuật nhánh cận… Phần tiếp theo, luận văn có phân tích thiết kế framework tổng quát ngôn ngữ C++ cho giải thuật nhánh cận Phần cuối, luận văn tập trung phân tích xây dựng ứng dụng song song dựa framework vừa thiết kế kết tính toán song song hệ điều hành linux ii ABSTRACT Combinatorial optimization problems (called integer programming) arise in many fields of real-world There are many methods to solve these problems, among them, branch-and-bound with cutting plane generation is a well-known method Not as non-exact methods, this method can solve efficiently problems to optimality This method is known to be very well suited for parallelization So it is promising to solve large scale optimization problems to optimality within a reasonable computation time This thesis will survey detail all aspect ranged from models to solution methods for branch-and-bound method After that, the thesis also analyse and designs a general framework C++ for parallel branch and bound algorithms The last, an simple IP example designed and implemented that uses this framework, along with computational results on a parallel computer are shown iii CHƯƠNG GIỚI THIỆU 1.1 ĐẶT VẤN ĐỀ 1.2 PHAÏM VI VÀ MỤC TIÊU CỦA ĐỀ TÀI 1.3 NỘI DUNG CỦA LUẬN VĂN CHƯƠNG CÁC KIẾN THỨC LIÊN QUAN ĐẾN ĐỀ TÀI 2.1 ĐẠI SỐ TUYẾN TÍNH 2.2 TẬP LỒI .8 2.2.1 CÁC KHÁI NIỆM VÀ TÍNH CHẤT CỦA TẬP LỒI .8 2.2.2 ĐIỂM CỰC BIÊN CỦA TẬP LỒI 10 2.3 QUI HOẠCH TUYẾN TÍNH 10 2.3.1 CÁC DẠNG TOÁN QUI HOẠCH TUYẾN TÍNH 10 2.3.2 CÁC TÍNH CHAÁT 12 2.4 PHƯƠNG PHÁP ĐƠN HÌNH 13 2.5 PHƯƠNG PHÁP ĐƠN HÌNH ĐỐI NGẪU .15 2.6 QUI HOẠCH NGUYÊN 17 2.7 THIẾT LẬP MÔ HÌNH (FORMULATION) CHO BÀI TOÁN QUI HOẠCH NGUYÊN 18 2.7.1 MỘT SỐ VÍ DỤ 19 2.7.2 BÙNG NỔ TỔ HP 20 2.8 BIÊN CỦA BÀI TOÁN QUI HOẠCH NGUYÊN 21 2.9 SỰ NỚI LOÛNG (RELAXATION) 22 2.9.1 BÀI TOÁN RELAXATION 22 2.9.2 TÍNH CHẤT CỦA RELAXATION PROBLEM 23 2.10 CAÙC HEURISTIC 23 2.10.1 GIẢI THUẬT SIMULATED ANNEALING 24 2.10.2 GIẢI THUẬT DI TRUYỀN (GENETIC ALGORITHM-GA) .27 2.11 TÍNH TOÁN SONG SONG 29 CHƯƠNG GIAÛI THUẬT BRANCH-AND-BOUND 31 3.1 GIỚI THIEÄU .31 3.2 GIẢI THUẬT BRANCH-BOUND 31 3.2.1 PHÂN TÍCH GIẢI THUẬT: 31 3.2.2 BIEÂN 35 3.2.3 PHÂN NHÁNH 37 3.2.4 CHIẾN LƯC CHỌN 38 3.2.5 BRANCH-AND-CUT 39 3.3 TÍNH TOÁN SONG SONG TRONG GIẢI THUẬT 45 3.3.1 GIỚI THIỆU 45 3.3.2 LỰA CHỌN MÔ HÌNH 45 3.3.3 CÁC CHIẾN LƯC .48 iv CHƯƠNG PHÂN TÍCH VÀ THIẾT KẾ FRAMEWORK 50 4.1 GIỚI THIỆU .50 4.2 CẤU TRÚC DỮ LIỆU 51 4.2.1 BIỂU DIỄN BIẾN, RÀNG BUỘC .51 4.2.2 POOL .52 4.2.3 OPENSUB 53 4.2.4 LP SOLVER 54 4.3 GỬI NHẬN THÔNG ĐIỆP 55 4.3.1 ĐÓNG GÓI DỮ LIỆU 55 4.3.2 PHƯƠNG THỨC GỬI NHẬN THÔNG ĐIỆP .55 4.4 SONG SONG HOÁ VÀ CÂN BẰNG TẢI .57 4.4.1 GIẢI THUẬT BRANCH-AND-BOUND SONG SONG 57 4.4.2 KIỂM TRA KẾT THÚC CHƯƠNG TRÌNH 59 4.5 CÂN BẰNG TẢI 61 4.5.1 CHOÏN MÔ HÌNH CÂN BẰNG TẢI .61 4.5.2 CÁC CHIẾN LƯC CÂN BẰNG TẢI 62 CHƯƠNG THIẾT KẾ ỨNG DỤNG 64 5.1 GIỚI THIỆU .64 5.2 MÔ HÌNH BÀI TOÁN SET PARTITIONING 64 5.3 THIEÁT KEÁ CÁC LỚP DẪN XUẤT CHO BÀI TOÁN 65 5.3.1 BIEÁN 66 5.3.2 RÀNG BUỘC 66 5.3.3 LỚP HBCMASTER .66 5.3.4 LỚP HBC_SUB 68 5.3.5 CHƯƠNG TRÌNH CHÍNH 69 CHƯƠNG KẾT QUẢ TÍNH TOÁN 70 6.1 KẾT QUẢ TÍNH TOÁN 70 6.2 KẾT LUẬN .74 CHƯƠNG KẾT LUẬN 75 7.1 KEÁT QUẢ ĐẠT ĐƯC 75 7.2 HẠN CHẾ CỦA ĐỀ TÀI 75 7.3 HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI .75 TÀI LIỆU THAM KHẢO 77 PHUÏ LUÏC A THIEÁT KEÁ FRAMEWORK 82 I THIEÁT KEÁ .82 II SỬ DUÏNG FRAMEWORK 86 CÁC LỚP NGƯỜI SỬ DỤNG CẦN XÂY DỰNG VÀ KẾ THỪA 86 XÂY DỰNG CÁC LỚP DẪN XUẤT 86 PHUÏ LUÏC B ĐỊNH DẠNG TẬP TIN MPS 92 v DANH MỤC GIẢI THUẬT Giải thuật 2-1: Giải thuật đơn hình 14 Giải thuật 2-2: Simulated Annealing .26 Giải thuật 2-3: Giải thuật di truyền 28 Giải thuật 3-1: Giải thuật branch-and-bound tổng quát .33 Giải thuật 4-1: Gửi non-blocking 56 Giải thuật 4-2: Nhaän non-blocking 57 Giải thuật 4-3: Song song branch-and-bound 58 Giải thuật 4-4: Chiến lược Open Subprolem 62 Giaûi thuật 4-5: Chiến lược Idle 63 vi DANH MỤC HÌNH VẼ Hình 2-1: Một số tập hợp lồi R2 R3 .9 Hình 2-2: Lưu đồ giải thuật đơn hình 15 Hình 2-3: Subtour .20 Hình 2-4: Sử dụng upper bound lower bound 22 Hình 3-1: Cây phân nhánh giải thuật branch-and-bound .32 Hình 3-2: Flow-chart cho giải thuật branch-and-bound 35 Hình 3-3: Minh hoạ phân nhánh .38 Hình 3-4: Bài toán IP chieàu 42 Hình 3-5: Giải toán IP phương pháp branch-and-cut 43 Hình 3-6: Mô hình Master – Slave 46 Hình 4-1: Mô hình phân nhóm process 62 Hình 6-1: Kết speedup 73 Hình 6-2: Kết thời gian Idle processor .73 Hình A-1: Kiến trúc framework song song process 84 Hình A-2: Cây kế thừa 86 vii DANH MỤC BẢNG Bảng 6-1: Chiến lược DepthFirstSearch 72 Bảng 6-2 : Chiến lược BestFirstSearch 72 viii CHƯƠNG GIỚI THIỆU 1.1 ĐẶT VẤN ĐỀ Tính toán song song bao hàm việc thiết kế hệ thống tính toán sử dụng nhiều xử lý để giải toán Tính toán song song làm tăng tốc độ thực chương trình cách chia chương trình thành nhiều thành phần thực đồng thời với phần xử lý Về lý thuyết chương trình có thuật toán phù hợp với tính toán song song thực n xử lý nhanh đến n lần so với thực xử lý Trên giới, việc nghiên cứu hệ thống tính toán song song với hàng loạt ứng dụng đời phát triển từ năm 70 Tuy nhiên giá thành chi phí khai thác máy tính có nhiều xử lý thực tính toán song song lớn Do ứng dụng tính toán song song thường mang tính chất vó mô phải có đầu tư cao thiết bị Điều dẫn tới việc nghiên cứu tính toán song song gặp nhiều khó khăn Trên sở phát triển hệ thống phần cứng máy tính, phát triển thiết bị kết nối mạng máy tính, tốc độ tính toán trao đổi thông điệp máy tính ngày cao Với nhận định vậy, hệ thống nghiên cứu để giải vấn đề liên quan đến giải thuật song song Một hệ thống máy tính có nhiều xử lý khác đặt vị trí địa lý khác nhau, kết nối với qua hệ thống mạng xem hệ thống phân bố Với hệ thống phân bố dùng máy vi tính có giá thành không cao, hệ điều hành Linux sở Unix chuẩn, công cụ hỗ trợ xử lý song song PVM, MPI, nghiên cứu chi tiết hệ thống hỗ trợ song - Linear Program: Những class giải toán Linear relaxation Các lớp tạo giao diện chuyển đổi cấu trúc liệu pool cấu trúc thích hợp giải toán LP Relaxation, tạo đối tượng thực thi giải toán LP Relaxation phương pháp đơn hình - Pool: Các lớp trừu tượng sử dụng cho việc biểu diễn Variable Constraint nhớ - Branch-and-bound: Những lớp hỗ trợ cho giải toán qui hoạch tuyến tính dựa giải thuật branch-and-bound, ví dụ: Hỗ trợ việc quản lý branch-and-bound, lưu trữ active Variable Constraint, quản lý buffer cho việc phát sinh biến ràng buộc mới, … - Application Base: Là lớp quan trọng đóng vai trò interface ứng dụng Người sử dụng phải xây dựng lại lớp kế thừa từ lớp để xây dựng cấu trúc liệu cụ thể cho ứng dụng, khởi động ứng dụng, Các lớp cụ thể bao gồm: • ABA_Master: Một class trung tâm framework, chứa giải thuật branch-and-bound chính, có chức điều khiển xử lý tối ưu Trong lớp lưu trữ liệu pool (của toán, process) toán tối ưu • SubProblem: Lớp ABA_sub biểu diễn toán subproblem branch-and-bound (một node) Giải toán tối ưu hoá subproblem thực thi LP solver, thành phần giải LP relaxation toán qui hoạch tuyến tính Hầu hết thời gian xử lý toán lớn xảy class Lớp sub lớp quan trọng phải kế thừa từ lớp ứng dụng • ABA_Constraint, ABA_Variable: Đây lớp cung cấp khái niệm, định nghóa để lưu trữ ràng buộc biến Hai thành phần 85 kế thừa từ lớp định nghóa biến ràng buộc từ ứng dụng người sử dụng để đặc tả, định dạng lại biến, ràng buộc theo đặc tả toán II SỬ DỤNG FRAMEWORK Phần cung cấp cách thức mà người sử dụng cần biết để sử dụng framework cho ứng dụng Những lớp người sử dụng cần kế thừa, cần định nghóa lại hàm ảo nào, mở rộng … CÁC LỚP NGƯỜI SỬ DỤNG CẦN XÂY DỰNG VÀ KẾ THỪA Để sử dụng framework cho ứng dụng, người sử dụng phải xây dựng số lớp kế thừa từ số lớp framework Những lớp người sử dụng phải kế thừa là: ABA_Variable, ABA_Constraint, ABA_Master, ABA_Sub Khi kế thừa, người sử dụng phải định nghóa lại số hàm ảo lớp sở cho toán cụ thể Hình mục lục minh họa tính chất Các lớp MyMaster, MySub, MyVariable, MyConstraint lớp mà người sử dụng cần thiết kế Các lớp kế thừa từ lớp ABA_Master, ABA_Sub, ABA_Variable, ABA_Constraint tương ứng framework Hình A- 2: Cây kế thừa XÂY DỰNG CÁC LỚP DẪN XUẤT Xây dựng lớp MyVariable MyConstraint Bước xây dựng ứng dụng, ta cần phân tích, xây dựng tập ràng buộc biến Do cần lớp ràng buộc biến kế thừa từ lớp sở ABA_Variable ABA_Constraint từ framework Biến ràng buộc sử dụng 86 phải phù hợp với cột hàng ma trận ràng buộc LP ralaxation phát sinh Chúng ta kế thừa lớp sở Variable từ lớp MyVariable để lưu trữ biến formulation ứng dụng Lớp MyConstraint kế thừa từ lớp ABA_Constraint sau: class MYCONSTRAINT : public ABA_CONSTRAINT { public: virtual double coeff(ABA_VARIABLE *v); }; Hàm CONSTRAINT::coeff(VARIABLE *v) hàm ảo, ta định nghóa lại lớp dẫn xuất MYCONSTRAINT Hàm trả hệ số biến v ràng buộc Thông thường, ta cần thực hàm coeff(ABA_VARIABLE *v) để truy xuất tới thuộc tính biến v ứng dụng Hàm coeff() sử dụng framework dòng ràng buộc tính toán Ví dụ, chương trình khởi tạo hay ràng buộc phát sinh Khi biến phát sinh, hàm ảo coeff() lớp Variable sử dụng double ABA_VARIABLE::coeff(ABA_CONSTRAINT *con) { } return con->coeff(this); Phương thức định nghóa hệ số ma trận ràng buộc Hầu hết, biến định nghóa số nguyên, ràng buộc biểu diễn hệ số không âm biến Lớp MyMaster Ứng dụng kế thừa lớp ABA_Master framework để đưa vào liệu formulation toán khởi tạo gốc branch-and-bound (node đầu tiên) Node gốc ứng dụng tạo cách thực đối tượng lớp kế thừa lớp Sub Mysub 87 class MYMASTER : public ABA_MASTER {}; Khởi tạo Biến ràng buộc Ràng buộc biến không phát sinh tự động người sử dụng phải khởi tạo chèn vào pool từ hàm lớp dẫn xuất từ lớp ABA_MASTER, hàm initializeOptimization() Mặc định, framework cung cấp ba pool: Một cho biến hai cho ràng buộc Pool đầu cho ràng buộc không tự động phát sinh Pool thứ hai khởi tạo rỗng bắt đầu chương trình chứa ràng buộc phát sinh trình thực pha cutting giải thuật brancg-and-bound Sau khởi tạo biến ràng buộc, ta phải chèn chúng vào hai pool cố định việc gọi hàm xây dựng lại initializePools virtual void initializePools(ABA_BUFFER &constraints, ABA_BUFFER &variables, int varPoolSize, int cutPoolSize, ); Hàm initializeOptimization() sử dụng xác định đáp án tạo primal bound Việc khởi tạo pool bắt buộc, khởi tạo primal bound tuỳ chọn Hàm initializePools lớp dẫn xuất định nghóa lại: void MYMASTER::initializeOptimization() { ABA_BUFFER variables(this, nVar()); for (int i = 0; i < nVar(); i++) variables.push(new MYVARIABLE( )); ABA_BUFFER constraints(this, nCon()); for (i = 0; i < nCon(); i++) constraints.push(new MYCONSTRAINT( )); initializePools(constraints, variables, nVar(), 2*nCon()); primalBound(myHeuristic()); } 88 Taïo node Node gốc branch-and-bound phải khởi tạo thực thể lớp đặc tả ứng dụng kế thừa từ Sub lớp mysub Việc khời tạo nhờ định nghóa hàm ảo firstSub() trả trỏ tới node MySub Trong đối tượng Mysub vừa hình thành có chứa trỏ trỏ tới master thích hợp ABA_SUB *MYMASTER::firstSub() { return new MYSUB(this); } Lớp MySub: Định nghóa node dẫn xuất từ lớp sub sau: class MYSUB : public ABA_SUB {}; Lớp Sub có hai hàm ảo mà ta định nghóa lại: Hàm phát sinh sau phân nhánh hàm kiểm tra LP relaxation có feasible hay không Chức MySub mở rộng giải thuật branch-and-bound với việc phát sinh biến ràng buộc động heuristic cải thiện primal bound Hàm khởi tạo lớp Sub: Có hai hàm khởi tạo, cho node cây, cho node lại Sự khác hàm khởi tạo việc khởi tạo biến ràng buộc Với node gốc, biến ràng buộc khởi tạo tường minh bắt buộc Với node khác, biến ràng buộc copy từ đối tượng cha sinh sửa đổi luật phân nhánh Hàm tạo node gốc framework gọi từ hàm constructor lớp Mysub, đó, hàm constructor lại sử dụng cho node lại khác node gốc Node gốc gọi từ hàm firstSub() MyMaster Các node khác gọi hàm generateSon() lớp MYSUB - Kiểm tra tính khả thi đáp án 89 Sau LP – Relaxation giải quyết, ta kiểm tra xem kết tối ưu có phải feasible chưa Ta cần định nghóa lại hàm ảo feasible() Mysub, trả true kết LP solution feasible, ngược lại trả false bool MYSUB::feasible() {} Hàm feasible trả true thỏa tất ràng buộc formulation đáp án X∈Zn Phát sinh Hàm ảo firstSub() tạo node gốc branch-and-bound khởi tạo toán Ta cần hàm phát sinh node branch-and-bound Hàm generateSon thực điều này, trả node có thêm thành phần contrỏ tới node cha Sub*Mysub::generateSon(BranchRule *rule) { return new MySub(master_, this, rule); } Hàm tự động gọi trình xử lý phân nhánh Trả trỏ đối tượng subproblem cụ thể lớp dẫn xuất từ lớp SUB (lớp MySub) Subproblem tạo luật phân nhánh rule Hàm Separation Mặt cắt (cutting planes) đặc tả toán định nghóa lại hàm virtual dummy separation Hàm trả số ràng buộc phát sinh Hàm chạy đối số cutting true hàm constructor MyMaster gọi hàm trả số ràng buộc phát sinh int MYSUB::separate() {} 90 Một ràng buộc phát sinh lần đầu thêm vào hàm addCons() Những ràng buộc phát sinh vòng lặp trước trở thành inactive, chứa cut pool Những ràng buộc phát sinh lại hàm constraintPoolSeparation() - Primal Heuristic Sau giải xong toán LP Relaxation subproblem, hàm ảo improve() gọi Hàm định nghóa lại Mysub Đối số primalValue giá trị feasible toán LP Relaxation Trong hàm sử dụng heurictis cải thiện lại primal bound Nếu primal bound heurictis tìm tốt gía trị feasible, hàm cập nhật primal bound toàn cục master trả trạng thái Ngược lại, trả int Mysub::improve(double &primalValue) Bắt đầu toán tối ưu Sau định nghóa xong lớp dẫn xuất cho ứng dụng, ta thực thi việc tối ưu hoá từ chương trình Giả sử ứng dụng có file tham số đưa liệu vào, hàm main chương trình viết sau: int main(int argc, char **argv) { MYMASTER master(argv[1]); master.optimize(); return master.status(); } 91 PHUÏ LUÏC B ĐỊNH DẠNG TẬP TIN MPS Định dạng tập tin MPS (Mathematical Programming System) phần mã hóa liệu toán IP Tập tin MPS tập tin dạng văn bản, MPS chứa đựng hai loại dòng văn bản: dòng văn dùng để thị dòng văn dùng để lưu liệu Loại dòng văn thị dùng để xác định loại liệu Mỗi dòng văn thị có từ, từ phải viết hoa bắt đầu cột Loại dòng văn liệu chứa đựng thông tin liệu toán Mỗi dòng văn liệu chia thành sáu field: Field Field Các cột 2–3 5–12 Nội dung Code Name Field Field 15–22 Name 25–36 Number Field Field 40–47 Name 50–61 Number Một dòng văn liệu có số field không bắt buộc phải có Name dùng để xác định cột dòng Code nằm field không bắt buộc phải có Name field 2, 3, chứa đựng tối đa kí tự Nếu name đặt field 3, kí tự phải khác kí tự đô la “$” Nếu name có chứa khoảng trắng khoảng trắng bị xóa Number field 4, viết dạng sxxEsyy, với s dấu cộng “+” dấu trừ “–”, xx số thực, yy số nguyên Tổng số kí tự field filed không 12 kí tự Ví dụ: 1.5E+3 số hợp lệ, s có không, không đặc tả dấu dấu cộng “+” Nếu dòng văn bản, dấu hoa thị “*” cột dòng văn xem dòng thích Bên cạnh đó, kí tự field 3, kí tự đô la “$” tất kí tự sau dấu đô la “$” xem phần thích Tập tin MPS chứa đựng dòng văn theo thứ tự sau: 92 NAME: dòng văn thị ROWS: dòng văn thị Các dòng văn liệu: dùng đặc tả hàng, phần hiển thị ràng buộc RHS: dòng văn thị Các dòng văn liệu: mô tả phần bên phải ràng buộc RANGES: dòng văn thị Các dòng văn liệu: mô tả phạm vi ràng buộc có cận cận BOUNDS: dòng văn thị Các dòng văn liệu: mô tả kiểu giới hạn cột (biến cấu trúc) ENDATA: : dòng văn thị Section nhóm dòng văn bao gồm dòng văn thị dòng văn liệu theo sau dòng văn thị Ví dụ section ROWS bao gồm dòng văn thị ROWS dòng văn liệu đặc tả hàng Các section: RHS, RANGES, BOUNDS có tập tin MPS Dòng văn thị NAME Dòng văn thị NAME đặt vị trí đầu tập tin MPS Dòng văn chứa đựng từ NAME cột 1–4 tên toán nằm vị trí field Tên toán có Section ROWS Section ROWS bắt đầu dòng văn thị, dòng văn thị chứa từ ROWS cột 1–4 Mỗi dòng văn liệu phần ROWS đặc tả hàng ràng buộc toán Tất dòng văn liệu có dạng sau: 93 ‘N’ field có nghóa hàng giới hạn hàng dành cho hàm mục tiêu: ## < xi = ai1xm+1 + ai2xm+2 + + ainxm+n < +# ‘L’ field có nghóa hàng “nhỏ bằng”: ## < xi = ai1xm+1 + ai2xm+2 + + ainxm+n ≤ bi ‘G’ field có nghóa hàng “lớn bằng”: bi ≤ xi = ai1xm+1 + ai2xm+2 + + ainxm+n < +# ‘E’ field coù nghóa hàng “bằng”: xi = ai1xm+1 + ai2xm+2 + + ainxm+n = bi Ở ý bi phần bên phải hàng ràng buộc Mỗi hàng có biến bổ trợ định nghóa ngầm xi, giới hạn hàng xem giới hạn biến bổ trợ xi Field đặc tả tên hàng, tức ta đặc tả tên biến bổ trợ Các field 3, 4, 5, and không dùng nên chúng bỏ trống Các giá trị khác không biến bi nằm bên phải ràng buộc đặc tả section RHS Tất ràng buộc có giới hạn giới hạn đặc tả section RANGES (trình bày bên dưới) Section COLUMNS Section COLUMNS bắt đầu dòng văn thị, dòng văn thị chứa từ COLUMNS cột 1–7 Mỗi dòng văn liệu đặc tả hai hệ số ràng buộc aij thêm vào tên cột (tên cột tên biến cấu trúc) Tất dòng văn liệu có dạng sau: Field không sử dụng nên bỏ trống Field dùng để đặc tả tên cột Nếu field bỏ trống tên cột dòng văn tên cột dòng văn trước 94 Field dùng để đặc tả tên hàng, tên hàng đặc tả section ROWS Field đặc tả hệ số ràng buộc aij, hệ số phải tương ứng với hàng cột ràng buộc Field có sử dụng không Nếu hai field có sử dụng field đặc tả tên hàng field đặc tả hệ số ràng buộc Các hệ số ràng buộc không đặc tả section ROWS mang giá trị Section RHS Section RHS bắt đầu dòng văn thị, dòng văn thị chứa từ RHS cột 1–3 Mỗi dòng văn liệu đặc tả hai bi Tất dòng văn liệu có dạng sau: Field không sử dụng nên bỏ trống Field tên RHS, field trống tên RHS dòng văn tên RHS dòng văn trước Field đặc tả tên hàng định nghóa section ROWS Field đặc tả phần bên phải hàng (tên hàng định nghóa field 3), phần bên phải hàng bi Field có sử dụng không Nếu có sử dụng field đặc tả tên hàng field đặc tả bi Section RANGES Section RANGES bắt đầu dòng văn thị, dòng văn thị chứa từ RANGES cột 1–6 Mỗi dòng văn liệu đặc tả hai hàng có ràng buộc ràng buộc Đó ràng buộc kiểu “L” kieåu “G”: li ≤ xi = ai1xm+1 + ai2xm+2 + + ainxm+n ≤ ui 95 Với li cận ui cận Tất dòng văn liệu có dạng sau: Field không sử dụng nên bỏ trống Field tên RANGES, field trống tên RANGES dòng văn tên RANGES dòng văn trước Field đặc tả tên hàng định nghóa section ROWS Field đặc tả khoảng ri Giá trị ri tính sau: Kiểu hàng Dấu ri Cận Cận G “+” hay “–” bi bi + | ri | L “+” hay “–” bi – | ri | bi E “+” bi bi + | ri | E “–” bi – | ri | bi Section BOUNDS Section BOUNDS bắt đầu dòng văn thị, dòng văn thị chứa từ BOUNDS cột 1–6 Mỗi dòng văn liệu đặc tả cận cận cột Tất dòng văn liệu có dạng sau: Field đặc tả kiểu cận cận dưới: LO: cận UP: cận FX: biến cố định (cận cận nhau) FR: biến tự MI: cận PL: cận 96 Field tên BOUNDS, field trống tên BOUNDS dòng văn tên BOUNDS dòng văn trước Field đặc tả tên cột định nghóa section COLUMNS Field đặc tả giá trị cận Nếu kiểu cận field LO, UP FX giá trị field bỏ trống Field 5, không sử dụng nên bỏ trống Bởi mặc định, tất cột đặc tả có giá trị không âm, tức có cận cận Dòng văn thị ENDATA Dòng văn thị ENDATA đặt vị trí cuối tập tin MPS Dòng văn chứa đựng từ ENDATA cột 1–6 Một số đặc tính MPS Định dạng MPS cung cấp hai cách đặc tả áp dụng cho toán có biến nguyên Cách thứ cách tổng quát, cách dùng dòng văn INTORG INTEND để đánh dấu Các dòng văn đặt phần COLUMNS Dòng văn INTORG đặt đầu nhóm biến nguyên dòng văn INTEND đặt cuối nhóm biến nguyên Tập tin MPS chứa thêm dòng văn dánh dấu field sau: Field 1, không sử dụng nên bỏ trống Field dùng để lưu tên Tên đặt Field chứa từ ‘MARKER’ (chú ý có chứa hai dấu nháy đơn) Field chứa từ ‘INTORG’ (bao gồm hai dấu nháy đơn) phần đầu nhóm biến nguyên chứa từ ‘INTEND’ (bao gồm hai dấu nháy đơn) phần cuối nhóm biến nguyên Cách thứ hai tổng quát tiện lợi số trường hợp Cách cho phép khai báo cột kiểu nguyên cách sử dụng hai cách khai báo, 97 đặc tả field dòng văn liệu phần BOUNDS Hai cách khai báo trình bày sau: UI: cận nguyên Đây đặc tả cận biến nguyên, tên biến đặc tả field Trong trường hợp cận biến đặc tả field BV: biến nhị phân Đây đặc tả cận biến nhị phân, tên biến đặc tả field Trong trường hợp cận biến cận biến Do giá trị đặc tả field bỏ qua 98 TÓM TẮT LÝ LỊCH TRÍCH NGANG HỌ VÀ TÊN: TRẦN VĂN HÙNG NGÀY THÁNG NĂM SINH: 26-01-1970 NƠI SINH: Thái Bình ĐỊA CHỈ LIÊN LẠC: 159/70 - Trần Văn Đang – Phường 11 Quận – Tp Hồ Chí Minh QUÁ TRÌNH ĐÀO TẠO Đại học: Chế độ học: Chính qui Thời gian học: 1996-2000 Nơi học: Đại học Đà Lạt Ngành học: Công Nghệ Thông Tin Cao học: Thời gian học: Bắt đầu từ 2004 Nơi học: Đại học Bách Khoa TP.HCM Ngành học: Công Nghệ thông tin QUÁ TRÌNH CÔNG TÁC 2000-2001: Công tác công ty phần mềm GreenPine 2001 đến nay: Tham gia giảng dạy trường đại học Dân Lập Công Nghệ Sài Gòn (STU) ... tiếp tới giải thuật branch- and- bound Phần sau chi tiết toán giải thuật môi trường song song Sô đồ giải thuật branch- and- bound minh hoạ hình 3-2 Hình 3-2 Flow-chart cho giải thuật branch- and- bound. .. cần giải thuật môi trường phù hợp giải toán Giải thuật nhánh cận (branch- and- bound) xem giải thuật tiêu biểu để đưa lời giải xác thời gian chấp nhận Hơn nữa, giải thuật branch- and- bound song song... MỤC GIẢI THUẬT Giải thuật 2-1: Giải thuật đơn hình 14 Giải thuật 2-2: Simulated Annealing .26 Giải thuật 2-3: Giải thuật di truyền 28 Giaûi thuật 3-1: Giải thuật branch- and- bound