Bài giảng cao học Quy hoạch rời rạc
lượt xem 11
download
Bài giảng trình bày một cách hệ thống về Quy hoạch rời rạc với cơ sở lý thuyết chặt chẽ, chứng minh tính hữu hạn của các thuật toán Gomory, hơn nữa còn đưa ra chương trình nguồn viết bằng C cho các thuật toán. Cấu trúc của bài giảng gồm 6 chương trình bày các nội dung: Bài toán quy hoạch rời rạc, những khái niệm mở đầu, thuật toán Gomory thứ nhất,thuật toán Gomory thứ hai,thuật toán Gomory thứ ba, thuật toán nhánh và cận. Mời các bạn cùng tham khảo nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng cao học Quy hoạch rời rạc
- VIỆN KHOA HỌC VÀ CÔNG NGHỆ VIỆT NAM VIỆN TOÁN HỌC PGS.TS. BÙI THẾ TÂM QUY HOẠCH RỜI RẠC BÀI GIẢNG CAO HỌC HÀ NỘI 10-2008
- Bùi Thế Tâm i Quy hoạch rời rạc LỜI NÓI ĐẦU Tài liệu này là các Bài giảng của môn Quy hoạch rời rạc thuộc Trung tâm đào tạo sau đại học, Viện Toán học, Viện Khoa học và Công nghệ Việt nam trong các năm 2006, 2007 và 2008. Đây là tài liệu đầu tiên được viết bằng tiếng Việt trình bày một cách hệ thống về Quy hoạch rời rạc với cơ sở lý thuyết chặt chẽ, chứng minh tính hữu hạn của các thuật toán Gomory, hơn nữa còn đưa ra chương trình nguồn viết bằng C cho các thuật toán. Kiến thức chuẩn bị để tiếp thu giáo trình này là lý thuyết căn bản về quy hoạch tuyến tính và phương pháp đơn hình [9], lập trình bằng ngôn ngữ C++ [11], bảng tính điện tử Microsoft Excel [12]. Tài liệu gồm bảy chương. Chương 1 trình bày các bài toán phát sinh trong thực tiễn dẫn đến các bài toán quy hoạch rời rạc, phát biểu bài toán quy hoạch rời rạc tổng quát. Các bài tập ở cuối chương 1 có thể dùng lệnh Solver trong Microsoft Excel để giải, hướng dẫn lệnh này cho trong tài liệu [12] hoặc[13]. Trong Chương 2 nêu những khái niệm cơ bản về quy hoạch tuyến tính, phương pháp đơn hình bình thường, phương pháp đơn hình đối ngẫu từ vựng và chương trình máy tính viết bằng C++, và khái niệm về bài toán quy hoạch tuyến tính nguyên. Chương 3 trình bày tư tưởng phương pháp cắt, thuật toán Gomory thứ nhất và chứng minh sự hội tụ của nó (tài liệu gốc trong [1], [2]), chương trình máy tính của thuật toán Gomory thứ nhất. Chương 4 xét hai thuật toán: thuật toán Gomory thứ hai dùng để giải bài toán quy hoạch tuyến tính nguyên bộ phận [3], thuật toán Dalton - Llewellyn dùng để giải bài toán quy hoạch tuyến tính với các biến nhận giá trị rời rạc [4], chương trình máy tính của hai thuật toán này. Chương 5 trình bày thuật toán Gomory thứ ba nhằm xây dựng các lát cắt đảm bảo tất cả các Bảng đơn hình ở mỗi bước đều có tất cả các phần tử là nguyên [5], [6], chương trình máy tính của thuật toán Gomory thứ ba. Chương 6 trình bày tư tưởng của phương pháp nhánh cận, phương pháp Land A.H và Doig A.G giải bài toán qui hoạch nguyên [7], phương pháp Little J.D, Murty K.G, Sweeney D.W và Karen C giải bài toán người du lịch [8]. Các tài liệu gốc [1]-[8] được A.A. Korbut, Iu. Iu. Phinkenstein trình bày lại trong cuốn sách [10]. Năm chương trình bằng ngôn ngữ C trong tài liệu này về Phương pháp đơn ngẫu từ vựng, ba thuật toán Gomory, thuật toán Dalton đều do chính tác giả lập. Bạn đọc quan tâm tới lập trình bằng Pascal cho các bài toán tối ưu của Quy hoạch tuyến tính, Quy hoạch phi tuyến và Quy hoạch rời rạc có thể tham khảo tài liệu [14]. Các trường Đại học, các cơ sở đào tạo có nhu cầu giảng dạy môn này, hoặc hướng dẫn giảng viên để giảng dạy môn này, hoặc bạn đọc muốn góp ý về giáo trình này xin vui lòng liên hệ với tác giả theo địa chỉ: Bùi Thế Tâm, Viện Toán học, Viện Khoa học và Công nghệ Việt Nam, 18 Hoàng Quốc Việt, Cầu giấy, Hà nội ; địa chỉ email: bttam@math.ac.vn Hà Nội, ngày 4 tháng10 năm 2008
- Bùi Thế Tâm ii Quy hoạch rời rạc TÀI LIỆU THAM KHẢO 1. Gomory R.E. An algorithm for integer solutions to linear programs. Recent Advances Math. Program. New York - San Francisco - Toronto - London, McGraw-Hill Book Co., Inc., 1963, 269-302. 2. Gomory R.E. Outline of an algorithm for integer solution to linear programs. Bull. Amer. Math. Soc., 1958, 64, N5, 275-278. 3. Gomory R.E. An algorithm for the mixed integer problem. Rand. Corp., P- 1885, Santa Monica, California, February 22, 1960. 4. Dalton R.E, Llewellyn R.W. An extension of the Gomory mixed-integer algorithm to mixed-discrete variable. Manag. Sci., 1966, 12, N7, 562-575. 5. Gomory R.E. An all-integer integer programming algorithm. IBM Research Center, 1960, January, Research Report RC-189. 6. Gomory R.E. An all-integer integer programming algorithm. In "Industrial scheduling", Englewood Cliffs, New Jersey, Prentice Hall, 1963, ch. 13. 7. Land A.H, Doig A.G. An automatic method of solving discrete programming problems. Econometrica, 1960, 28, N3, 497-520. 8. Little J.D.C,Murty K.G, Sweeney D.W, Karel C. An algorithm for the traveling salesman problem. Operat. Res., 1963, 11, N6, 972-989. 9. Bùi Thế Tâm, Trần Vũ Thiệu. Các phương pháp tối ưu hóa. NXB GTVT, 1998, 408 trang 10. A.A. Korbut, Iu. Iu. Phinkenstein. Quy hoạch rời rạc (tiếng Nga). NXB Khoa học, Mascva, 1969, 368 trang 11. Bùi Thế Tâm. Ngôn ngữ C và lập trình hướng đối tượng. NXB GTVT, 2006, 240 trang. 12. Bùi Thế Tâm. Giáo trình Windows 2000, Word 2000, Excel 2000, Powerpoint 2000. NXB GTVT, 2002. 13. Bùi Thế Tâm. Giải các bài toán tối ưu và thống kê trên Microsoft Exel. Công bố trên http://ebook.edu.net.vn, phần Công nghệ thông tin, 2007. 14. Bùi Thế Tâm. Turbo Pascal: lý thuyết cơ bản, bài tập, những chương trình mẫu trong khoa học kỹ thuật và kinh tế. NXB GTVT, 1993, 460 trang. VÀI NÉT VỀ TÁC GIẢ B.T. Tâm sinh năm 1948 tại Hiệp Hoà, Bắc Giang; hiện làm việc tại Phòng Tối ưu và Điều khiển thuộc Viện Toán học, Viện Khoa học và Công nghệ Việt nam; bảo vệ Tiến sỹ tháng 5/1978 tại Viện Hàn lâm Khoa học Liên xô; nhận học hàm Phó giáo sư tháng 7/1996.
- Bùi Thế Tâm iii Quy hoạch rời rạc MỤC LỤC Chương 1. Bài toán quy hoạch rời rạc I.1 1. Định nghĩa bài toán I.1 2. Các bài toán thực tế dẫn đến bài toán quy hoạch rời rạc I.2 Chương 2. Những khái niệm mở đầu II.1 1. Những khái niệm cơ bản về quy hoạch tuyến tính II.1 2. So sánh theo nghĩa từ vựng II.3 3. Bảng đơn hình, các phương án và giả phương án II.4 4. Phương pháp đơn hình II.5 5. Phương pháp đơn hình đối ngẫu từ vựng II.6 6. Bài toán quy hoạch tuyến tính nguyên II.16 Chương 3. Thuật toán Gomory thứ nhất III.1 1. Tư tưởng phương pháp cắt III.1 2. Thuật toán Gomory thứ nhất III.5 3. Tính hữu hạn của thuật toán Gomory thứ nhất III.9 4. Giải ví dụ số III.11 5. Chương trình máy tính III.15 Bài tập III.23 Chương 4. Thuật toán Gomory thứ hai IV.1 1. Lược đồ logic của thuật toán IV.1 2. Thuật toán Gomory thứ hai IV.2 3. Thuật toán Dalton và Llewellyn IV.20 Bìa tập IV.33 Chương 5. Thuật toán Gomory thứ ba V.1 1. Ảnh hưởng sai số làm tròn và tư tưởng của thuật toán Gomory thứ ba V.1 2. Xây dựng lát cắt đúng nguyên, thuật toán Gomory thứ ba V.3 3. Chương trình máy tính V.13 Bài tập V.22 Chương 6. Thuật toán nhánh và cận VI.1 1. Tư tưởng của phương pháp nhánh và cận VI.1 2. Phương pháp Land và Doig giải bài toán quy hoạch nguyên VI.3 3. Phương pháp nhánh cận giải bài toán người du lịch VI.6 Bài tập VI.19
- Bùi Thế Tâm I.1 Quy hoạch rời rạc Chương 1 BÀI TOÁN QUY HOẠCH RỜI RẠC 1. ĐỊNH NGHĨA BÀI TOÁN QUY HOẠCH RỜI RẠC Trong các bài toán quy hoạch tuyến tính, các biến số có thể nhận những giá trị thực không âm. Tuy nhiên, trong thực tiễn thường gặp các bài toán mà các biến số chỉ có thể nhận một số hữu hạn hay đếm được giá trị, thường là các giá trị nguyên. Chẳng hạn sẽ là vô nghĩa khi đưa ra câu trả lời: cần sản xuất nửa cái bàn hay cần thuê 2,7 cái ô tô để vận chuyển hàng hoá…Trong một số bài toán, chẳng hạn bài toán vận tải với các lượng hàng cung và cầu là các số nguyên, song nhiều bài toán khác thì không phải như vậy. Vì thế trong chương này sẽ đề cập đến nội dung và phương pháp giải các bài toán tối ưu trên lưới các điểm nguyên hay trên các tập rời rạc, gọi tắt là bài toán quy hoạch rời rạc hay bài toán quy hoạch nguyên. Bài toán quy hoạch rời rạc có dạng sau: Tìm cực đại của hàm f ( x, y ) phụ thuộc hai nhóm biến x và y với các ràng buộc có dạng: gi ( x, y ) ≤ 0, i = 1, 2,...m, x ∈ D trong đó, x = ( x1 , x2 ,..., x p ), y = ( y1 , y2 ,..., yq ), p > 0, q ≥ 0 , D là tập hữu hạn các véc tơ p - chiều, còn f , gi là những hàm cho trước của n biến số ( n = p + q ). Nếu f , gi là các hàm tuyến tính và D là lưới các điểm nguyên, thì ta có bài toán quy hoạch nguyên tuyến tính, còn nếu D là tập các véc tơ p thành phần 0 hay 1 thì ta có bài toán quy hoạch nguyên 0 − 1 . Nếu q = 0 , nghĩa là chỉ có các biến rời rạc x1 , x2 ,..., x p thì bài toán được gọi là bài toán quy hoạch nguyên hoàn toàn. Còn nếu q > 0 thì bài toán được gọi là bài toán nguyên bộ phận. Chú ý Sở dĩ bài toán quy hoạch rời rạc còn được gọi là bài toán quy hoạch nguyên là vì bất kỳ bài toán với các biến số chỉ nhận một số hữu hạn giá trị cho trước, đều có thể quy về bài toán trong đó các biến chỉ nhận các giá trị nguyên. Ví dụ, giả sử biến x biểu thị quy mô công suất của nhà máy điện cần xây dựng chỉ có thể lấy một trong các giá trị cho trước a1 , a2 ,..., ak (các quy mô công suất tiêu chuẩn). Khi đó bằng cách đặt: x = a1u1 + a2u2 + ... + ak uk , với u1 + u2 + ... + uk = 1, u j ∈ {0;1} , j = 1, 2..., k thì biến rời rạc x có thể được thay thế bởi một số biến u j chỉ nhận giá trị 0 hay 1 , gọi tắt là biến 0 − 1 hay biến Boolean.
- Bùi Thế Tâm I.2 Quy hoạch rời rạc Tương tự, nếu x ∈ {0,1, 2,..., k } thì ta có thể viết x = u1 + u2 + ... + uk , u j ∈ {0;1} , j = 1, 2..., k nghĩa là bất kỳ bài toán với các biến nguyên bị chặn tuỳ ý, đều có thể quy về bài toán với các biến 0 − 1 . Điều này cho thấy bài toán quy hoạch nguyên 0 − 1 giữ vai trò quan trọng trong quy hoạch rời rạc. 2. CÁC BÀI TOÁN THỰC TẾ DẪN TỚI QUY HOẠCH RỜI RẠC 2.1. Bài toán vận tải Có m kho hàng (điểm phát) chứa một loại hàng hoá, lượng hàng ở kho i là ai và n nơi tiêu thụ (điểm thu), nhu cầu ở nơi thu là b j , cij là chi phí vận chuyển một đơn vị hàng từ điểm phát i đến điểm thu j . Xác định các lượng hàng vận chuyển xij từ các điểm phát i tới các điểm thu j sao cho tổng chi phí là nhỏ nhất và nhu cầu các điểm thu được thoả mãn. Dạng toán học của bài toán là: ∑c x ij ij ij → min n ∑x j =1 ij = ai , i = 1, 2,..., m m ∑x i =1 ij = b j , j = 1, 2,..., n xij ≥ 0 m n ∑a = ∑b . i =1 i j =1 j Nếu các ai và b j là nguyên thì đa diện lồi xác định bởi các ràng buộc của bài toán có mọi đỉnh đều là nguyên. Do đó ta có thể dùng phương pháp đơn hình để giải bài toán quy hoạch tuyến tính này, lời giải cuối cùng nhận được sẽ là một phương án nguyên. Ví dụ. Xét bài toán vận tải có 3 điểm phát và 4 điểm thu với ma trận chi phí như sau: 2 1 4 3 cij = 6 0 5 2 , ai = (10, 25, 15), b j = (5, 15, 20, 10) 1 4 8 2 Đáp số: trị tối ưu hàm mục tiêu là 115, phương án vận chuyển tối ưu là: x[1,3]=10, x[2,2]=15, x[2,3]=10, x[3,1]=5, x[3,4]=10 2.2. Bài toán phân việc
- Bùi Thế Tâm I.3 Quy hoạch rời rạc Có n đơn vị sản xuất cần sản xuất n loại sản phẩm, cij là chi phí cho đơn vị i sản xuất sản phẩm j . Hãy phân công mỗi đơn vị sản xuất một sản phẩm để tổng chi phí là nhỏ nhất. Dạng toán học của bài toán là: n n ∑∑ c x i =1 j=1 ij ij → min n ∑x j =1 ij = 1, i = 1, 2,..., n m ∑x i =1 ij = 1, j = 1, 2,..., n xij ∈ {0;1} Ví dụ có 4 đơn vị sản xuất 4 loại sản phẩm với ma trận chi phí sau: 100000 4000000 800000 550000 200000 3500000 750000 500000 400000 2000000 700000 400000 300000 5000000 600000 450000 Đáp số: trị tối ưu hàm mục tiêu là 3200000 đồng, phương án tối ưu là: x[1,1]=x[2,4]=x[3,2]=x[4,3]=1. 2.3. Bài toán cái túi Có một cái túi chứa được nhiều nhất một trọng lượng là b , có n đồ vật cần mang, đồ vật j nặng a j , giá trị của nó là c j . Bài toán đặt ra là cho những đồ vật nào vào túi để tổng giá trị của nó lớn nhất. Ký hiệu x j là số đồ vật j được đưa vào túi. Dạng toán học của bài toán là: n ∑c x j=1 j j → m ax n ∑a x j =1 j j ≤b x j ≥ 0, x j ∈ Z Ví dụ. Có một cái túi chứa được nhiều nhất là 62 kg, có 10 đồ vật cần mang 30 x1 + 19 x2 + 13 x3 + 38 x4 + 20 x5 + 6 x6 + 8 x7 + 19 x8 + 10 x9 + 11x10 → max 15x1 + 12 x2 + 9 x3 + 27 x4 + 15 x5 + 5 x6 + 8 x7 + 20 x8 + 12 x9 + 15 x10 ≤ 62 x j ∈ {0,1} , j = 1, 2,...,10 Đáp số: trị tối ưu hàm mục tiêu là 95, phương án tối ưu là (1,1,0,1,0,0,1,0,0,0) 2.4. Bài toán xếp hàng lên tầu
- Bùi Thế Tâm I.4 Quy hoạch rời rạc Một tầu chở hàng có trọng tải T và thể tích K , tầu chở n loại hàng, hàng loại j có số lượng là s j , có trọng lượng là a j , thể tích b j và giá trị sử dụng là c j . Bài toán đặt ra là cần xác định số lượng hàng loại j cần xếp lên tàu x j để tổng giá trị hàng hoá trên tầu là lớn nhất. Dạng toán học của bài toán là: n ∑c x j=1 j j → m ax n ∑a x j =1 j j ≤T n ∑b x j =1 j j ≤K x j ∈ {0,1, 2,..., s j } , j = 1, 2,..., n Ở đây, không giảm tính tổng quát của bài toán ta có thể giả sử các hệ số T , K , a j , b j , c j (với mọi j ) đều là các số dương. 2.5. Bài toán xếp hàng vào các công ten nơ rỗng cùng loại Có n loại hàng hoá cần được xếp lên các công ten nơ rỗng như nhau với tải trọng của mỗi công ten nơ là T và dung lượng là K . Hàng hoá loại j có trọng lượng a j , khối lượng b j và số lượng cần vận chuyển là s j ( j = 1, 2,..., n ). Hãy tìm cách xếp tất cả số hàng hoá này lên công ten nơ sao cho dùng ít công ten nơ nhất? Giả sử ta đã biết được m là số công ten nơ tối đa cần thiết để chở hết số hàng hoá trên. Chẳng hạn, số m có thể tìm theo cách: xếp dần các đồ vật lên công ten nơ theo thứ tự tuỳ ý, cái nọ tiếp cái kia, cho đến khi trọng lượng hay dung tích của công ten nơ đã dùng hết. Tiếp đó sử dụng công ten nơ tiếp theo… Gọi xij là số đồ vật j được chở trên công ten nơ i , yi là biến nhận giá trị 0 hay 1 tuỳ theo có dùng công ten nơ i hay không. Dạng toán học của bài toán là: m ∑y i =1 i → min n ∑a x j =1 j ij ≤ Tyi , i = 1, 2,..., m n ∑b x j =1 j ij ≤ Kyi , i = 1, 2,..., m m ∑x i =1 ij = sj, j = 1, 2,..., n xij ∈ {0,1, 2, , s j } , i = 1, 2,..., m, j = 1, 2,..., n yi ∈ {0,1} i = 1, 2,..., m
- Bùi Thế Tâm I.5 Quy hoạch rời rạc Hai nhóm ràng buộc đầu biểu thị yêu cầu không chuyên chở quá tải trọng và dung lượng của mỗi công ten nơ được sử dụng ( yi = 1 ), còn công ten nơ không sử dụng ( yi = 0 ) cần phải rỗng. Nhóm ràng buộc thứ ba biểu thị mọi đồ vật cần được xếp vào các công ten nơ. 2.6. Bài toán người du lịch Cho đồ thị G = (V , E ), V là tập n đỉnh, E là tập n cạnh. Gọi cij là độ dài của cung nối từ đỉnh i đến đỉnh j, có thể cij ≠ c ji và cii = ∞ với mọi i . Một chu trình Hamilton là một chu trình sơ cấp mà nó tương đương với việc xuất phát từ một đỉnh bất kỳ cho trước, đi qua mọi đỉnh khác đúng một lần và trở lại đỉnh xuất phát. Tổng khoảng cách trên các cạnh trong hành trình đó là độ dài của hành trình đó. Mục tiêu của bài toán người du lịch là tìm chu trình Hamilton có độ dài ngắn nhất. Đặt xij = 1 nếu cung (i, j ) được chọn và bằng 0 nếu trái lại. Dạng toán học của bài toán là: n n ∑∑ c x i =1 j=1 ij ij → min n ∑x j =1 ij = 1, i = 1, 2,..., n m ∑x i =1 ij = 1, j = 1, 2,..., n xij ∈ {0;1} , i, j = 1, 2,..., n ui − u j + nxij ≤ n − 1, 2 ≤ i ≠ j ≤ n trong đó ui nhận giá trị nguyên hay thực. Hai tập ràng buộc đầu biểu thị mỗi thành phố được thăm đúng một lần. Ràng buộc cuối đưa vào để mỗi hành trình của bài toán chỉ chứa duy nhất một chu trình. Bài toán người du lịch là một bài toán rất quen thuộc và nổi tiếng trong tối ưu rời rạc. Tuy số phương án của bài toán là hữu hạn (bằng n ! đối với bài toán có n thành phố) nhưng với n cỡ hàng ngàn trở lên thì số phương án này cực kỳ lớn, vì thế cách duyệt toàn bộ là không thể thực hiện được, mặc dầu có sự trợ giúp của các máy tính cực mạnh. Little J.D, Murty K.G, Sweeney D.W và Karel C 1963 là những người đầu tiên sử dụng thành công phương pháp nhánh cận để giải bài toán người du lịch và cho đến nay phương pháp này với nhiều cải tiến khác nhau vẫn là công cụ chủ yếu để giải quyết bài toán đề ra. 2.7. Bài toán với chi phí cố định Xét bài toán tối ưu có dạng sau: n min f(x)= ∑ f j ( x j ) : x = ( x1 , x2 ,..., xn ) ∈ D j=1 trong đó D ⊂ R+n là một tập lồi đóng và:
- Bùi Thế Tâm I.6 Quy hoạch rời rạc d j + c j x j khi x j > 0 f j (x j ) = ( j = 1, 2,..., n) 0 khi x j = 0 Giả thiết d j > 0 với mọi j = 1, 2,..., n . Các số d j thường được hiểu là các chi phí cố định cần thiết để đưa phương thức sản xuất j vào hoạt động, nó không phụ thuộc vào cường độ sử dụng của phương thức này ( x j ) . Giả sử đã biết p j là cận trên của biến ( x j ) , tức là: p j ≥ max {x j : x ∈ D} , j = 1, 2,..., n Khi đó ta có thể đưa bài toán trên về bài toán tương đương với nó dạng: n ∑ (c x j =1 j j + d j y j ) → min x ∈ D, 0 ≤ x j ≤ p j y j , y j ∈ {0,1} , j = 1, 2,..., n 2.8. Bài toán với ràng buộc dạng lựa chọn Cho hai hàm số g ( x) và h( x) bị chặn trên trên tập hợp D . Nếu ta đòi hỏi phải có hoặc g ( x) ≤ 0 hoặc h( x) ≤ 0 với mọi x ∈ D , thì điều này có thể diễn đạt bằng cách đưa thêm vào một biến số nhận giá trị 0-1. Ký hiệu u g và uh là các cận trên của hàm g ( x) và h( x) trên tập D ( g ( x) ≤ u g , h( x) ≤ uh , ∀x ∈ D ). Khi đó điều kiện trên sẽ được thoả mãn khi và chỉ khi: g ( x) ≤ u gδ h( x) ≤ u h (1 − δ ) δ ∈ 0,1 { } Ví dụ 1. Điều kiện bù trong quy hoạch toàn phương n ∑x y j =1 j j = 0 (với x j ≥ 0, y j ≥ 0, j = 1, 2,..., n ) có thể thay thế bằng n cặp ràng buộc dạng lựa chọn: x j ≤ 0 hay y j ≤ 0, j = 1, 2,..., n (với x j ≥ 0, y j ≥ 0, j = 1, 2,..., n ). Giả sử đã biết cận trên p j của biến x j và cận trên q j của biến y j . Khi đó bằng cách đưa vào các biến z j nhận giá trị 0-1, ta có thể đưa n cặp ràng buộc dạng lựa chọn nói trên về dạng: x j ≤ p j z j , y j ≤ q j (1 − z j ), z j ∈ {0,1} (với x j ≥ 0, y j ≥ 0, j = 1, 2,..., n ). Ví dụ 2. Khi quyết định phương thức sản xuất sản phẩm mới ta thường gặp tình huống sau: hoặc là không sản xuất sản phẩm j ( x j =0), hoặc là nếu chấp nhận sản xuất nó thì phải sản xuất với số lượng không ít hơn d j ( x j ≥ d j ), với d j là số lượng sản phẩm loại j tối thiểu cần sản xuất để bù lại được các chi phí cần bỏ ra khi đưa phương
- Bùi Thế Tâm I.7 Quy hoạch rời rạc thức sản xuất sản phẩm mới này vào hoạt động (khi đó mới có lãi). Tức là ta gặp ràng buộc dạng lựa chọn: d j − x j ≤ 0 hay x j ≤ 0 Giả sử đã biết cận trên p j của biến x j trong bài toán trên. Khi đó ta đưa vào biến 0-1 yi = 1 nếu chấp nhận sản xuất sản phẩm j , và bằng 0 nếu ngược lại. Ta có thể đưa ràng buộc dạng lựa chọn nói trên về hệ ràng buộc tương đương sau: d j y j ≤ x j ≤ p j y j , y j ∈ {0,1} 2.9. Bài toán pha cắt nguyên vật liệu Trong thực tế ta thường phải cắt những vật liệu dài (thanh thép, gỗ, ống nước…) thành những đoạn nhỏ có độ dài cho trước với số lượng nhất định để sử dụng. Nên cắt như thế nào để đỡ lãng phí vật liệu nhất. Ví dụ. Một công trường xây dựng có những thanh thép dài 6m, cần cắt thành 40 đoạn dài 2,5m và 60 đoạn dài 1,6m, nên như thế nào để đỡ lãng phí vật liệu nhất. Ta có 3 cách cắt như sau: Mẫu 1: 2 đoạn 2,5m, thừa 1 m. Mẫu 2: 1 đoạn 2,5m và 2 đoạn 1,6n, thừa 0,3m. Mẫu 3: 3 đoạn 1,6m, thừa 1,2m. Gọi x1 , x2 , x3 là số thanh cần cắt theo mẫu 1, 2, 3 tương ứng, ta có bài toán quy hoạch rời rạc sau: x1 + 0.3 x2 + 1.2 x3 → min 2 x1 + x2 = 40 2 x2 + 3 x3 = 60 0 ≤ x1 , x2 , x3 ∈ Z Tổng quát, ký hiệu: aij là số đoạn loại i thu được khi cắt theo mẫu j , bi là số đoạn loại i cần có, c j là dẻo thừa khi cắt theo mẫu j , x j là số thanh thép cắt theo mẫu j . Ta được bài toán quy hoạch rời rạc: n ∑c x j =1 j j → min n ∑a x j =1 ij j = bi , i = 1, 2,..., m 0 ≤ x j ∈ Z , j = 1, 2,..., n 2.10. Bài toán sản xuất đầu tư Trong thực tế, tất cả các nhà đầu tư vào sản xuất đều gặp bài toán : có m loại tài nguyên cần dùng để sản xuất ra n loại sản phẩm. Các tài nguyên này có thể bị tiêu hao trong quá trình sản xuất hoặc được tăng thêm nhờ thực hiện một trong p dự án đầu tư phát triển sản xuất.
- Bùi Thế Tâm I.8 Quy hoạch rời rạc Cho biết: x j là số lượng sản phẩm loại j được sản xuất. c j lợi nhuận thu được nếu một sản phẩm loại j được sản xuất. b0 là tổng số tiền nhà đầu tư có thể đem ra để đầu tư vào sản xuất (thực hiện các dự án). bi là lượng tài nguyên i hiện có trước khi thực hiện các đầu tư. aij là số tài nguyên i cần để sản xuất ra một sản phẩm j . d k là chi phí cần cho loại dự án đầu tư k . gik là lượng tài nguyên i được tăng thêm nếu dự án đầu tư k được thực hiện. Ta đưa vào một biến 0-1: yk =1 nếu dự án được dùng, và bằng 0 nếu trái lại. Dạng toán học của bài toán là: n ∑c x j =1 j j → max p ∑d k =1 k yk ≤ b0 n p ∑a x j =1 ij j ≤ bi + ∑ gik yk , i = 1, 2,..., m k =1 0 ≤ xj ∈ Z, j = 1, 2,… , n yk ∈ {0,1} , k = 1, 2,… , p 2.11. Bài toán chọn địa điểm đặt nhà máy Đây cũng là một bài toán đầu tư, nhưng phức tạp hơn so với bài toán sản xuất - đầu tư. Cái khó không phải chỉ vì các chi phí đầu tư được tính đến mà còn vì có các chi phí khác phụ thuộc vào địa điểm đặt nhà máy, cụ thể là chi phí vận chuyển. Cũng còn một khó khăn nữa, đó là chi phí đầu tư trả một lần, còn chi phí vận chuyển thì xuất hiện thường xuyên. Để làm cho chi phí này có thể so sánh được với nhau thì phải xét thêm các chi phí vận chuyển trong các thời kỳ khác nhau, tất nhiên là quy đổi so với thời kỳ đầu. Nói một cách khác, cần thêm vào một hệ số nhân thích hợp đối với các chi phí vận chuyển. Ta ký hiệu: P là số địa điểm thích hợp đặt nhà máy. N là số các nhà máy khác nhau có thể xây dựng ( N ≤ P ), mỗi địa điểm đặt nhiều nhất là một nhà máy. M là số các vật phẩm khác nhau được sản xuất hay tiêu dùng. ais là lượng vật phẩm i được sản xuất (nếu ais > 0 ), hay tiêu dùng (nếu ais < 0 ) ở nhà máy s ( i = 1, 2,..., M ; s = 1, 2,..., N )
- Bùi Thế Tâm I.9 Quy hoạch rời rạc bi là nhu cầu về vật phẩm i do các nhà máy sản xuất (nếu bi > 0 ), hay do các nhà máy tiêu dùng (nếu bi < 0 ). d ps là chi phí lắp đặt nhà máy s tại địa điểm p ( p = 1, 2,..., P) . c pq là chi phí vận chuyển một đơn vị hàng giữa các địa điểm p và q . f st là lượng hàng cần vận chuyển (trong một thời kỳ) từ nhà máy s tới nhà máy t. λ là hệ số chuyển đổi làm cho chi phí vận chuyển so sánh được với chi phí đầu tư. x ps là biến xác định vị trí, nhận giá trị 1 hay 0 tuỳ thuộc vào nhà máy s có đặt tại vị trí p hay không. Bài toán đặt ra là cần xác định địa điểm đặt các nhà máy sao cho tổng chi phí xây dựng và vận chuyển hàng là nhỏ nhất. Ta đi đến bài toán quy hoạch nguyên phi tuyến: P N P P N N ∑∑ d p =1 s =1 ps x ps + λ ∑∑∑∑ c pq f st x ps xqt → min p =1 q =1 s =1 t =1 P N ∑∑ a p =1 s =1 is x ps ≥ bi , i = 1, 2,..., M N ∑x s =1 ps ≤ 1, p = 1, 2,..., P x ps ∈ {0,1} , p = 1, 2,..., P; s = 1, 2,..., N 2.12. Tìm tập ổn định trên đồ thị Cho đồ thị G , có n đỉnh, E là tập các cạnh của đồ thị. Tìm tập đỉnh có nhiều phần tử nhất trên đồ thị sao cho không có hai đỉnh nào kề nhau. Ta thêm vào một biến 0-1: x j =1 nếu đỉnh j được chọn, và bằng 0 nếu trái lại. Dạng toán học của bài toán là: n ∑x j =1 j → max xi + x j ≤ 1 ∀(i, j ) ∈ E x j ∈ {0,1} , j = 1, 2,… , n Nếu đỉnh j có trọng số c j >0 thì ta có bài toán tìm tập ổn định có trọng số lớn nhất: n ∑c x j =1 j j → max xi + x j ≤ 1 ∀(i, j ) ∈ E x j ∈ {0,1} , j = 1, 2,… n
- Bùi Thế Tâm I.10 Quy hoạch rời rạc 2.13. Bài toán tìm sắc tố Tìm số màu tối thiểu để tô mọi đỉnh của đồ thị sao cho hai đỉnh kề nhau có màu khác nhau. Giả sử đồ thị G = (V , E ) , V là tập n đỉnh, E là tập m cạnh. Cần tối đa n màu nếu đồ thị có n đỉnh. Đặt hai biến yk =1 nếu màu k được dùng, và bằng 0 nếu trái lại. x jk =1 nếu đỉnh j được tô màu k , và bằng 0 nếu trái lại. Dạng toán học của bài toán là: n ∑y k =1 k → min n ∑x k =1 jk = 1, j = 1, 2,..., n xik + x jk ≤ yk , ∀(i, j ) ∈ E , k = 1, 2,… , n yk , x jk ∈ {0,1} , k , j = 1, 2,… , n trong đó, ràng buộc thứ nhất biểu thị mỗi đỉnh chỉ được tô bằng một màu, ràng buộc thứ hai biểu thị hai đỉnh kề nhau không được tô cùng một màu. 2.14. Bài toán tìm chỉ số màu Hãy tìm số màu tối thiểu để tô mọi cạnh của đồ thị G sao cho hai cạnh kề nhau không được tô cùng màu. Giả sử đồ thị G có n đỉnh, m cạnh, E là tập các cạnh của đồ thị. Tối đa cần dùng m màu để tô m cạnh. Ký hiệu yk =1 nếu màu k được dùng, và bằng 0 nếu trái lại. x jk =1 nếu cạnh j được tô màu k , và bằng 0 nếu trái lại. aij =1 nếu đỉnh i là mút cuối của cạnh j và bằng 0 nếu trái lại. Dạng toán học của bài toán là: m ∑y k =1 k → min m ∑x k =1 jk = 1, j = 1, 2,..., m m ∑a x j =1 ij jk ≤ yk , k = 1, 2,..., m; i = 1, 2,..., n yk , x jk ∈ {0,1} , j, k = 1, 2,… , m trong đó, ràng buộc thứ nhất biểu thị mỗi cạnh chỉ tô một màu, ràng buộc thứ hai biểu thị không tô cùng một màu các cạnh có chung một đỉnh. 2.15. Bài toán phủ đỉnh Cho đồ thị G = (V , E ) , V là tập n đỉnh, E là tập m cạnh. Tìm số đỉnh ít nhất của đồ thị G sao cho mỗi cạnh có ít nhất một đầu mút đã được chọn.
- Bùi Thế Tâm I.11 Quy hoạch rời rạc Ứng dụng: tìm cách đặt các trạm quan sát (hoặc cửa hàng, trạm điện thoại, trung tâm dịch vụ) tại các ngã ba, ngã tư…sao cho quan sát được mọi tuyến đường trong khu phố với số trạm ít nhất. Ta đưa vào một biến 0-1 là x j =1 nếu đỉnh j được chọn, và bằng 0 nếu trái lại. Dạng toán học của bài toán: n ∑x j =1 j → min xi + x j ≥ 1, ∀(i, j ) ∈ E x j ∈ {0,1} ; j = 1, 2,..., n 2.16. Bài toán phủ cạnh Cho đồ thị G = (V , E ) , V là tập n đỉnh, E là tập m cạnh. Tìm số cạnh ít nhất của đồ thị G sao cho mỗi đỉnh thuộc V đều là đầu mút của ít nhất một cạnh đã chọn. Ứng dụng: - Có một pháo đài với các tháp canh ở cuối mỗi hành lang, một lính gác ở hành lang có thể quan sát được cả hai tháp canh ở hai đầu hành lang. Hãy tìm số lính canh ít nhất để quan sát được mọi tháp canh của pháo đài (chính là số hành lang ít nhất để phủ được hết các tháp canh). - Có một viện bảo tàng gồm nhiều gian trưng bày, giữa các gian có các cửa thông nhau, một người đứng ở cửa giữa hai gian có thể quan sát được cả hai gian. Hãy tìm cách bố trí người canh gác ở các cửa sao cho gian nào cũng có người canh và số người canh là ít nhất (mỗi gian là một đỉnh, mỗi cửa là một cạnh). Ta đưa các ký hiệu: aij =1 nếu đỉnh i là một trong các đầu mút của cạnh j và bằng 0 nếu trái lại, x j =1 nếu cạnh j được chọn và bằng 0 nếu trái lại. Dạng toán học của bài toán: m ∑x j =1 j → min m ∑a x j =1 ij j ≥ 1, i = 1, 2,..., n x j ∈ {0,1} ; j = 1, 2,..., m 2.17. Bài toán ghép cặp trên đồ thị Cho đồ thị G = (V , E ) , V là tập n đỉnh, E là tập m cạnh. Tìm tập cạnh lớn nhất (nhiều cạnh nhất) sao cho hai cạnh bất kỳ không chung đỉnh. Ta đưa vào các ký hiệu: aij =1 nếu đỉnh i là một trong các đầu mút của cạnh j , và bằng 0 nếu trái lại. x j =1 nếu cạnh j được chọn, và bằng 0 nếu trái lại. Dạng toán học của bài toán là:
- Bùi Thế Tâm I.12 Quy hoạch rời rạc m ∑x j =1 j → max m ∑a x j =1 ij j ≤ 1, i = 1, 2,..., n x j ∈ {0,1} ; j = 1, 2,..., m Nếu mỗi cạnh có gắn một trọng số c j ≥ 0 thì có thể xét bài toán tìm ghép cặp với tổng trọng số lớn nhất m ∑ c j x j ⇒ max j =1 Ví dụ . Có p người và q việc, p khác q . Mỗi người được đào tạo để làm ít nhất một việc. Hãy sắp xếp mỗi người làm một việc phù hợp với khả năng chuyên môn của họ. Khi đó ta có đồ thị hai phần như sau: Người 1 Việc 1 Người 2 Việc 2 Người p Việc q p đỉnh ứng với người, q đỉnh ứng với việc. Nếu người i có khả năng làm việc j thì ta vẽ cạnh (i, j ) . Tìm ghép cặp lớn nhất trong đồ thị này. 2.18. Bài toán phân công theo ca kíp Phòng cảnh sát Quận có số tuyến cần được tuần tra theo thời gian cho trong bảng Thời gian Yêu cầu số tuyến tuần tra 22 giờ tối đến 02 giờ sáng 13 02 giờ sáng đến 06 giờ sáng 01 06 giờ sáng đến 10 giờ sang 07 10 giờ sáng đến 14 giờ chiều 06 14 giờ chiều đến 18 giờ chiều 06 18 giờ chiều đến 22 giờ tối 17 Giả thiết mỗi tuyến tuần tra chỉ cần một viên cảnh sát, mỗi cảnh sát đi làm theo ca 8 tiếng liên tục. Hãy xác định số nhân viên cảnh sát tối thiểu để hoàn thành nhiệm vụ. Gọi x1 là số cảnh sát đi làm vào lúc 22 giờ tối, x2 là số cảnh sát đi làm vào lúc 02 giờ
- Bùi Thế Tâm I.13 Quy hoạch rời rạc sáng, …, x6 là số cảnh sát đi làm vào lúc 18 giờ chiều. Khi đó dạng toán học của bài toán là: 6 ∑x j =1 j → min x1 + x2 ≥ 1 x2 + x3 ≥ 7 x3 + x4 ≥ 6 x4 + x5 ≥ 6 x5 + x6 ≥ 17 x1 + x6 ≥ 13 0 ≤ xj ∈ Z, j = 1, 2,3, 4,5, 6. 2.19. Bài toán tìm luồng cực đại trên đồ thị có hướng Ta xét bài toán cụ thể: cho đồ thị có hướng gồm 6 đỉnh, nếu từ đỉnh u tới đỉnh v có đường vận chuyển thì ta vẽ một cung j , lượng hàng vận chuyển trên cung này là x j , khả năng vận chuyển tối đa trên cung này là q j . Tìm lượng hàng lớn nhất có thể vận chuyển từ đỉnh 1 đến đỉnh 6. 3 x1 x5 x4 1 4 6 x6 x3 x2 x8 2 x7 5 Từ đồ thị trên ta có thể viết bài toán dưới dạng: x1 + x2 → max x1 = x4 + x5 x2 = x3 + x7 x3 + x4 = x6 x7 = x8 x1 + x2 = x5 + x6 + x8 0 ≤ x j ≤ q j , j = 1, 2,3, 4,5, 6, 7,8 x j nguyên với j = 1, 2, 3, 4, 5, 6, 7, 8 Trong trường hợp véc tơ q = (4, 2, 4, 4, 1, 2, 2, 2) ta được đáp số là: lượng hàng tối đa có thể vận chuyển là 5, phương án tối ưu là x = (3, 2, 0, 2, 1, 2, 2, 2).
- Bùi Thế Tâm I.14 Quy hoạch rời rạc BÀI TẬP Dùng Microsoft Excel để giải các bài toán quy hoạch tuyến tính nguyên sau. 1. Một xưởng mộc sản xuất ba loại ghế tựa khác nhau A, B, C. Mỗi loại ghế cần trải qua các thao tác: đánh bóng, đánh màu và đánh véc ni. Ngoài ra ghế loại C cần thêm thao tác bọc nệm ghế. Biết thời gian cần thiết để thực hiện mỗi thao tác đối với từng loại ghế: ghế loại A cần 1h đánh bóng, 0.5 giờ đánh màu, 0.7 giờ đánh véc ni và tiền lãi là 100 ngàn đồng; ghế loại B cần 1.2h đánh bóng, 0.5 giờ đánh màu, 0.7 giờ đánh véc ni và tiền lãi là 130 ngàn đồng; ghế loại C cần 0.7h đánh bóng, 0.3 giờ đánh màu, 0.3 giờ đánh véc ni, 0.7 giờ bọc nệm và tiền lãi là 80 ngàn đồng. Thời gian hiện có dành cho việc đánh bóng là 600 giờ/ tháng, đánh màu là 300 giờ, đánh véc ni là 300 giờ, bọc nệm là 140 giờ. Hỏi nên sản xuất bao nhiêu ghế mỗi loại để thu được nhiều lãi nhất. 2. Một xưởng sản xuất dự định mua hai loại máy để in hình vẽ trên vải. Máy A có thể in 100 m/phút và chiếm 50 mét vuông diện tích sàn, còn máy B có thể in 200 m/phút và chiếm 140 mét vuông diện tích sàn. Xưởng cần in ít nhất 600 m/phút và có diện tích sàn để đặt máy in tối đa là 350 mét vuông. Mỗi máy A giá 22 triệu đồng và mối máy B giá 42 triệu đồng. Hỏi cần mua bao nhiêu máy in mỗi loại sao cho tốn ít chi phí nhất. 3. Một doanh nghiệp có trong tay 10 dự án sẽ được lựa chọn để thực hiện vào năm sau. Do hạn chế về nhân lực và tài chính nên không thể thực hiện tất cả các dự án. Để lựa chọn, mỗi dự án được gán một trọng số biểu thị giá trị của việc thực hiện dự án đó, các dự án từ 1 đến 10 có các trọng số tương ứng là: 70, 50, 60, 20, 10, 20, 30, 450, 10, 40. Chi phí về nhân lực của các dự án từ 1 đến 10 tương ứng là: 250, 195, 200, 70, 30, 40, 100, 170, 40, 120 người / tuần. Chi phí về tài chính của các dự án từ 1 đến 10 tương ứng là : 400, 300, 350, 100, 70, 70, 250, 250, 100, 200 triệu đồng. Chủ doanh nghiệp hiện có nguồn nhân lực 1000 người/tuần và 1500tiệu đồng để thực hiện các dự án. Cần chọn thực hiện những dự án nào để thu được tổng giá trị lớn nhất. 4. Một xí nghiệp dùng 3 máy M1, M2, M3 để sản xuất một loại sản phẩm gồm 3 chi tiết C1, C2, C3 (mỗi bộ sản phẩm gồm một chi tiết mỗi loại). Mỗi ngày máy M1 có thể sản xuất 8 chi tiết C1 hoặc 3 chi tiết C2 hoặc 12 chi tiết C3; máy M2 có thể sản xuất 12 chi tiết C1 hoặc 16 chi tiết C3 (máy M2 không sản xuất chi tiết C2), máy M3 có thể sản xuất 6 chi tiết C1 hoặc 3 chi tiết C2 hoặc 6 chi tiết C3. Hãy xác định tỷ lệ thời gian trong ngày để mỗi máy sản xuất từng chi tiết sao cho xí nghiệp đạt được số bộ sản phẩm là nhiều nhất ? 5. Một xưởng làm cửa sắt có những thanh thép dài 12 m, cần cắt thành 8 đoạn dài 4m, 5 đoạn dài 5m và 3 đoạn dài 7m. Có 5 mẫu cắt sau. Mẫu 1: 3 đoạn dài 4m, không thừa. Mẫu 2: 1 đoạn 4m, 1 đoạn 5m, thừa 3m. Mẫu 3: 1 đoạn 4m, 1 đoạn 7m, thừa 1m. Mẫu 4: 2 đoạn 5m, thừa 2m. Mẫu 5: 1 đoạn 5m, 1 đoạn 7m, không thừa. Cần dùng những mẫu cắt nào để tiết kiệm nhất. 6. Một xí nghiệp có thể sử dụng tối đa 510 giờ máy cán, 360 giờ máy tiện và 150 giờ máy mài để chế tạo 3 loại sản phẩm A, B, C. Để chế tạo một đơn vị sản phẩm A cần 9h máy cán, 5h máy tiện, 3h máy mài. Để chế tạo một đơn vị sản phẩm B cần 3h máy cán, 4h máy tiện. Để chế tạo một đơn vị sản phẩm C cần 5h máy cán, 3h máy tiện, 2h máy mài. Sản phẩm A trị giá 48 ngàn đồng. Sản phẩm B trị giá 16 ngàn đồng. Sản phẩm C trị giá 27 ngàn đồng. Xí nghiệp cần chế tạo bao nhiêu sản phẩm mỗi loại để tổng giá trị lớn nhất.
- Bùi Thế Tâm I.15 Quy hoạch rời rạc 7. Một nhà sản xuất đồ gỗ sản xuất 3 loại bàn: loại truyền thống x1, loại cận đại x2, loại hiện đại x3. Loại x1 có lợi nhuận là 36$, cần 2 h để tạo hình, 3 h để đánh bóng. Loại x2 có lợi nhuận là 28$, cần 2 h để tạo hình, 2 h để đánh bóng. Loại x3 có lợi nhuận là 32$, cần 4 h để tạo hình, 1 h để đánh bóng. Xác định phương án sản xuất để cực đại hóa lợi nhuận nếu nhà sản xuất có 60 h để tạo hình và 80 h để đánh bóng. 8. Tìm phương án vận tải có chi phí nhỏ nhất. Khả năng các nơi phát hàng P1, P2, P3 tương ứng là 80, 110, 120 tấn hàng. Nhu cầu các nơi tiêu thụ T1, T2, T3 tương ứng là 100, 120, 900 tấn. Ma trân chi phí từ nơi phát tới nơi thu là ($ / tấn hàng hóa): 200 600 300 C = 400 200 700 500 800 300 9. Bài toán vận tải: khả năng phát A = (65, 95, 85, 55), nhu cầu B = (55, 50, 80 , 50 ,65). 9 20 7 14 8 C = 12 15 19 13 8 11 27 17 23 19 14 11 13 7 10 10. Tìm tập đỉnh có nhiều phần tử nhất trên đồ thị sau sao cho không có hai đỉnh nào kề nhau 1 3 2 10 6 4 5 9 7 8 11. Tìm số màu tối thiểu để tô mọi đỉnh của đồ thị sao cho hai đỉnh kề nhau có màu khác nhau 1 2 4 3 12. Tìm số màu tối thiểu để tô các cạnh của đồ thị sau sao cho hai cạnh kề nhau có màu khác nhau 1 4 2 3
- Bùi Thế Tâm I.16 Quy hoạch rời rạc 13. Tìm số đỉnh ít nhất trong đồ thị sau sao cho mỗi cạnh có ít nhất một đầu mút được chọn. 5 7 4 6 3 2 1 14. Hãy bố trí số người gác tối thiểu cho khu bảo tàng có sơ đồ sau. 2 3 4 1 6 5 15. Tìm ghép cặp với tổng trọng số lớn nhất của đồ thị sau. Trọng số của các cạnh (1,5), (1,6), (1,7), (2,5), (2,7), (3,6), (3,8), (4,6), (4,7), (4,8) lần lượt là: 5, 8, 2, 3, 4, 9, 6, 7, 2, 4. 1 5 2 6 3 7 4 8 Người Việc
CÓ THỂ BẠN MUỐN DOWNLOAD
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn