1. Trang chủ
  2. » LUYỆN THI QUỐC GIA PEN -C

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 69 2

Đ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

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 1,27 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

• 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]

Trang 1

Trường Đại học Công nghiệp thành phố Hồ Chí Minh

Khoa Công nghệ Cơ khí

CHƯƠNG 11:

ỨNG DỤNG MATLAB GIẢI CÁC BÀI

TOÁN TỐI ƯU HÓA

Thời lượng: 3 tiết

Trang 2

Thống nhất phiên bản MATLAB

Trường câu lệnh

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

Trường lịch

sử các câu lệnh đã dùng

Chọn thư

mục làm

việc

Trang 3

Làm quen với MATLAB

Dấu >> Ký tự nhắc mặc định trong MATLAB, đầu câu lệnh >>

Dấu ; Dấu chấm phẩy ở cuối dòng sẽ tránh việc in kết quả ra trường câu lệnh (khi ta không cần in kết quả ra 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 tiếp

theo

>> a=…

2

help

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

>>help linprog

Chữ cái viết thường và viết hoa được phân biệt khác nhau trong MATLAB

>> a=2

>>A=2

>>A+a MATLAB coi tất cả các biến đều ở dạng mảng (arrays)

Tên biến

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

>>A_a_bc_9=12

Các phép

toán thông

dụng

+

-

* /

^

>>2+3*6^2/4-7

Tránh trùng

với các tên

biến tích hợp

của hệ thống,

như các hằng

số, tên hàm

pi sin cos v.v

>>pi

Trang 4

Ma trận trong MATLAB

Véctơ cột

2 ]

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

Ma trận [mxn]

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

và xuống dòng

A=[1 2 3

4 5 6

7 8 9]

8 9]

Ma trận 1 đơn vị ở

đường chéo

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

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

eye(4) eye(3,4)

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

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

100:-7:50 50:100

Trang 5

Ma trận trong MATLAB (tiếp)

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

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

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

A(2,3) A(2:3,1:3)

Trang 6

Kịch bản (Scripts)

Là một dạng M-file đơn giản nhất, không có biến vào và biến ra Nó chỉ gồm một chuỗi các trình tự câu lệnh

Trang 7

Hàm số (Function)

% -

% Ở dưới ghi function body

end

Trang 8

function [ p ] = func1( x )

%func1 of this function goes here

%Detailed explanation goes here

p=x^3-2*x+cos(x);

end

Trang 9

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

% Ham PTB2 dung de giai phuong trinh bac 2 co dang a*x^2+b*x+c=0

% Tham bien dau vao la 3 he so a, b, c trong do a !=0

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

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

x2 = (-b-sqrt(Delta))/(2*a);

[x1 x2]

end

[x1, x2] = feval('PTB2',1,2,-5)

Trang 10

Giới thiệu về Optimization Toolbox

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

dụng

1 Cực tiểu hóa hàm 1 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 các ràng buộc

tuyến tính và phi tuyến

(Constrained Minimization)

fmincon

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

Trang 11

Các thuật toán của các công cụ

Trang 12

Các thuật toán của các công cụ

Trang 13

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

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

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

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

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

• 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 phép nếu Stopping Criteria = 'MaxIter' hoặc 'MaxFunEvals'

• exitflag=-1: có nghĩa là thuật toán bị dừng vì hàm đầu ra

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

output – xuất ra các thông tin về số vòng lặp tính toán, số lần tính hàm số, các thuật toán

tại các bước tính và thông báo cuối cùng

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

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

options – các thuộc tính cần thiết cho việc giải bài toán bằng hàm fminbnd, được xác định trước dòng cú pháp

Trang 14

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

1

 

     

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

Vào trong thư mục

Trang 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

Sửa lại code của hàm

Trang 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 trong 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 =

optimset( 'Algorithm' ,Alg, 'Display' , 'iter' ,StCr,GT, 'PlotFcns' ,@optimplotfval); [x,fval,exitflag,output]=fminbnd(@Objfun,a,b,options)

Trang 17

0 1 2 3 4 5 6 7 8 9 -0.32

-0.31 -0.3 -0.29 -0.28 -0.27 -0.26 -0.25 -0.24 -0.23

Iteration

Current Function Value: -0.31002

Trang 18

CỰC TIỂU HÓA HÀM NHIỀU BIẾN SỐ KHÔNG

RÀNG BUỘC

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

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

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

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

• exitflag>0: có nghĩa là hàm đã hội tụ tại điểm lời giải x

• 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 phép nếu Stopping Criteria = 'MaxIter' hoặc 'MaxFunEvals'

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

output – xuất ra các thông tin về số vòng lặp tính toán, số lần tính hàm số, các thuật toán tại các bước tính, v.v…

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

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

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

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

Trang 19

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

1 2

50 20

    

x

1) Bước 1: Tạo 1 thư mục cho bài 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

3) Bước 3: Tạo M-file Script lời giải, ví dụ Solvefminunc.m

Trang 20

% Nhap vecto tham bien khoi dau:

x0 = [1,1];

% Chon Algorithm (Chon mot trong 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 =

optimset( 'Algorithm' ,Alg, 'Display' , 'iter' ,StCr,GT, 'PlotFcns' ,@optimplotfval); [x,fval,exitflag,output, grad,hessian] = fminunc(@Objfun,x0,options)

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm