Giáo trình Các mô hình và phần mềm tối ưu hoá và ứng dụng trong nông nghiệp

MỤC LỤC

CHƯƠNG I. ỨNG DỤNG MỘT SỐ MÔ HÌNH TỐIƯU TRONG NÔNG NGHIỆP 3

1. MÔ HÌNH QUY HOẠCH ĐƠN MỤC TIÊU 3

1.1. Mô hình tối ưu một mục tiêu (tuyến tính và phi tuyến) 3

1.2. Các ví dụ minh hoạ bài toán tối ưu một mục tiêu 4

2. MÔ HÌNH QUY HOẠCH ĐA MỤC TIÊU TUYẾN TÍNH VÀ PHI TUYẾN 8

2.1. Giới thiệu bài toán quy hoạch đa mục tiêu 8

2.2. Các khái niệm cơ bản của bài toán tối ưu đa mục tiêu 9

2.3. Các ví dụ minh hoạ bài toán quy hoạch đa mục tiêu 10

CHƯƠNG II. GIẢI BÀI TOÁN QUY HOẠCH TUYẾN TÍNH BẰNG

PHƯƠNG PHÁP ĐƠN HÌNH

23

1. PHƯƠNG PHÁP ĐƠN HÌNH GIẢI BTQHTT DẠNG CHÍNH TẮC 23

1.1. Ví dụ 23

1.2. Thuật toán đơn hình cho BTQHTT dạng chính tắc 27

2. PHƯƠNG PHÁP ĐƠN HÌNH HAI PHA GIẢI BTQHTT TỔNG QUÁT 28

2.1. Ví dụ 28

2.2. Thuật toán đơn hình hai pha giải BTQHTT dạng tổng quát 30

3. GIẢI CÁC BÀI TOÁN TỐI ƯU TRÊN MICROSOFT EXCEL 32

3.1. Giải BTQHTT 32

3.2. Giải bài toán quy hoạch phi tuyến có ràng buộc tuyến tính 34

3.3. Một số ví dụ khác 36

4. GIẢI BTQHTT TRONG LINGO 36

5. GIẢI BTQHTT BẰNG PHẦN MỀM QHTT 38

CHƯƠNG III. BÀI TOÁN QUY HOẠCH PHI TUYẾN 40

1. PHƯƠNG PHÁP RST2ANU GIẢI BÀI TOÁN TỐI ƯU

PHI TUYẾN TOÀN CỤC HỖN HỢP NGUYÊN 40

1.1. Đặt vấn đề 40

1.2. Thuật giải tìm kiếm ngẫu nhiên có kiểm soát RST2ANU 41

1. 3. Một số nhận xét về phiên bản nâng cấp của phần mềm 43

2. MỘT SỐ VÍ DỤ ÁP DỤNG RST2ANU 44

2.1. Bài 1: Bài toán xác định tham số sàng phân loại 44

2.2. Bài 2: Bài toán xác định cơ cấu đầu tư chăn nuôi cá 462

3. TÍCH HỢP RST2ANU VỚI MATLAB 48

3.1. Nhập từ bàn phím 48

3.2. Nhập từ tệp 50

CHƯƠNG IV. GIẢI BÀI TOÁN QUY HOẠCH TUYẾN TÍNH ĐA MỤC TIÊU

BẰNG PHƯƠNG PHÁP THOẢ DỤNG MỜ

52

1. CÁC KHÁI NIỆM CƠ BẢN 52

1.1. Phát biểu mô hình 52

1.2. Phương án tối ưu Pareto 53

1.3. Phương pháp thoả dụng mờ giải BTQHTT đa mục tiêu 54

2. GIẢI BTQHTT ĐA MỤC TIÊU BẰNG CHƯƠNG TRÌNH MÁY TÍNH

MULTIOPT

59

2.1. Ví dụ 59

2.2. Bài toán quy hoạch đất xã Nhân Chính 63

2.3. Bài toán quy hoạch đất xã Trâu Quỳ 70

CHƯƠNG V. MÔ HÌNH VÀ PHẦN MỀM TỐI ƯU PHI TUYẾN ĐA MỤC TIÊU 71

1. BÀI TOÁN TỐIƯU PHI TUYẾN TRONG MÔI TRƯỜNG MỜ/ NGẪU NHIÊN 71

1.1. Phát biểu bài toán và phương pháp mức ưu tiên 71

1.2. Xử lý các ràng buộc 72

1.3. Xử lý các mục tiêu 74

1.4. Sử dụng thông tin pay-off để đoán nhận ek , d~j 77

1.5. Mô hình tất định tương đương của bài toán 79

1.6. Khái niệm tối ưu hoá PL-Pareto 79

2. THUẬT GIẢI TƯƠNG TÁC LẶP PRELIME VÀ MỘT SỐ ỨNG DỤNG 80

2.1. Phát biểu thuật giải 80

2.2. Bài toán Chakraborty 81

2.3. Bài toán xác định cơ cấu đầu tư cho các hộ chăn nuôi cá 87

2.4. Bài toán quy hoạch sử dụng đất trên địa bàn huyện Trùng Khánh 88

CHƯƠNG VI. KẾT LUẬN VÀ ĐỀ XUẤT MỘT SỐ HƯỚNG NGHIÊN CỨU 92

1. ÁP DỤNG CÁC MÔ HÌNH TỐI ƯU TRONG NÔNG NGHIỆP 92

2. NGHIÊN CỨU ÁP DỤNG VÀ ĐỀ XUẤT CÁC PHƯƠNG PHÁP TỐI ƯU 92

3. XÂY DỰNG CÁC PHẦN MỀM TỐI ƯU 93

4. XÂY DỰNG HỆ HỖ TRỢ RA QUYẾT ĐỊNH CÀI ĐẶT TRÊN MẠNG

MÁY TÍNH 94

DANH MỤC TÀI LIỆU THAM KHẢO 96

pdf97 trang | Chia sẻ: trungkhoi17 | Lượt xem: 568 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giáo trình Các mô hình và phần mềm tối ưu hoá và ứng dụng trong nông nghiệp, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
g ta cần cài đặt Lingo vào trong máy tính. Nhấn vào biểu tượng Lingo trên màn hình để vào cửa sổ Lingo. Sau đó thực hiện các lệnh Lingo: Menu > New > và gõ vào các dữ liệu của bài toán. Nhập bài toán max = 8*x1+6*x2; 4*x1+2*x2<=76; 37 2*x1+5*x2<=52; @gin(x1); @gin(x2); Hai điều kiện sau cùng là các điều kiện biến nguyên. Kết quả chạy bài toán khi các biến đều liên tục Rows= 3 Vars= 2 No. integer vars= 0 ( all are linear) Nonzeros= 8 Constraint nonz= 4( 0 are +- 1) Density=0.889 Smallest and largest elements in absolute value= 2.00000 76.0000 No. : 0, Obj=MAX, GUBs <= 1 Single cols= 0 Optimal solution found at step: 0 Objective value: 159.0000 Variable Value Reduced Cost X1 17.25000 0.0000000E+00 X2 3.500000 0.0000000E+00 Row Slack or Surplus Dual Price 1 159.0000 1.000000 2 0.0000000E+00 1.750000 3 0.0000000E+00 0.5000000 Kết quả chạy bài toán khi biến x1 nguyên Rows= 3 Vars= 2 No. integer vars= 1 ( all are linear) Nonzeros= 8 Constraint nonz= 4( 0 are +- 1) Density=0.889 Smallest and largest elements in absolute value= 2.00000 76.0000 No. : 0, Obj=MAX, GUBs <= 1 Single cols= 0 Optimal solution found at step: 5 Objective value: 157.6000 Branch count: 1 Variable Value Reduced Cost X1 17.00000 -5.600000 X2 3.600000 0.0000000E+00 Row Slack or Surplus Dual Price 1 157.6000 1.000000 2 0.8000000 0.0000000E+00 3 0.0000000E+00 1.200000 38 Kết quả chạy bài toán khi các biến đều nguyên Rows= 3 Vars= 2 No. integer vars= 2 ( all are linear) Nonzeros= 8 Constraint nonz= 4( 0 are +- 1) Density=0.889 Smallest and largest elements in absolute value= 2.00000 76.0000 No. : 0, Obj=MAX, GUBs <= 1 Single cols= 0 Optimal solution found at step: 7 Objective value: 156.0000 Branch count: 2 Variable Value Reduced Cost X1 18.00000 -8.000000 X2 2.000000 -6.000000 Row Slack or Surplus Dual Price 1 156.0000 1.000000 2 0.0000000E+00 0.0000000E+00 3 6.000000 0.0000000E+00 5. GIẢI BTQHTT BẰNG PHẦN MỀM QHTT Sử dụng phần mềm QHTT trên mạng giáo dục edu.net.vn, dễ dàng nhập được dữ liệu BTQHTT và có đáp số với toàn bộ các bảng trung gian. Tuy nhiên phần mềm này chỉ áp dụng cho các biến liên tục và vẫn còn sai sót. Bài toán dạng chính tắc: F(x) = 8x1 + 6x2 => MAX Các ràng buộc: 4x1 + 2x2 + x3 = 60 2x1 + 4x2 + x4 = 48 Trong đó: 39 x3, x4 là biến bù x1 >=0, x2 >=0, x3 >=0, x4 >=0 Ci Xi Yi X1 X2 X3 X4 Lamda 0 X3 60 4 2 1 0 15 0 X4 48 2 4 0 1 24 F(x) 0 -8 -6 0 0 Ci Xi Yi X1 X2 X3 X4 Lamda 8 X1 15 1 1/2 1/4 0 30 0 X4 18 0 3 -1/2 1 6 F(x) 120 0 -2 2 0 D Ci Xi Yi X1 X2 X3 X4 Lamda 8 X1 12 1 0 1/3 -1/6 - 6 X2 6 0 1 -1/6 1/3 - F(x) 132 0 0 5/3 2/3 Phương án tối ưu của bài toán là : (12,6,0,0) Giá trị tối ưu của hàm mục tiêu là : F(x) = 132 40 Chương III BÀI TOÁN QUY HOẠCH PHI TUYẾN 1. PHƯƠNG PHÁP RST2ANU GIẢI BÀI TOÁN TỐI ƯU PHI TUYẾN TOÀN CỤC HỖN HỢP NGUYÊN 1.1. Đặt vấn đề Dạng chính tắc của bài toán tối ưu một mục tiêu được biểu diễn như sau: Min (Max) f(X) , X = (x1, x2, , xn)∈ Rn, với các điều kiện ràng buộc (i) gj(X) ≤ 0, j = 1, 2, , k, (ii) gj(X) = 0, j = k+1, k+2, , .m. Trong các bài toán thực tế có thể bổ sung thêm các ràng buộc (iii) ai ≤ xi ≤ bi, i = 1, 2, , n. Trong trường hợp hàm mục tiêu f(X) hay có ít nhất một trong các hàm ràng buộc gj(X), j = 1, 2, , m, là hàm phi tuyến, chúng ta có bài toán tối ưu phi tuyến. Khi tất cả các toạ độ xi đều bắt buộc nhận các giá trị nguyên, i = 1, 2, , n, thì ta có bài toán tối ưu nguyên. Còn nếu chỉ có một số toạ độ (nhưng không phải tất cả các toạ độ) bắt buộc nhận giá trị nguyên thì ta có bài toán tối ưu hỗn hợp nguyên. Ký hiệu D là miền các phương án (miền ràng buộc) cho bởi các ràng buộc (i), (ii) và / hoặc (iii) thì bài toán tối ưu trên đây có thể viết gọn hơn như sau: f(X) → Min (Max) với X ∈ D. Lúc này, đối với bài toán cực tiểu hoá, X* ∈ D được gọi là phương án tối ưu toàn cục nếu ∀ X∈D ta luôn có: f(X*) ≤ f(X). Trong trường hợp f(X*) ≤ f(X) chỉ đúng với ∀X∈D trong một lân cận nào đó của X* thì X* được gọi là phương án tối ưu địa phương. Một cách tương tự, ta có thể định nghĩa khái niệm phương án tối ưu toàn cục / địa phương cho bài toán cực đại hoá. Nếu chúng ta chỉ quan tâm tới việc tìm kiếm phương án tối ưu toàn cục thì ta có bài toán tối ưu toàn cục. Các phương pháp giải bài toán tối ưu toàn cục phi tuyến đơn mục tiêu được phân ra thành hai lớp: phương pháp tất định và phương pháp ngẫu nhiên (deterministic and stochastic methods). Phương pháp tất định sử dụng các tính chất giải tích của hàm mục tiêu và các hàm ràng buộc. Một số dạng bài toán tối ưu toàn cục với những tính chất giải tích nhất định của hàm mục tiêu và các hàm ràng buộc có thể giải được bằng các phương pháp tất định thích hợp, chẳng hạn như phương pháp quy hoạch toàn phương, quy hoạch tách, quy hoạch lồi, quy hoạch d.c Trong các trường hợp đó phương án tối ưu toàn cục có thể tìm được sau một số hữu hạn bước tính toán với độ chính xác chọn trước. Tuy nhiên, đối với nhiều lớp bài toán tối ưu toàn cục phương pháp tất định tỏ ra không có hiệu quả. Trong khi đó, các phương pháp ngẫu nhiên như: phương pháp đa khởi tạo (multistart), mô phỏng tôi (simulated annealing), thuật giải di truyền (genetic 41 algorithm) có thể áp dụng để giải các bài toán tối ưu toàn cục dạng bất kỳ, không đòi hỏi các tính chất đặc biệt của hàm mục tiêu hay các hàm ràng buộc. Các phương pháp ngẫu nhiên đặc biệt tỏ ra có hiệu quả đối với các bài toán tối ưu phi tuyến nguyên và hỗn hợp nguyên. Tuy nhiên, các phương pháp này thường chỉ cho phương án “gần” tối ưu khá tốt sau một số hữu hạn bước mà không kiểm soát được độ chính xác của phương án tìm được. Như vậy, hiện tại có nhiều phương pháp tối ưu toàn cục được đề xuất. Tuy nhiên chưa có một phương pháp nào tỏ ra hữu hiệu cho mọi bài toán tối ưu, đặc biệt là các bài toán tối ưu với biến nguyên hay hỗn hợp nguyên. Hơn nữa, các phương pháp tối ưu cần phải được lập trình để đóng gói thành các phần mềm thân thiện đối với người sử dụng. Đây là một đòi hỏi rất thực tế của các kĩ sư, các nhà khoa học, các doanh nghiệp trong nhiều lĩnh vực công nghiệp cũng như nông nghiệp. Trong bài báo này, chúng tôi trình bày một phần mềm tính toán khoa học (RST2ANU) có thể đáp ứng được phần nào các đòi hỏi nêu trên đối với người sử dụng để giải các bài toán tối ưu phi tuyến toàn cục với các biến liên tục, nguyên hoặc hỗn hợp nguyên. Phần mềm này được xây dựng dựa trên phương pháp tìm kiếm ngẫu nhiên có kiểm soát (cùng tên gọi RST2ANU) do Mohan và Nguyễn Hải Thanh đề xuất (Xem “A controlled random search technique incorporating the simulated annealing concept for solving integer and mixed integer global optimization problems”, Computational Optimization and Applications, Vol. 14, pp. 103-132, 1999). Đây là một phương pháp tối ưu đã được chạy kiểm thử trên hàng trăm bài toán mẫu và nhiều bài toán thực tế với độ tin cậy rất cao và tốc độ tính toán chấp nhận được. 1.2. Thuật giải tìm kiếm ngẫu nhiên có kiểm soát RST2ANU Thuật giải RST2ANU là thuật giải lặp, bao gồm hai pha, pha địa phương và pha toàn cục. Trong pha toàn cục, một số lượng thích hợp đủ lớn các phương án chấp nhận được được phát sinh ra một cách ngẫu nhiên và lưu trữ trong mảng có tên A. Đánh dấu hai điểm có giá trị hàm mục tiêu lớn nhất và nhỏ nhất tương ứng là M và L. Trong pha địa phương, các phương án được xử lý nhằm thu được giá trị ước lượng tốt hơn của hàm mục tiêu. Trong pha này, thuật giải xác định X* là điểm được nội suy bậc hai dựa trên phương án L và hai phương án khác được chọn ngẫu nhiên trong mảng A. Nếu như X* chấp nhận được thì với f(X*) ≤ f(M), M sẽ được thay thế bởi X* trong mảng A, còn với f(X*)>f(M) M sẽ được thay thế bởi X* với xác suất p= exp(-β(f(X*)-f(M))/(f(X*)-f(L))) , trong đó β >0 là tham số được lựa chọn thích hợp. Nếu X* không phải là phương án chấp nhận được, bỏ qua X* và chọn hai phương án khác trong A một cách ngẫu nhiên rồi cùng với L tiếp tục sinh ra phương án mới. Quá trình cứ thế tiếp diễn như vậy cho tới khi tập hợp các phương án trong A sẽ có xu hướng co cụm lại xung quanh một phương án tối ưu toàn cục. Lưu đồ thuật giải RST2AN được thể hiện trên hình minh hoạ, trong đó: • n, f(X), g(j), ai, bi, là các đầu vào. 42 • A = RandomNSolution (N) phát sinh N phương án ngẫu nhiên chấp nhận được, đồng thời tính giá trị của hàm mục tiêu và trả về kết quả cho mảng A. Như vậy, mảng A chứa luôn cả giá trị hàm mục tiêu tương ứng với từng phương án. Lưu đồ thuật giải RST2ANU • Arrange(A) sắp xếp mảng A theo thứ tự tăng dần của hàm mục tiêu. r = random(0,1) p=exp(-beta(f(X*)-f(M))/(f(X*)-f(L))) N 43 • Max(A), Min(A) trả về phương án có giá trị hàm mục tiêu lớn nhất và nhỏ nhất trong A. • Clustered(A, eps1, eps2) cho biết mảng A đã hội tụ theo hàm mục tiêu hay chưa. • Nếu (f(M) – f(L))/FM) < eps1 thì mảng A hội tụ, ngược lại chưa hội tụ, với FM = f(M) nếu f(M) > eps2, ngược lại FM = 1. • NewSolution() trả về một phương án mới được suy ra từ 3 điểm: L và hai điểm được chọn ngẫu nhiên khác trong mảng A theo phương pháp nội suy. • Feas(X) nhận giá trị TRUE nếu X chấp nhận được, ngược lại nhận giá trị FALSE • Random(0,1) trả về giá trị ngẫu nhiên nằm trong khoảng (0,1). • Replace(A, M, X*) thay thế M trong A bởi X* kèm theo cả giá trị hàm mục tiêu sao cho không cần phải sắp xếp lại mảng A mà vẫn đảm bảo các điểm được sắp xếp theo thứ tự giá trị hàm mục tiêu tăng dần. • Kết thúc 1: Số lần tìm kiếm liên tiếp mà không cải thiện được giá trị hàm mục tiêu vượt quá số lần cho phép. Thuật giải dừng với giá trị tốt nhất của hàm mục tiêu tìm được là FL tương ứng với phương án L. • Kết thúc 2: Phương án tối ưu toàn cục đã đạt được là L với giá trị hàm mục tiêu là FL. • Kết thúc 3: Số lần nội suy liên tiếp mà không tìm được phương án thay thế M trong A vượt quá số lần cho phép. Thuật giải dừng với giá trị tốt nhất của hàm mục tiêu tìm được là FL tương ứng với phương án L. • Kết thúc 4: Số lần lặp vượt quá số lần cho phép. Thuật giải dừng với giá trị tốt nhất của hàm mục tiêu tìm được là FL tương ứng với phương án L. 1.3. Một số nhận xét về phiên bản nâng cấp của phần mềm Phần mềm tính toán khoa học RST2ANU đã được thiết kế và xây dựng có thể sử dụng để giải quyết nhiều mô hình tối ưu phát sinh trong lĩnh vực nông nghiệp, hỗ trợ cho giảng dạy và nghiên cứu khoa học nông nghiệp cũng như trong các lĩnh vực khác. Phần mềm này đã được nâng cấp có tính thân thiện với người sử dụng và tránh được sao chép, có thể được phổ cập có bản quyền một cách rộng rãi. Việc tạo ra các giao diện thân thiện cho phép dễ dàng nhập các hàm mục tiêu và ràng buộc của nhiều dạng bài toán tối ưu phi tuyến là một vấn đề khá phức tạp đã được giải quyết thành công trong phần mềm này. Trong tình hình hiện tại, khi các phần mềm tối ưu phi tuyến không có sẵn trên thị trường trong và ngoài nước, phần mềm RST2ANU nên được triển khai sử dụng để giải quyết các bài toán tối ưu trong các lĩnh vực khác nhau, bao gồm cả các bài toán nguyên và hỗn hợp nguyên. Các nghiên cứu cần tiếp tục được triển khai và được hỗ trợ 44 về mặt tài chính để tích hợp RST2ANU vào các gói phần mềm trong điều khiển tự động hóa hay trong các hệ hỗ trợ ra quyết định. 2. MỘT SỐ VÍ DỤ ÁP DỤNG RST2ANU 2.1. Bài 1: Bài toán xác định tham số sàng phân loại Sau đây là cách viết chương trình con tính giá trị hàm mục tiêu và kiểm tra tính khả thi của phương án đã được phát sinh khi thực hiện chương trình máy tính RST2ANU. float f() { float fv, g; g= 0.05*cos(0+3.1417/18)+0.3*cos(x[0])+0.15*cos(x[1])+0.5*cos(x[2])- 0.365; g=1000*g*g; fv=g; g= 0.05*sin(0+3.1417/18)+0.3*sin(x[0])+0.15*sin(x[1])+0.5*sin(x[2])-0.635; g=1000*g*g; fv=fv+g; g=0.05*cos(0+3.1417/18)+0.3*cos(x[0])+1.075*cos(x[1]- 3.1417/8)+0.4*cos(x[3])-1.365; g=1000*g*g; fv=fv+g; g=0.05*sin(0+3.1417/18)+0.3*sin(x[0])+1.075*sin(x[1]- 3.1417/8)+0.4*sin(x[3])-0.635; g=1000*g*g; fv=fv+g; return(fv); } int feas() {int flag=1; return(1); } File vào v1.in 1 4 0 4 0.000001 0.000001 10000 2000 0 2000 0 0 1 0 0 0 0 0 1 2 3 0 3.1417 0 3.1417 0 3.1417 0 3.1417 123 234 345 456 567 45 3 3 0.01 0 0 File ra v1.out PROBLEM No 1 **crs2.c n=4,nc=0,nint=4,epsilon=0.000001,eps1=0.000001,iterlast=10000 ifailast=2000,imlast=0,islast=2000,iprint=0,id=0,imp=1,ipat=0 noninteger variables are: x[0] x[1] x[2] x[3] guess=0,nguess=0,lppatt=0 lower and upper bounds of coordinates: xmin[0]=0.000000,xmax[0]=3.141700 xmin[1]=0.000000,xmax[1]=3.141700 xmin[2]=0.000000,xmax[2]=3.141700 xmin[3]=0.000000,xmax[3]=3.141700 itnlast=3,istnlast=3,eps2=0.010000 ***CRS SOLUTION FOR NLPP by type 1 as usually **case 1 na=50 seed[0]=*, s*,f=0.000000,fm=0.000001,iter=763,ifun=1664,t1=0 *, s*,f=0.000000,fm=0.000001,iter=1069,ifun=1619,t1=0 *, s*,f=0.000000,fm=0.000001,iter=1026,ifun=1557,t1=0 *,f*,f=4.300038,fm=4.300157,iter=1941,ifun=25813,t1=0 t*, f= 0.000000,iter2=4799 ifun2=30653,t2=0 fopt=0.000000 0.198735,0.550661,1.784750,1.670850, seed[1]=*,f*,f=4.300035,fm=4.300137,iter=1891,ifun=32299,t1=0 *,f*,f=4.300043,fm=4.300156,iter=1705,ifun=31407,t1=0 *,f*,f=4.300050,fm=4.300186,iter=967,ifun=21132,t1=1 *, s*,f=0.000000,fm=0.000001,iter=938,ifun=1481,t1=0 t*, f= 0.000000,iter2=5501 ifun2=20783,t2=1 fopt=0.000000 0.198752,0.550653,1.784751,1.670846, seed[2]=*,f*,f=4.300051,fm=4.300158,iter=1168,ifun=-27879,t1=0 *, s*,f=0.000000,fm=0.000001,iter=933,ifun=1398,t1=0 *,f*,f=4.300040,fm=4.300148,iter=1295,ifun=-32336,t1=0 *, s*,f=0.000000,fm=0.000001,iter=1063,ifun=1643,t1=0 t*, f= 0.000000,iter2=4459 ifun2=8362,t2=0 fopt=0.000000 0.198742,0.550658,1.784749,1.670847, seed[3]=*, s*,f=0.000000,fm=0.000001,iter=943,ifun=1430,t1=0 46 *, s*,f=0.000000,fm=0.000001,iter=868,ifun=1345,t1=0 *, s*,f=0.000000,fm=0.000001,iter=1048,ifun=1634,t1=0 *,f*,f=4.300054,fm=4.300150,iter=2354,ifun=-30714,t1=0 t*, f= 0.000000,iter2=5213 ifun2=-26305,t2=0 fopt=0.000000 0.198741,0.550658,1.784751,1.670850, seed[4]=*, s*,f=0.000000,fm=0.000001,iter=1216,ifun=1905,t1=0 *, s*,f=0.000000,fm=0.000001,iter=1191,ifun=1859,t1=0 *,f*,f=4.300034,fm=4.300148,iter=1659,ifun=27170,t1=0 *, s*,f=0.000000,fm=0.000001,iter=801,ifun=1234,t1=0 t*, f= 0.000000,iter2=4867 ifun2=32168,t2=0 fopt=0.000000 0.198742,0.550658,1.784751,1.670848, ***b1=1196,b2=1883,*** ***a1=4967,a2=25,*** 2.2. Bài 2: Bài toán xác định cơ cấu đầu tư chăn nuôi cá float f() { float fv; fv=19.375*pow(x[0],0.236)*pow(x[1],0.104)*pow(x[2],0.096)*pow(x[3],0.056); fv=fv*pow(x[4],0.056)*exp(0.168*x[5])*exp(0.066*x[6]); return(fv); } int feas() { int flag=1; float g; g=x[0]+x[1]+x[2]+x[3]+x[4]; if(g>50) { flag=0; goto LAST; } g=x[5]+x[6]; if(g>1) { flag=0; goto LAST; } LAST: if(flag==0) {return(0);} 47 else {return(1);} File vào CUONG1.IN 1 7 2 5 0.001 0.001 10000 2000 0 2000 0 0 0 0 0 0 0 0 1 2 3 4 0 50 0 50 0 50 0 50 0 50 0 1 0 1 123 234 345 456 567 0 0 0.01 0 0 File ra CUONG1.OUT PROBLEM No 1 **crs2.c n=7,nc=2,nint=5,epsilon=0.001000,eps1=0.001000,iterlast=10000 ifailast=2000,imlast=0,islast=2000,iprint=0,id=0,imp=0,ipat=0 noninteger variables are: x[0] x[1] x[2] x[3] x[4] guess=0,nguess=0,lppatt=0 lower and upper bounds of coordinates: xmin[0]=0.000000,xmax[0]=50.000000 xmin[1]=0.000000,xmax[1]=50.000000 xmin[2]=0.000000,xmax[2]=50.000000 xmin[3]=0.000000,xmax[3]=50.000000 xmin[4]=0.000000,xmax[4]=50.000000 xmin[5]=0.000000,xmax[5]=1.000000 xmin[6]=0.000000,xmax[6]=1.000000 itnlast=0,istnlast=0,eps2=0.010000 ***CRS *** SOLUTION FOR NLPP by type 1 as usually **case 1 na=16 seed[0]=0*, s*,f=-88.334068,fm=-88.248016,iter=81,ifun=15061,t1=0 t*, f= -88.334068,iter2=81 ifun2=15061,t2=0 fopt=-88.334068 20.970308,9.272722,9.084186,5.446885,5.225899,1.000000,0.000000, seed[1]=0*, s*,f=-88.360970,fm=-88.274643,iter=688,ifun=15912,t1=0 t*, f= -88.360970,iter2=688 ifun2=15912,t2=0 fopt=-88.360970 21.514578,9.515970,8.769965,5.103930,5.095558,1.000000,0.000000, seed[2]=0*, s*,f=-88.360855,fm=-88.272774,iter=588,ifun=14737,t1=1 t*, f= -88.360855,iter2=588 ifun2=14737,t2=1 fopt=-88.360855 48 21.570715,9.461304,8.736217,5.097508,5.134254,1.000000,0.000000, seed[3]=0*, s*,f=-88.359039,fm=-88.270882,iter=691,ifun=17550,t1=0 t*, f= -88.359039,iter2=691 ifun2=17550,t2=0 fopt=-88.359039 21.375309,9.651163,8.772411,5.121580,5.079536,1.000000,0.000000, seed[4]=0*, s*,f=-88.360451,fm=-88.273888,iter=691,ifun=16477,t1=0 t*, f= -88.360451,iter2=691 ifun2=16477,t2=0 fopt=-88.360451 21.518408,9.449259,8.761295,5.180042,5.090996,1.000000,0.000000, ***t3=0/1*** ***b1=547,b2=2840,*** ***a1=547,a2=2840,*** 3. TÍCH HỢP RST2ANU VỚI MATLAB Trong Matlab không có lệnh nhảy vô điều kiện goto. Để xử lí vấn đề này cần lập trình theo từng khối tuần tự, kết hợp với cách sử dụng các lời gọi hàm thông qua các file chương trình, khối lệnh khác nhau. Chương trình RST2ANU gồm nhiều file, mỗi file có thể là một chương trình con, cũng có thể là một khối lệnh. Chương trình hoàn chỉnh được chứa trong thư mục RST2ANU, file CRS là file chính và cũng là lệnh gọi chương trình từ Matlab. Nhập / lưu bài toán và các dữ kiện Chạy chương trình bằng cách dùng lệnh crs từ dòng lệnh của Matlab. Khi chạy sẽ thấy xuất hiện: 1. Enter the problem. 2. Load problem from file. 3. Exit. Your choice: Nhập dữ liệu cho bài toán có thể nhập từ file dữ liệu có sẵn (chọn 2), hoặc có thể nhập lần lượt các tham số đầu vào (chọn 1), nếu chọn 3 là thoát khỏi chương trình. 3.1. Nhập từ bàn phím Ví dụ. Xét bài toán tối ưu phi tuyến toàn cục hỗn hợp nguyên z = x10,6 + x20,6 + x30,4 + 2x4 + 5x5 − 4x3 – x6, → Min với các ràng buộc: x2 − 3x1 − 3x4 = 0; x3 − 2x2 − 2x5 = 0; 4x4 – x6 = 0; x1 + 2x4 ≤ 4; x2 + x5 ≤ 4; x3 + x6 ≤ 6; x1 ≤ 3; x2 ≤ 4; x3 ≤ 4; x4 ≤ 1; x5 ≤ 2; x6 ≤ 6; x1, x2, x3, x4, x5, x6 ≥ 0; x4, x5, x6 là các biến nguyên. Your choice: 1 49 Sau đó lần lượt xuất hiện các dòng nhắc nhập dữ liệu đầu vào, ta lần lượt nhập như sau: +++++ THE PROBLEM +++++ Number of variables (N):6 Array to describe integer variables:[0 0 0 1 1 1] Goal function f(x)=(X(1)^0.6)+(X(2)^0.6)+(X(3)^0.4)+2*X(4)+5*X(5)-4*X(3)- X(6) Feasible conditions: (Leave blank for none) 1. X(1)=(X(2)-3*X(4))/3 2. X(3)=2*(X(2)+X(5)) 3. X(6)=4*X(4) 4. X(2)-3*X(1)-3*X(4)==0 5. X(3)-2*X(2)-2*X(5)==0 6. 4*X(4)-X(6)==0 7. X(1)+2*X(4)<=4 8. X(2)+X(5)<=4 9. X(3)+X(6)<=6 10. Number of feasible conditions entered: 9 Array to describe min values of X: [0 0 0 0 0 0] Array to describe max values of X: [3 4 4 1 2 6] +++++ CONDITIONS FOR ALGORITHM +++++ Limit Random Trying to find one feasible solution to (1000): 1000 Number of solutions in array A (20): 30 Limit Number of Interactive to(1000): 1000 Limit Number of Consecutive searches to (500): 200 Limit Number of Improve Failures to (500): 200 Epsilon 1 (1e-6): 1e-006 Epsilon 2(1e-1): 0.1 Beta (1): 1 Enter file name to save this problem (*.mat, leave blank for unsave):demo_01.mat Kết quả nhận được như sau: ===== Here is the result ===== Stop with number of failure on improve goal value exceed. X* = 0.6667 2.0000 4.0000 0 0 0 f(X*) = -11.9591 ± 1.1959e-005 50 Total time: 6.875 second(s) Source: demo_01.mat Results saved to res.txt End. 3.2. Nhập từ tệp Bài toán xác định cơ cấu đầu tư 1. Enter the problem. 2. Load problem from file. 3. Exit Your choice:2 Enter file name (*.mat):p01_50.mat The problem is: MIN f(X)=- 19.3753*X(1)^0.236*X(2)^0.104*X(3)^0.096*X(4)^0.056*X(5)^0.056*exp(0.168*X(6 ))*exp(0.066*X(7)) 1. X(5)=50-(X(1)+X(2)+X(3)+X(4)); 2. X(6)+X(7)==1 3. X(1)+X(2)+X(3)+X(4)+X(5)==50 0 <= X(1) <= 50 real 0 <= X(2) <= 50 real 0 <= X(3) <= 50 real 0 <= X(4) <= 50 real 0 <= X(5) <= 50 real 0 <= X(6) <= 1 integer 0 <= X(7) <= 1 integer Epsilon approximately: 0.0001% Searching. Be patient... Searching completed. ===== Here is the result ===== Stop with epsilon approximately. X* = Columns 1 through 6 21.0902 9.4856 9.2223 5.0966 5.1052 1.0000 Column 7 0 51 f(X*)= -88.3465 ± 8.8346e-005 Total time: 5.217 second(s) Source: p01_50.mat Results saved to res.txt End. Chú ý: – Để xoá màn hình dùng lệnh: clc – Để đọc tệp *.mat dùng lệnh: open(‘*.mat) 52 Chương IV GIẢI BÀI TOÁN QUY HOẠCH TUYẾN TÍNH ĐA MỤC TIÊU BẰNG PHƯƠNG PHÁP THOẢ DỤNG MỜ 1. CÁC KHÁI NIỆM CƠ BẢN 1.1. Phát biểu mô hình Trong các bài toán kĩ thuật, công nghệ, quản lý, kinh tế nông nghiệp v.v... nảy sinh từ thực tế, chúng ta thường phải xem xét để tối ưu hoá đồng thời một lúc nhiều mục tiêu. Các mục tiêu này thường là khác nhau về thứ nguyên, tức là chúng được đo bởi các đơn vị khác nhau. Những tình huống như vậy tạo ra các bài toán tối ưu đa mục tiêu. Như vậy, chúng ta cần phải tối ưu hoá (cực đại hoá hoặc cực tiểu hoá tuỳ theo tình huống thực tế) không phải là chỉ một mục tiêu nào đó, mà là đồng thời tất cả các mục tiêu đã đặt ra. Bài toán tối ưu đa mục tiêu mà trong đó miền ràng buộc D là tập lồi đa diện và các mục tiêu zi = zi(x), với i = 1, 2,, p, là các hàm tuyến tính xác định trên D, được gọi là BTQHTT đa mục tiêu. Với mục đích tìm hiểu bước đầu, BTQHTT đa mục tiêu (BTQHTT đa mục tiêu) được phát biểu như sau (Bài toán 1): Max Cx với ràng buộc x ∈ D, trong đó: C là ma trận cấp p × n và D = {x ∈ Rn: Ax ≤ b} với A là ma trận cấp m × n và b ∈ Rm. Các hàng của ma trận C là các véc tơ gradient c1, c2, , cp của các hàm mục tiêu z1 = c1Tx , z2 = c2Tx , , zp = cpTx. Ví dụ: Giải BTQHTT hai mục tiêu. z1 = 8x1+ 6x2 → Max z2 = x1 + 3x2 → Max với các ràng buộc: Ta có thể viết bài toán này dưới dạng ma trận như sau: Max Cx với ràng buộc x ∈ D = {x∈ R2 : Ax ≤ b}, trong đó x = (x1, x2)T, b = (60, 48)T, còn C = 8 1 ⎡⎢⎣ 6 3 ⎤⎥⎦ , A = 4 2 2 4 ⎡ ⎤⎢ ⎥⎣ ⎦ . Có thể nói, BTQHTT đa mục tiêu là BTQHTT mà trong đó chúng ta phải tối ưu hoá cùng một lúc nhiều mục tiêu. Tuy nhiên, các mục tiêu này thường đối chọi cạnh tranh với nhau. Việc làm tốt hơn mục tiêu này thường dẫn tới việc làm xấu đi 4x1 + 2x2 ≤ 60 2x1 + 4x2 ≤ 48 x1, x2 ≥ 0. (D) 53 một số mục tiêu khác. Vì vậy việc giải các bài toán tối ưu đa mục tiêu, tức là tìm ra một phương án khả thi tốt nhất theo một nghĩa nào đó, thực chất chính là một bài toán ra quyết định. 1.2. Phương án tối ưu Pareto Khái niệm then chốt trong tối ưu hoá đa mục tiêu là khái niệm phương án tối ưu Pareto. Xét Bài toán 1 , chúng ta cần biết các định nghĩa và định lý sau đây. Định nghĩa 1 Một phương án tối ưu Pareto x* có tính chất sau đây: − Trước hết nó phải thuộc vào miền các phương án khả thi của bài toán, tức là phải thoả mãn tất cả các ràng buộc: x* ∈ D. − Xét phương án khả thi x ∈ D, x ≠ x*. Nếu tồn tại tại một chỉ số i ∈ {1, 2, , p} sao cho zi(x) > zi(x*) thì tồn tại j ∈ {1, 2, , p}, j ≠ i, sao cho zj(x) < zj(x*). Nói một cách khác, không tồn tại một phương án khả thi nào x ∈ D có thể trội hơn x* trên tổng thể tất cả các mục tiêu. Định nghĩa 2 Một phương án tối ưu Pareto yếu x* có tính chất sau đây: − Trước hết nó phải thuộc vào miền các phương án khả thi của bài toán, tức là phải thoả mãn tất cả các ràng buộc: x* ∈ D. − Xét một phương án khả thi x ∈ D, x ≠ x*. Nếu tồn tại tại một chỉ số i ∈ {1, 2, , p} sao cho zi(x) > zi(x*) thì tồn tại j ∈ {1, 2, , p}, j ≠ i, sao cho zj(x) ≤ zj(x*). Để nhận biết tập phương án tối ưu Pareto chúng ta cần tới các định nghĩa sau. Định nghĩa 3 Nón cảm sinh bởi các véc tơ gradient c1, c2, , cp của các hàm mục tiêu được gọi là nón tiêu chuẩn (criterion cone). Để tìm tập các phương án tối ưu Pareto chúng ta có thể sử dụng tập các điểm trội. Định nghĩa 4 Cho x ∈ D. Tập điểm trội tại x là tập xD = { x }⊕ C≥ , với C≥ = {x = (x1, x2) ∈ R2 : Cx ≥ 0, Cx ≠ 0}là nón đối cực nửa dương (semi-positive polar cone). Định lý 1: Xét Bài toán 1. Lúc đó: x ∈ D là phương án tối ưu Pareto khi và chỉ khi xD ∩ D = { x }. Chứng minh. Giả sử x là phương án tối ưu Pareto và xD ∩ D ≠ { x }. Lúc đó tồn tại xˆ ∈ xD ∩ D sao cho xˆ ≠ x và xˆ = x + x với x ∈ C≥ . Do Cx ≥ 0, Cx ≠ 0 nên C xˆ ≥ C x và C xˆ ≠ C x . Điều này vô lí do x là phương án tối ưu Pareto. Ngược lại, giả sử xD ∩ D = { x }. Lúc này nếu tồn tại xˆ ≠ x sao cho C xˆ ≥ 54 C x và C xˆ ≠ C x thì xˆ ∉ D. Vậy x là phương án tối ưu Pareto. „ Để minh hoạ các định nghĩa 1, 3 và 4, chúng ta xét lại ví dụ đã biết

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

  • pdfgiao_trinh_cac_mo_hinh_va_phan_mem_toi_uu_hoa_va_ung_dung_tr.pdf