TÍCH HỢP RST2ANU VỚI MATLAB

Một phần của tài liệu Các mô hình và phần mềm tối ưu hóa và ứng dụng trong nông nghiệp (Trang 49 - 53)

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.

Nhp / lưu bài toán và các d kin

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

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

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ơ cu đầ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* = (adsbygoogle = window.adsbygoogle || []).push({});

Columns 1 through 6

21.0902 9.4856 9.2223 5.0966 5.1052 1.0000 Column 7 Column 7

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

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Ờ BẰNG PHƯƠNG PHÁP THOẢ DỤNG MỜ

Một phần của tài liệu Các mô hình và phần mềm tối ưu hóa và ứng dụng trong nông nghiệp (Trang 49 - 53)