Sử dụng phần mềm Maple giải các bài toán tối ưu(Bài toán đơn hình, bài toán vận tải, bài toán đối ngẫu)

40 4.8K 22
Sử dụng phần mềm Maple giải các bài toán tối ưu(Bài toán đơn hình, bài toán vận tải, bài toán đối ngẫu)

Đ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

Sử dụng phần mềm Maple giải các bài toán tối ưu(Bài toán đơn hình, bài toán vận tải, bài toán đối ngẫu)

1 LỜI NÓI ĐẦU Từ xưa đến nay, các mô hình tối ưu và các phương pháp tối ưu hóa đã trở thành những yếu tố cần thiết trong mọi hoạt động của con người và ngày càng được ứng dụng rộng rãi trong các ngành kinh tế, kỹ thuật, công nghiệp và các lĩnh vực khác của xã hội…Trong đó, các bài toán Quy hoạch tuyến tính là một trong những bài toán quan trọng nhất của Tối ưu hóa. Cùng với sự phát triển mạnh mẽ từng ngày của Công nghệ thông tin, hàng loạt các ngôn ngữ lập trình đã ra đời. Trong đó, Maple nổi lên như là một công cụ tuyệt vời hỗ trợ cho việc học tập và nghiên cứu toán học. Với Maple bạn có thể thực hiện được mọi điều từ những phép toán đơn giản nhất, sơ cấp nhất cho đến những tính toán phức tạp nhất. Trước tầm quan trọng của các bài toán Quy hoạch tuyến tính cùng với sự ứng dụng rộng rãi của ngôn ngữ lập trình Maple tôi đã quyết định chọn đề tài “Lập trình Maple giải bài toán Quy hoạch tuyến tính” với mong muốn tạo ra một công cụ giải các bài toán Quy hoạch tuyến tính một cách thuận tiện và nhanh chóng. Khóa luận gồm có 3 chương: Chương 1 giới thiệu những khái niệm liên quan đến bài toán Quy hoạch tuyến tính và phần mềm Maple. Chương 2 trình bày giải bài toán Quy hoạch tuyến tính bằng thuật toán đơn hình và hình học (đối với bài toán Quy hoạch tuyến tính hai biến). Trong mỗi phần tôi sẽ giới thiệu về thuật toán, ví dụ và mã lệnh lập trình bằng Maple cùng giao diện tính toán. Chương 3 nói về thuật toán “Quy 0 cước phí ô chọn” bao gồm các khái niệm và các thuật ngữ liên quan. Sau đó, đưa ra ví dụ minh họa bài toán, cuối cùng đưa ra mã lệnh lập trình bài toán và giới thiệu một số giao diện tính toán của chương trình. 2 Với những yêu cầu của đề tài, tôi sử dụng các giáo trình về Quy hoạch tuyến tính để tiếp cận với các thuật toán của những bài toán trên, sau đó sử dụng ngôn ngữ lập trình Maple tiến hành chuyển đổi thuật toán từ ngôn ngữ toán học thành ngôn ngữ lập trình. Sau đó, thiết kế giao diện cho các bài toán nhằm giúp người sử dụng thuận tiện trong việc giải bài toán Quy hoạch tuyến tính. Em xin trân trọng cám ơn các Thầy cô trong khoa Toán trường đại học Khoa học Huế đã nhiệt tình giảng dạy, giúp đỡ em trong quá trình học tập và rèn luyện tại trường. Đặc biệt em xin gửi lời cám ơn sâu sắc đến Thầy giáo hướng dẫn, Thạc sĩ Trần Công Mẫn đã chỉ bảo tận tình để em có thể hoàn thành tốt khóa luận này. Cuối cùng, em xin cám ơn gia đình, các bạn cùng lớp đã thường xuyên thăm hỏi đóng góp ý kiến, giúp đỡ động viên em trong suốt quá trình học tập và thực hiện khóa luận. Do khẳ năng có hạn, nên chắc chắn khóa luận này không thể tránh khỏi thiếu sót. Em rất mong nhận được ý kiến phê bình, chỉ đạo của các Thầy cô cùng các bạn. Huế, tháng 05 năm 2012 Phan Văn Cương – Toán tin K32 Lập trình Maple giải bài toán Quy hoạch tuyến tính 3 Chương I BÀI TOÁN QUY HOẠCH TUYẾN TÍNH VÀ PHẦN MỀM GIẢI TOÁN MAPLE Trong phần này, chúng tôi xin nhắc lại một số khái niệm, định nghĩa liên quan đến bài toán Quy hoạch tuyến tính cũng như giới thiệu sơ lược về phần mềm Maple sẽ được sử dụng trong luận văn. 1.1. Bài toán Quy hoạch tuyến tính tổng quát Tìm cực trị (cực tiểu hoặc cực đại) của một hàm tuyến tính xác định trên tập hợp một hệ thống hỗn hợp các phương trình và bất phương trình tuyến tính. Bài toán được mô tả dưới toán học như sau:                                          ; trong đó     gọi là hàm mục tiêu, mỗi phương tình hoặc bất phương trình tuyến tính gọi là một ràng buộc. 1.2. Phương án Vectơ x thỏa mãn mọi ràng buộc của bài toán gọi là một phương án. - Phương án x thỏa mãn ràng buộc i với dấu “=” nghĩa là          thì ràng buộc i gọi là “chặt” đối với phương án x, hoặc phương án x thỏa mãn chặt ràng buộc i - Phương án x thỏa mãn ràng buộc i với dấu bất đẳng thức thực sự, nghĩa là               thì ràng buộc i gọi là lỏng đối với phương án x hoặc phương án x thỏa mãn lỏng ràng buộc i. Lập trình Maple giải bài toán Quy hoạch tuyến tính 4 1.3. Phương án cực biên. Một phương án thỏa mãn chặt n ràng buộc độc lập tuyến tính gọi là phương án cực biên. Một phương án cực biên thỏa mãn đúng n ràng buộc gọi là phương án cực biên không suy biến, thỏa mãn chặt hơn n ràng buộc gọi là phương án suy biến. 1.4. Phương án tối ưu Một phương án mà tại đó hàm mục tiêu đạt trị số cực tiểu (cực đại) gọi là phương án tối ưu. 1.5. Bài toán giải được và không giải được Bài toán có ít nhất một phương án tối ưu gọi là bài toán giải được. Bài toán không có phương án hoặc có phương án nhưng trị số hàm mục tiêu không bị chặn dưới(trên) – cũng có nghĩa là giảm (tăng) vô hạn – trên tập phương án gọi là không giải được 1.6. Bài toán dạng chính tắc Bài toán dạng đặc biệt có một hệ phương trình ràng buộc và mọi biến số đều không âm như sau:                              Ký hiệu:       - gọi là ma trận điều kiện của bài toán;   - vectơ cột j của ma trận A – gọi là vectơ điều kiện; b – vectơ vế phải của hệ phương trình ràng buộc; Bài toán chính tắc còn có thể viết dưới dạng: Lập trình Maple giải bài toán Quy hoạch tuyến tính 5                         hoặc:               - Mọi bài toán quy hoạch tuyến đều có thể quy về bài toán dạng chính tắc tương đương theo nghĩa giá trị tối ưu của hàm mục tiêu trong hai bài toán là trùng nhau và từ phương án tối ưu này suy ra phương án tối ưu của bài toán kia. 1.7. Đặc điểm của phương án tối ưu của bài toán chính tắc Phương án x của bài toán chính tắc là cực biên khi và chỉ khi hệ thống các vectơ      độc lập tuyến tính. Với giả thiết hạng     thì một phương án cực biên không suy biến có đúng m thành phần dương, suy biến có ít hơn m thành phần dương. 1.8. Cơ sở của phương án cực biên Gọi m vectơ    độc lập tuyến tính bào hàn hệ thống các vectơ tương ứng với các thành phần dương của phương án cực biên là cơ sở của phương án cực biên ấy. Ký hiệu một các quy ước cơ sở là J. Các thành đặc trưng của một cơ sở J :     trong đó    là số phần tử của J;    độc lập tuyến tính. - Phương án cực biên không suy biến chỉ có một cơ sở duy nhất, đó là các vectơ tương ứng với các thành phần dương. - Phương án cực biên suy biến có nhiều cơ sở khác nhau, phần chung của chúng là các vectơ tương ứng với các thành phần dương. -      gọi là thành phần cơ sở; -      gọi là thành phần phi cơ sở. Lập trình Maple giải bài toán Quy hoạch tuyến tính 6 Thành phần cơ sở của phương án cực biên chính là hệ số phân tích vectơ b qua cơ sở của phương án cực biên ấy, xác định bởi       1.9. Bài toán dạng chuẩn Bài toán dạng chính tắc đặc biệt thể hiện ở :        mỗi phương trình có một biến với hệ số bằng 1 và không có mặt ở các phương trình khác. Có thể mô tả dưới dạng:                                                                             Dễ thấy bào toán dạng chuẩn cho ngay một phương án cực biên với cơ sở là cơ sở đơn vị, cụ thể ở đây là             , với cơ sở là         . 1.10. Sự tồn tại phương án tối ưu - Nếu bài toán có phương án và trị số hàm mục tiêu bị chặn dưới (trên) trên tập hợp các phương án thì bài toán có phương án tối ưu (giải được). - Nếu bài toán có phương án cực biên và giải được thì phải có phương án cực biên tối ưu. Do đó nếu bài toán tối ưu giải được thì phải có phương án cực biên tối ưu. - Nếu bài toán có hơn một phương án tối ưu thì sẽ có vô số phương án tối ưu, chẳng hạn   và   là 2 phương án tối ưu thì mọi vectơ         với  đều là phương án tối ưu. 1.11. Giới thiệu về Maple và lập trình giao diện Maplet Maple là một phần mềm Toán học do Đại Học Tổng HợpWaterloo(Canada) xây dựng và đưa vào sử dụng năm 1985. Sau nhiềulần cải tiến và phát triển qua Lập trình Maple giải bài toán Quy hoạch tuyến tính 7 nhiều phiên bản khác nhau và ngày càng được hoàn thiện. Maple chạy trên tất cả các hệ điều hành, có trình trợ giúp (Help) rất dễ sử dụng. Từ phiên bản 7, Maple cung cấp ngày càng nhiều các công cụ trực quan, các gói lệnh tự học gắn liền với toán phổ thông và đại học. Ưu điểm đó khiến ngày càng có nhiều nước trên thế giới lựa chọn sử dụng Maple trong dạy-học toán tương tác trước đòi hỏi của thực tiễn và sự phát triển của giáo dục. Mặc dù khả năng làm toán của Maple rất ưu việt nhưng những câu lệnh của nó thường nhọc nhằn khó nhớ. Vì vậy, từ phiên bản 9 Maple có hổ trợ về phần thiết kế giao diện gọi là Maplet. Maplet là một mảng giúp cho những người dùng Maple tự tạo nên các giao diện tính toán tùy theo yêu cầu của người sử dụng. Mọi thao tác trên Maplet giống như chúng ta đang làm việc với môi trường Window của máy tính. Vì vậy, việc người dùng tiếp cận đến với các đối tượng cũng dễ dàng hơn trước nhiều lần. Lập trình Maple giải bài toán Quy hoạch tuyến tính 8 Chương II LẬP TRÌNH MAPLE GIẢI BÀI TOÁN QUY HOẠCH TUYẾN TÍNH Trong phần này, chúng tôi sẽ trình bày lại các phương pháp giải bài toán Quy hoạch tuyến tính bằng phương pháp hình học và phương pháp đơn hình. Trong mỗi phương pháp chúng tôi trình bày thuật toán, ví dụ minh họa, sau đó là các mã lệnh cũng như giao diện minh họa của chương trình. 2.1. Phương pháp hình học 2.1.1.Thuật toán Xét bài toán quy hoạch tuyến tính hai biến:                    Với các bài toán quy hoạch tuyến tính có hai ẩn trên, ta có thể giải bằng phương pháp hình học như sau: Bước 1 : Biểu diễn tập phương án  trên mặt phẳng . Biểu diễn nghiệm của tất cả các bất phương trình hệ ràng buộc trên cùng một mặt phẳng tọa độ Oxy rồi xác định phần giao của các nghiệm đó. Phần giao của các nghiệm của hệ ràng buộc là tập phương án D của bài toán. Bước 2 : Biểu diễn vectơ pháp tuyến và hàm mục tiêu. Vẽ vectơ pháp tuyến        và vẽ đường mức       Bước 3: Giải bài toán Trường hợp 1: Hàm mục tiêu có dạng          Cho  di chuyển theo hướng của vectơ pháp tuyến  : Nếu  luôn luôn giao với D thì bài toán không giải được. Lập trình Maple giải bài toán Quy hoạch tuyến tính 9 Nếu  có vị trí tới hạn giao với  và  nằm về một phía của  thì bài toán giải được: mọi        đều là phương án tối ưu và giá trị tối ưu của bài toán là              . Trong trường hợp này ta thấy  có một điểm duy nhất hay một đoạn thẳng do đó bài toán có một phương án tối ưu duy nhất hay có vô số phương án tối ưu. Trường hợp 2: Hàm mục tiêu có dạng          Giải tương tự bài toán cực đại chỉ khác là cho  di chuyển ngược hướng của . 2.1.2.Mã lệnh của chương trình Đoạn chương trình mô phỏng tìm nghiệm tối ưu bằng hình học trên không gian hai chiều. PlotNTU2D := proc (HTx, HTy, CTieu, Check) local v, p, p1, p2, p3, p4, T, K, L, H, g, m, i, t, Q, HMT, z, n, XP, KT, P; global C, NTU, TUCT, TUCD; Q := M; t := max(abs(Q[1, 1]), abs(Q[1, 2])); Q := Q/t; n := ColumnDimension(C); if CTieu = Min then P := NTUT; Main1(n, Max, False, Check); if TUCD= infinity then if M[1,1]*3>TUCT then XP:=M[1,1]*3; else XP:=M[1,2]*3; fi: else XP:=TUCD+1; fi: KT:=TUCT; else Lập trình Maple giải bài toán Quy hoạch tuyến tính 10 P:=NTUD; Main1(n,Min,False,Check); if TUCD= infinity then if M[1,1]*3<TUCD then XP:=M[1,1]*3; else XP:=M[1,2]*3; fi: else XP:=TUCT-0.3; fi: KT:=TUCD; fi: T := Matrix(2, 1, [x, y]); m := RowDimension(A); g := MatrixMatrixMultiply(A, T); HMT := MatrixMatrixMultiply(M, T); K := {seq(g[i, 1] <= b[i, 1], i = 1 m)}; L := {seq(0 <= T[i, 1], i = 1 2)}; H := K union L; p1 := inequal(H, x = HTx, y = HTy, optionsfeasible = (color = "#5A68CF"), optionsclosed = (color = "#0F960B", thickness = 3), optionsexcluded = (color = "#9BF7ED", thickness = 2)); v := vector(2, [Q[1, 1], Q[1, 2]]); p2 := arrow(v, width = 1/20, color = red); p3 := pointplot([P[1, 1], P[1, 2]], symbol = solidcircle, symbolsize = 30, color = red); p4 := animate(implicitplot, [HMT[1, 1] = z, x = HTx, y = HTy], z = XP KT, frames = 100); p := display({p1, p2, p3, p4}); Set('PlHinhHoc' = p) end proc: . đến bài toán Quy hoạch tuyến tính và phần mềm Maple. Chương 2 trình bày giải bài toán Quy hoạch tuyến tính bằng thuật toán đơn hình và hình học (đối với bài. cho các bài toán nhằm giúp người sử dụng thuận tiện trong việc giải bài toán Quy hoạch tuyến tính. Em xin trân trọng cám ơn các Thầy cô trong khoa Toán

Ngày đăng: 05/12/2013, 08:52

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan