Matlab Optimization Toolbox là một tập hợp các hàm tính toán số được sử dụng để tính các dạng tối ưu hóa khác nhau chẳng hạn như cực tiểu có ràng buộc và không ràng buộc phi tuyến, chương trính bậc hai và chương trình tuyến tính, giải quyết các hệ thống phi tuyến…Hầu hết các hàm tối ưu được chứa trong các file.m. Việc tối ưu hóa không chỉ là cực tiểu mà còn cực đại một hàm nào đó. Có rất nhiều tùy chọn có thể được thay đổi bằng cách thay đổi các tùy chọn chức năng như hiển thị các bước lặp…nếu không chương trình sẽ làm việc dựa trên các thiết lập mặc định của tùy chọn. Một trong các hàm được sử dụng để giải quyết vấn đề tối ưu hóa trong luận văn này là fmincon. Hàm này được sử dụng để cực tiểu một hàm vô hướng nhiều biến bằng cách lặp đi lặp lại bắt đầu từ một ước tính ban đầu, đó là tối ưu hóa phi tuyến. Cú pháp của nó là như sau:
min F(x) subject to c(x) <= 0 (2.12) ceq(x) = 0
A*x <= b Aeq * x = beq Lb <= x<= ub
[ x,fval] = fmincon ( fun, x0, a, b, Aeq, beq, lb, options) Trong đó:
X, b, beq, lb, và ub là các véc tơ A và Aeq là ma trận
c(x), ceq(x) là hàm trả về và có thể là phi tuyến x0 là giá trị ước lượng ban đầu của các biến
Một ví dụ đơn giản sử dụng Matlab Optimization Toolbox được đưa ra dưới đây.
Ví dụ: Tìm giá trị của x để cực tiểu hàm f(x) = - X 1. X2. X3. Điểm ban đầu là x=[10;10;10] và ràng buộc 0<= X 1 + 2X 2 + 2X 3 <=72
Giải: đầu tiên viết một m-file như sau: Function f= myfun(x)
f = -x(l)* x(2) * x(3) ; Sau đó viết lại các ràng buộc
-x(l) – 2* x(2) – 2*x(3) <=0 x(l) + 2*x(2) – 2*x(3) <=72
Do cả hai ràng buộc đều là tuyến tính nên giải chúng như là một ma trận bất phương trình
A*x<=b Trong đó,
A= −1 −2 −2
1 2 2 b=
Tiếp đến nhập điểm bắt đầu và giải quyết x0 = [ 10;10;10];
[ x,fval] = fmincon(‘myfun’ x0, A, b) Sau khi chạy xong đáp số là
x= 24.000 12.000 12.000
fval = -3.4560e + 03
và ràng buộc bất phương trình là A*x-b =