Tối ưu số cho bài toán tối ưu một mục tiêu

Luận án tốt nghiệp 4 Phần 0 MỞ ĐẦU Ngày nay, các bài toán tối ưu thường xuất hiện trong kinh tế và kỹ thuật, chúng có nhiều ứng dụng rất rộng rãi và đa dạng. Trên thế giới có rất nhiều giải thuật để giải các bài toán tối ưu. Trong đó, các giải thuật tiến hóa áp dụng cho các bài toán tối ưu một mục tiêu hay đa mục tiêu đã chứng tỏ tính hiệu quả của nó một cách rộng rãi trong những năm gần đây thông qua một số lượng lớn các áp dụng. Tuy nhiên, hầu hết các nghiên cứu hiện hành trên các ứng dụng của giải thuật tiến hóa để giải các bài toán tối ưu một hay nhiều mục tiêu đều tập trung trên các chiến lược xử lý các hàm mục tiêu, gán giá trị fitness và chọn lọc nhằm cố gắng đạt được mục đích là hướng dẫn việc tìm kiếm của giải thuật đến một miền thu hẹp có chứa lời giải tối ưu đối với bài toán tối ưu một mục tiêu hay biên tối ưu Pareto đối với bài toán tối ưu đa mục tiêu. Tuy nhiên các lời giải tìm được thường là các lời giải xấp xỉ khá tốt nhưng không phải lời giải tối ưu (một mục tiêu) hay tối ưu Pareto (đa mục tiêu). Mặc dù các toán tử sinh sản như lai ghép và đột biến đã được cải tiến rất nhiều nhưng chúng vẫn sản sinh ra các cá thể con mà hoàn toàn không biết đến các cá thể con đó có khả năng tốt hơn hay xấu hơn cha mẹ của chúng như thế nào. Nói cách khác, lý do để các giải thuật tiến hóa thường không đạt được các lời giải tối ưu (một mục tiêu) hay tối ưu Pareto (đa mục tiêu) là các toán tử di truyền như lai ghép và đột biến theo kiểu truyền thống không đủ mạnh để sản sinh ra các cá thể tốt nhất như mong muốn. Để vượt qua khó khăn đó, người ta đề xuất một hướng tiếp cận mới, được gọi là giải thuật Tìm Kiếm Ngẫu Nhiên Theo Xác Suất (TKNNTXS), để giải các bài toán tối ưu một hay nhiều mục tiêu. Hướng tiếp cận này có những đặc điểm sau - Không cần thiết kế một hàm phụ trợ như các hàm phạt. Việc xử lý các hàm mục tiêu và các ràng buộc được tách biệt nhau. Xử lý trực tiếp trên các chữ số của biến quyết định để phát sinh lời giải khả thi tốt hơn và sử dụng chính các hàm mục tiêu làm hàm đo độ tốt của lời giải. - Không sử dụng kỹ thuật di truyền truyền thống như lai ghép và đột biến tại một hay nhiều điểm. Việc sản sinh và tìm kiếm lời giải tối ưu là ngẫu nhiên được hướng dẫn bởi xác suất. Phần 1 TỔNG QUAN I. Khái quát: Phần mềm áp dụng giải thuật Tìm Kiếm Ngẫu Nhiên Theo Xác Suất để tìm ra các đáp số tối ưu cho bài toán một mục tiêu (Bài toán Min hoặc bài toán Max). Tuy nhiên, phân mềm không đưa ra các đáp số đã tìm được là tối ưu nhất, chỉ là tương đối. Mục đích của phần mềm này là: v Đưa ra đáp số tối ưu cho bài toán một mục tiêu. Từ đó, có thể giúp mọi người giải quyết vấn đề của họ. v Giúp người học giải các bài toán tối ưu bằng máy tính. v Phạm vi sử dụng: Chương trình sẽ được sử dụng trong các trường học để giúp cho người học tìm ra các đáp án tối ưu cho bài toán tối ưu với độ chính xác cao nhất. Sử dụng trong việc tìm ra phương án tối ưu để giải quyết các vấn đề phức tạp. II. Người sử dụng: Các lập trình viên, người phân tích thiết kế và mọi người. III. Nhiệm vụ: Tìm ra các phương án tối ưu cho bài toán một mục tiêu. Ngôn ngữ cài đặt cho chương trình là Visual Basic 6.0.

doc24 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2857 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Tối ưu số cho bài toán tối ưu một mục tiêu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Baùo Caùo Luaän Vaên Ñeà taøi : Toái öu soá cho baøi toaùn toái öu moät muïc tieâu Gvhd : Ths. Nguyeãn Höõu Thoâng Svth : Kieàu Thoï Khaùnh Lôùp : 98TH03 – Khoùa 98 Noäi dung baùo caùo Giôùi thieäu baøi toaùn toái öu toång quaùt Giôùi thieäu caùc phöông phaùp toaùn hoïc truyeàn thoáng, öu vaø khuyeát ñieåm cuûa phöông phaùp toaùn hoïc truyeàn thoáng. Giôùi thieäu höôùng xöû lyù cuûa giaûi thuaät tìm kieám ngaãu nhieân theo xaùc suaát. Giôùi thieäu giaûi thuaät keát hôïp 3 lôøi giaûi theo xaùc suaát ñoät bieán, öu vaø khuyeát ñieåm cuûa giaûi thuaät naøy. Caùch toå chöùc ñeå löu haøm, bieán, raøng buoäc cuûa chöông trình. Caáu truùc cuûa chöông trình toái öu soá, caùch tính giaù trò cho haøm vaø raøng buoäc. Caùc keát quaû maø chöông trình ñaõ thuïc hieän ñöôïc. Baøi toaùn toái öu toång quaùt f(x) ® max (min) vôùi caùc ñieàu kieän gi(x) (£) bi, i=1, ….,m x Î X Ì Rn gi(x) ñöôïc goïi laø caùc haøm raøng buoäc vôùi taäp hôïp D=í x Î X | gi(x) (£) bi, i=1, ….,mý goïi laø mieàn raøng buoäc x=(x1,x2,….,xn) Î D ñöôïc goïi laø moät phöông aùn. Moät phöông aùn x* Î D ñaït cöïc ñaïi hay cöïc tieåu vôùi: f(x*) ³ f(x) , "x Î D (ñoái vôùi baøi toaùn MAX) f(x*) £ f(x) , "x Î D (ñoái vôùi baøi toaùn MIN) Caùc phöông phaùp toaùn hoïc truyeàn thoáng Phöông phaùp ñôn hình giaûi baøi toaùn quy hoaïch tuyeán tính. Phöông phaùp phaân raõ quy hoaïch tuyeán tính. Phöông phaùp Karmarkar. Thuaät toaùn ñôn hình ñoái ngaãu giaûi baøi toaùn quy hoaïch ñoái ngaãu. Phöông phaùp Gradient cöïc tieåu khoâng raøng buoäc ñeå giaûi baøi toaùn quy hoaïch toaøn phöông. Ngoaøi caùc phöông phaùp neâu treân, coøn coù raát nhieàu phöông phaùp khaùc ñeå giaûi caùc baøi toaùn toái öu. Öu vaø khuyeát ñieåm cuûa caùc phöông phaùp toaùn hoïc truyeàn thoáng Öu vaø Khuyeát Ñieåm Cuûa Phöông Phaùp Toaùn Hoïc Truyeàn Thoáng Öu ñieåm Toát ñoái vôùi baøi toaùn toái öu moät muïc tieâu Khuyeát ñieåm - Ñoøi hoûi tính loài - Gaëp khoù khaên khi phaïm vi tìm kieám roäng Höôùng xöû lyù cuûa giaûi thuaät TKNNTXS Xöû lyù caùc chöõ soá cuûa bieán quyeát ñònh Nhaän xeùt: Trong moãi bieán quyeát ñònh, caùc chöõ soá beân traùi coù vai troø cao hôn caùc chöõ soá beân phaûi trong vieäc ñònh giaù haøm muïc tieâu ÞMoãi chöõ soá coù moät xaùc suaát ñoät bieán khaùc nhau ÞMoãi chöõ soá coù moät thöù baäc ñoät bieán khaùc nhau Giaûi thuaät Tìm Kieám Ngaãu Nhieân Theo Xaùc Suaát Caáu truùc döõ lieäu Lôøi giaûi coù n bieán quyeát ñònh, moãi bieán quyeát ñònh coù m=5 chöõ soá : x[i,j] Î{0,1,...,9} (1 £ I £ n, 1 £ j £ 5) Kyõ thuaät ñoät bieán coù ñònh höôùng 1. Ñoät bieán taïi chöõ soá thöù j theo xaùc suaát pj 2. Thöù töï ñoät bieán: töø traùi qua phaûi P1 < P2 < P3 < P4 < P5 x[i,1] X[i,2] X[i,3] x[i,4] x[i,5] Boä xaùc suaát ñoät bieán taïi moät bieán quyeát ñònh: Neáu bieán quyeát ñònh coù m chöõ soá, xaùc suaát ñoät bieán pj taïi chöõ soá thöù j (1 £ j £ m) Boä xaùc suaát ñoät bieán taïi moät chöõ soá: r1=0.5, r2=r3=0.25 Kyõ thuaät ñoät bieán coù ñònh höôùng for j:=1 to m do if Xaùc_suaát_bieán coá_ngaãu_nhieân_1 = pj then (*ñoät bieán*) if Xaùc_suaát_bieán coá_ngaãu_nhieân_2 = r1 else if Xaùc_suaát_bieán coá_ngaãu_nhieân_2 = r2 (*49->50*) else (*50->49*) else (*khoâng ñoät bieán*) ; Giaûi thuaät keát hôïp 3 lôøi giaûi theo xaùc suaát ñoät bieán Ta khaûo saùt söï lai gheùp giöõa moät lôøi giaûi a vaø n lôøi giaûi b1, b2, . , bn. Baây giôø chuùng ta xem xeùt quaù trình ñoät bieán taïi chöõ soá thöù i cuûa moät bieán quyeát ñònh cuûa lôøi giaûi a. Ta coù caùc tröôøng hôïp sau: Tröôøng hôïp chöõ soá thöù i-1 cuûa bieán quyeát ñònh töông öùng cuûa lôøi giaûi a laø ñuùng Goïi p laø xaùc suaát ñoät bieán laáy giaù trò ngaãu nhieân taïi moät chöõ soá thöù i ñoù. Goïi q laø xaùc suaát ñoät bieán cho pheùp laáy giaù trò cuûa chöõ soá thöù i cuûa moät bieán quyeát ñònh töông öùng trong caùc lôøi giaûi b1, b2, .. , bn. Tröôøng hôïp chöõ soá thöù i-1 cuûa bieán quyeát ñònh töông öùng cuûa lôøi giaûi a laø sai Goïi r laø xaùc suaát ñoät bieán taêng/giaûm moät ñôn vò taïi chöõ soá thöù i cuûa lôøi giaûi a cho tröôøng hôïp chöõ soá tröôùc ñoù (thöù i-1) laø sai. Ta coù caùc coâng thöùc sau: (caùc coâng thöùc p, q, r treân laø keát quaû cuûa thaày Thoâng chöa coâng boá treân caùc taïp chí khoa hoïc) Nhaän xeùt: Khi caùc lôøi giaûi ñaõ ñaït ñöôïc giaù trò gaàn toái öu ta coù baûng so saùnh sau Xaùc suaát 1 lôøi giaûi 2 lôøi giaûi 3 lôøi giaûi 4 lôøi giaûi Ñoät bieán ngaãu nhieân Duy trì giaù trò toát ñaõ coù Ñoät bieán taêng/giaûm moät 33% 33% 33% 20% 60% 20% 11% 78% 11% 6% 88% 6% Khi caùc lôøi giaûi ñaõ ñaït ñöôïc giaù trò gaàn toái öu thì kyõ thuaät lai gheùp ba caù theå cho ta: Xaùc suaát duy trì caùc giaù trò toát ñaõ coù laø 78% Xaùc suaát ñoät bieán ngaãu nhieân laø 11% Xaùc suaát ñoät bieán taêng/giaûm laø 11% Vôùi boä xaùc suaát treân seõ cho chuùng ta duy trì ñöôïc caùc giaù trò toát ñaõ coù ñöôïc cuûa lôøi giaûi vaø ñoät bieán ñuû nhoû ñeå khoâng gaây ra roái loaïn caùc giaù trò maø vaãn coù theå taïo ra caùc giaù trò toát moät caùch baát ngôø. Soá laàn laëp cuûa giaûi thuaät ñeå tìm lôøi giaûi toái öu Xeùt baøi toaùn coù lôøi giaûi goàm n bieán quyeát ñònh vaø moãi bieán quyeát ñònh coù m chöõ soá. Giaû söû vieäc bieán ñoåi cuûa lôøi giaûi khaû thi phuï thuoäc vaøo k (1£k£n) bieán quyeát ñònh, nghóa laø trong moät voøng laëp chæ caàn choïn ra trung bình k bieán quyeát ñònh ñeå gaây taùc ñoäng bieán ñoåi thì ñuû ñeå ñaït ñöôïc lôøi giaûi khaû thi toát hôn lôøi giaûi khaû thi ñang coù. Do ñoù xaùc suaát ñeå moät bieán quyeát ñònh ñöôïc choïn trong moät laàn laëp laø k/n vaø ta coù xaùc suaát ñeå moät bieán quyeát ñònh coù khaû naêng laàn löôït tìm ñöôïc caùc chöõ soá ñuùng töø traùi qua phaûi cuûa lôøi giaûi toái öu laø Chöõ soá thöù 1: Soá laàn laëp laø: Chöõ soá thöù 2: Soá laàn laëp laø: . . . . . . . . . . . . Chöõ soá thöù m: Soá laàn laëp laø: Toång soá laàn laëp ñeå giaûi thuaät coù khaû naêng tìm ñöôïc lôøi giaûi toái öu laàn ñaàu tieân laø Öu vaø khuyeát ñieåm cuûa giaûi thuaät Öu ñieåm Toát ñoái vôùi baøi toaùn toái öu moät muïc tieâu Ñöa ra keát quaû toát hôn caùc phöông phaùp truyeàn thoáng vaø giaûi thuaät di truyeàn. Khuyeát ñieåm Soá laàn laëp raát lôùn. Caùch toå chöùc cuûa chöông trình toái öu soá Xaây döïng caáu truùc trung gian ñeå löu tröõ döõ lieäu Keát hôïp caùc caáu truùc beân döôùi ñeå löu tröõ caùc haøm, bieán, raøng buoäc Node löu bieán value_Var ide_Var Node löu raøng buoäc Value_Rela nNoRe ide_Rela() Node löu haøm, raøng buoäc, bieán Express_Func() nFunc value_Func str_Var() nVar str_Rela() nRela Caáu truùc cuûa chöông trình toái öu soá TRUE BEGIN Entry=HAØM Phaân tích haøm Löu haøm vaøo caáu truùc truùc trung gian Ghi nhaän caùc bieán vaø löu vao caáu truùc trung gian Entry=RAØNG BUOÄC Phaân tích RAØNG BUOÄC Löu RAØNG BUOÄC vaøo caáu truùc truùc trung gian Ghi nhaän caùc bieán vaø löu vao caáu truùc trung gian FALSE Phaùt sinh giaù trò cho bieán vaø toái öu giaù trò ñoù. Gaùn giaù trò vaøo caùc bieán Tính caùc haøm vaø caùc raøng buoäc In keát quaû caùc bieán toái öu Thoûa Raøng buoäc Caùch tính giaù trò cho haøm vaø raøng buoäc Ñoåi sang bieåu thöùc Haäu Toá BEGIN Ñöa giaù trò vaøo caùc phaàn töû cuûa Node Haøm(Raøng Buoäc) Chuoãi=”” Tính giaù trò END False True Chuoãi = Ñoïc giaù trò caùc phaàn töû cuûa Node Haøm(Raøng Buoäc) AÙp duïng vaøo caùc baøi toaùn toái öu soá Baøi toaùn 1 (taøi lieäu cuûa Nguyeãn Troïng Toaøn) Aùp duïng gt cuûa GS. H.Tuïy ñöôc hieäu chænh bôûi N.T. Toaøn Lôøi giaûi toái öu: (6.48079, 21.02378) Giaù trò haøm muïc tieâu: 89.2171143125 Lôøi giaûi vi phaïm nheï raøng buoäc thöù ba: g=0.000035487500>0 Aùp duïng giaûi thuaät TKNNTXS vaøo chöông trình toái öu Giaù trò haøm muïc tieâu: 89.217055385973 Caùc lôøi giaûi toái öu: (6.475902,21.025287) Baøi toaùn 2 (taøi lieäu cuûa Nguyeãn Troïng Toaøn) [] f(x) = (x1-2)^2+(x2-1)^2 ® min vôùi caùc raøng buoäc x1+x2<=5 x1^2-4.4*x1+x2^2-2.4*x2+4.03<=0 4*x1-x1^2-0.36*x2^2-2.56<=0 Aùp duïng gt cuûa GS. H.Tuïy ñöôc hieäu chænh bôûi N.T. Toaøn Lôøi giaûi toái öu: (2.77534,1.526646) Giaù trò haøm muïc tieâu: 0.8785081249 Aùp duïng giaûi thuaät TKNNTXS vaøo chöông trình toái öu Giaù trò haøm muïc tieâu: 0.877508004147348 Caùc lôøi giaûi toái öu: (2.7464411039,1.5659802846) Baøi toaùn 3 veà haøm phi tuyeán Rosenbrock [] f(x) = 100*(x2-x1^2)+(1-x1)^2® min vôùi caùc raøng buoäc x1+x2^2>=0 x1^2+x2>=0 x1<=0.5 x2<=10 Nghieäm toái öu toaøn cuïc Lôøi giaûi toái öu: (0.5,0.25) Giaù trò haøm muïc tieâu: 0.25 Aùp duïng giaûi thuaät TKNNTXS vaøo chöông trình toái öu Giaù trò haøm muïc tieâu: 0.25 Caùc lôøi giaûi toái öu: (0.5,0.250000001) Baøi toaùn 4 (taøi lieäu cuûa Phaïm Hoaøng Vöông) f(x) = x1+2*x2+3*x3+4*x4+5*x5® max vôùi caùc raøng buoäc x1+2*x2+3*x3-4*x4+5*x5<=0 2*x3+x4+3*x5<=4 3*x1+4*x3+x5<=3 x2-x3+2*x5<=2 4*x2+3*x3+x4+2*x5>=1 Nghieäm toái öu toaøn cuïc Lôøi giaûi toái öu: (1,2,0,4,0) Giaù trò haøm muïc tieâu: 21 Aùp duïng giaûi thuaät TKNNTXS vaøo chöông trình toái öu Giaù trò haøm muïc tieâu: 21 Caùc lôøi giaûi toái öu: (1,2,0,4,0) Baøi toaùn 5: Baøi toaùn toái öu phi tuyeán cuûa Himmelblau f(x) = 5.3578547*x3*x3+0.8356891*x1*x5+37.293239*x1-40792.141® min vôùi caùc raøng buoäc 85.334407+0.0056858*x2*x5+0.00026*x1*x4-0.0022053*x3*x5>=0 85.334407+0.0056858*x2*x5+0.00026*x1*x4-0.0022053*x3*x5<=92 80.51249+0.0071317*x2*x5+0.0029955*x1*x2+0.0021813*x3*x3>=90 80.51249+0.0071317*x2*x5+0.0029955*x1*x2+0.0021813*x3*x3<=110 9.300961+0.0047026*x3*x5+0.0012547*x1*x3+0.0019085*x3*x4>=20 9.300961+0.0047026*x3*x5+0.0012547*x1*x3+0.0019085*x3*x4<=25 78<=x1<=102 33<=x2<=45 27<=x3<=45 27<=x4<=45 27<=x5<=45 Himmelblau: phöông phaùp giaûm ñoä doác toång quaùt Homaifar: giaûi thuaät di truyeàn vôùi kích thöôùc quaàn theå laø 400 Gen: giaûi thuaät di truyeàn döïa treân tham khaûo toaøn cuïc vaø cuïc boä Coello: söû duïng kyõ thuaät haøm phaït töï thích nghi döïa cô sôû GTDT Caùc Bieán Lôøi giaûi toát nhaát ñaõ tìm thaáy Chöông trình Coello Gen Hommaifar Himmelblau x1 x2 x3 x4 x5 g1(x) g2(x) g3(x) f(x) 78.000032 33.001783 27.099591 44.999976 44.880584 91.9862825504 100.388288041 20.0000022517 -31023.037906 78.0495 33.0070 27.0810 45.0000 44.9400 91.997635 100.40407857 20.001911 -31020.859 81.4900 34.0900 31.2400 42.2000 34.3700 90.522543 99.318806 20.060410 -30183.576 78.0000 33.0000 29.9950 45.0000 36.7760 90.714681 98.840511 19.999935 -30665.609 78.6200 33.4400 31.0700 44.1800 35.2200 90.520761 98.892933 20.131578 -30373.949 Traân troïng caùm ôn caùc thaày coâ ñaõ theo doõi ñeà taøi naøy. Kyõ thuaät cuûa giaûi thuaät keát hôïp 3 lôøi giaûi theo xaùc suaát ñoät bieán Giaû söû xeùt 3 lôøi giaûi a,b,c. Taïi chöõ soá leû thöù i: if (random(100)<Pi) { d=random(100) if(d else if (d else if (d else if(d else } else

Các file đính kèm theo tài liệu này:

  • docSlide_Baocao.doc
  • rar188352_Tối ưu số cho bài toán_.rar
  • docBia.doc
  • docBiatrong.doc
  • doclc.doc
  • docLVTN.doc
  • docMucluc.doc
  • zipSlide_Baocao.zip
  • doctailieu.doc