Bài giảng Tối ưu hóa trong thiết kế cơ khí - Chương 11: Ứng dụng Matlab giải các bài toán tối ưu hóa

20 66 2
Bài giảng Tối ưu hóa trong thiết kế cơ khí - Chương 11: Ứng dụng Matlab giải các bài toán tối ưu hóa

Đ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

• exitflag=1: có nghĩa là hàm đã hội tụ tại điểm lời giải x nếu Stopping Criteria = 'TolX‘ • exitflag=0: có nghĩa là số lượng tính hàm mục tiêu hoặc số lượng vòng lặp đã đạt. ngưỡng cho[r]

(1)

Khoa Cơng nghệ Cơ khí

CHƯƠNG 11:

ỨNG DỤNG MATLAB GIẢI CÁC BÀI TỐN TỐI ƯU HĨA

(2)

Thống phiên MATLAB

Trường câu lệnh

Các biến tính tốn xong

Trường lịch sử câu lệnh dùng

(3)

Làm quen với MATLAB

Dấu >> Ký tự nhắc mặc định MATLAB, đầu câu lệnh >> Dấu ; Dấu chấm phẩy cuối dòng tránh việc in kết trường câu lệnh (khi ta không cần in kết cho cửa sổ ngắn gọn) >> a=2;

Dấu … Dấu ba chấm cuối dòng cho phép tiếp tục code dòng

>> a=…

help

tên_câu_lệnh Hiển thị thông tin chi tiết câu lệnh mà người dùng cần sử dụng

>>help linprog

Chữ viết thường viết hoa phân biệt khác MATLAB

>> a=2 >>A=2 >>A+a MATLAB coi tất biến dạng mảng (arrays)

Tên biến

Trong MATLAB tên biến chữ có chiều dài tối đa 31 ký tự bao gồm chữ (in hoa viết thường khác nhau), số dấu gạch

>>A_a_bc_9=12

Các phép tốn thơng dụng + - * / ^ >>2+3*6^2/4-7

Tránh trùng với tên biến tích hợp hệ thống, số, tên hàm

pi sin cos v.v

(4)

Ma trận MATLAB

Đối tượng Cách thực Ví dụ

Véctơ hàng Ngoặc vng, Dấu cách A=[1 4]

Véctơ cột

Cách 1: Ngoặc vng xuống dịng B=[5

2 ]

Cách 2: Ngoặc vuông dấu chấm phẩy B=[5;2;3]

Cách 3: Đảo véc tơ hàng thành cột dấu ‘ B=[5 3]'

Ma trận [mxn]

Cách 1: áp dụng véc tơ hàng cột: dấu cách xuống dòng

A=[1 9]

Cách 2: Dấu cách dấu chấm phẩy A=[1 3;4 6;

8 9] Ma trận đơn vị

đường chéo

- eye(m,n) – ma trận mxn

- eye(n) – ma trận vng kích thước n

eye(4) eye(3,4)

Ma trận toàn ones(m,n) ones(n) ones(3)

Ma trận toàn zeros(m,b) zeros(n) zeros(4)

Tạo dãy cấp số cộng M:icr:N

M:N – icr=1 theo mặc định

(5)

Ma trận MATLAB (tiếp)

Đối tượng Cách thực Ví dụ

Phần tử ma trận Dấu ngoặc tròn:

- A(i,j) chọn phần tử hàng i, cột j ma trận A

- A(m1:m2,n1:n2) Chọn phần tử từ hàng m1 đến hàng m2, cột n1 đến cột n2

(6)

Kịch (Scripts)

(7)

Hàm số (Function)

function [O_1,O_2,…,O_m] = function_name (I_1,I_2,…,I_n)

% -

% Ở ghi function body

(8)

function [ p ] = func1( x )

%func1 of this function goes here %Detailed explanation goes here

(9)

function [x1,x2] = PTB2(a,b,c)

% Ham PTB2 dung de giai phuong trinh bac co dang a*x^2+b*x+c=0 % Tham bien dau vao la he so a, b, c a !=0

Delta = b^2-4*a*c;

x1 = (-b+sqrt(Delta))/(2*a); x2 = (-b-sqrt(Delta))/(2*a); [x1 x2]

end

(10)

Giới thiệu Optimization Toolbox

STT Loại toán Hàm sử

dụng 1 Cực tiểu hóa hàm biến số

(Scalar Minimization)

fminbnd

2 Cực tiểu hóa hàm nhiều biến số khơng có ràng buộc (Unconstrained Minimization)

fminunc fminsearch 3 Quy hoạch tuyến tính

(Linear Programming)

linprog

4 Quy hoạch bậc hai

(Quadratic Programming)

quadprog

5

Cực tiểu hóa hàm phi tuyến với ràng buộc tuyến tính phi tuyến

(Constrained Minimization)

fmincon

6 Cực tiểu hóa nửa vơ hạn

(11)(12)(13)

CỰC TIỂU HÓA HÀM MỘT BIẾN SỐ

  min;

f xa  x b

[x,fval,exitflag,output] = fminbnd(@Objfun,a,b,options)

x – xuất giá trị x làm cho hàm mục tiêu đạt cực tiểu

fval – xuất giá trị hàm mục tiêu điểm cực tiểu x

exitflag – xuất giá trị để xác định điều kiện dừng tính tốn, cụ thể là:

• exitflag=1: có nghĩa hàm hội tụ điểm lời giải x Stopping Criteria = 'TolX‘ • exitflag=0: có nghĩa số lượng tính hàm mục tiêu số lượng vòng lặp đạt

ngưỡng cho phép Stopping Criteria = 'MaxIter' 'MaxFunEvals' • exitflag=-1: có nghĩa thuật tốn bị dừng hàm đầu

• exitflag=-2: có nghĩa khoảng giá trị bị sai (a>b)

output – xuất thơng tin số vịng lặp tính tốn, số lần tính hàm số, thuật tốn bước tính thơng báo cuối

Objfun – tên M-file xác định hàm mục tiêu

a,b – giá trị biên biến x

(14)

CỰC TIỂU HÓA HÀM MỘT BIẾN SỐ

Tìm cực tiểu hàm số    

0.75 1

0.65 0.65 arctan ; 0;0.5

1

f x x x

x x

 

     

  

1) Bước 1: Tạo thư mục cho tốn, ví dụ fminbnd1

(15)

function f = Objfun( x )

%OBJFUN Summary of this function goes here % Detailed explanation goes here

f= 0.65 - (0.75/(1+x^2))- 0.65*x*atan(1/x); end

(16)

clear;clc;format long;warning('off');

% Nhap mien xac dinh cua bien x: a<=x<=b

a=0; b=0.5;

% Chon Algorithm (Chon mot so duoi day) %Alg='active-set';

%Alg='trust-region-reflective';

Alg='interior-point';

%Alg='levenberg-marquardt'; %Alg='trust-region-dogleg'; %Alg='lm-line-search';

% Chon Stopping Criteria

GTN=1e-4;GTL=1e4;

% Neu Stopping Criteria la sai so cua tham bien

StCr='TolX';

% Neu Stopping Criteria la so luong Iterations %StCr='MaxIter';

% Neu Stopping Criteria la so luong tinh cac ham so %StCr='MaxFunEvals';

if strcmp(StCr,'MaxIter')==1 || strcmp(StCr,'MaxFunEvals')==1 GT=GTL;

elseif strcmp(StCr,'TolX')==1 GT=GTN;

end

options =

(17)

0 -0.32 -0.31 -0.3 -0.29 -0.28 -0.27 -0.26 -0.25 -0.24 -0.23 Iteration F u n c ti o n v a lu e

(18)

CỰC TIỂU HĨA HÀM NHIỀU BIẾN SỐ KHƠNG RÀNG BUỘC

  min;  1, 2, , n

f xxx x x

[x,fval,exitflag,output, grad,hessian] = fminunc(@Objfun,x0,options)

x – xuất véctơ tham biến x làm cho hàm mục tiêu đạt cực tiểu

fval – xuất giá trị hàm mục tiêu điểm cực tiểu x

exitflag – xuất giá trị để xác định điều kiện dừng tính tốn, cụ thể là: • exitflag>0: có nghĩa hàm hội tụ điểm lời giải x

• exitflag=0: có nghĩa số lượng tính hàm mục tiêu số lượng vòng lặp đạt ngưỡng cho phép Stopping Criteria = 'MaxIter' 'MaxFunEvals'

• exitflag<0: Hàm khơng hội tụ điểm lời giải

output – xuất thông tin số vịng lặp tính tốn, số lần tính hàm số, thuật tốn bước tính, v.v…

grad – xuất véctơ Gradient hàm số điểm lời giải

hessian – xuất ma trận Hessian hàm số điểm lời giải

x0 – véc tơ tham biến khởi đầu

(19)

Tìm cực tiểu hàm số:    2

1

50 20

, min

f f x x x x

x x

    

x

1) Bước 1: Tạo thư mục cho toán, ví dụ MultiUncon1

2) Bước 2: Tạo M-file hàm mục tiêu, ví dụ Objfun.m

function f = Objfun( x )

%OBJFUN Summary of this function goes here

% Detailed explanation goes here

f = x(1)*x(2) + 50/x(1) + 20/x(2);

end

(20)

% Nhap vecto tham bien khoi dau:

x0 = [1,1];

% Chon Algorithm (Chon mot so duoi day) %Alg='active-set';

%Alg='trust-region-reflective'; %Alg='interior-point';

%Alg='levenberg-marquardt';

Alg='trust-region-dogleg';

%Alg='lm-line-search'; % Chon Stopping Criteria

GTN=1e-4;GTL=1e4;

% Neu Stopping Criteria la sai so cua tham bien %StCr='TolX';

% Neu Stopping Criteria la sai so cua ham so

StCr='TolFun';

% Neu Stopping Criteria la so luong Iterations %StCr='MaxIter';

% Neu Stopping Criteria la so luong tinh cac ham so %StCr='MaxFunEvals';

if strcmp(StCr,'MaxIter')==1 || strcmp(StCr,'MaxFunEvals')==1 GT=GTL;

elseif strcmp(StCr,'TolX')==1 || strcmp(StCr,'TolFun')==1 GT=GTN;

end

options =

Ngày đăng: 09/03/2021, 03:55

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

Tài liệu liên quan