1. Trang chủ
  2. » Giáo án - Bài giảng

Bài giảng Tối ưu hóa trong thiết kế cơ khí: Chương 11 - ĐH Công nghiệp TP.HCM

51 79 0

Đ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 51
Dung lượng 2,15 MB

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

Nội dung

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 cung cấp cho người học các kiến thức: Thống nhất phiên bản Matlab, giới thiệu về Optimization Toolbox, cực tiểu hóa hàm một biến số,... Mời các bạn cùng tham khảo.

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

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)

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

>>pi

Trang 4

Ma trận trong MATLAB

Véctơ cột

Cách 1: Ngoặc vuông và xuống dòng B=[5

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

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

Ma trận toàn 0 zeros(m,b) hoặc zeros(n) zeros(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

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

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

Trang 10

Giới thiệu về Optimization Toolbox

3 Quy hoạch tuyến tính

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

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

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Ố

Trang 15

15

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

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

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

Trang 20

% Nhap vecto tham bien khoi dau:

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

Trang 21

21

Trang 22

0 2 4 6 8 10 12 14 30

Trang 23

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

RÀNG BUỘC

[x,fval,exitflag,output] = fminsearch(@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…

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

Cú pháp này sử dung pp Nelder-Mead và chỉ tìm được cực tiểu local

Trang 24

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

% Nhap vecto tham bien khoi dau:

Trang 27

m n

n n

Trang 28

[x,fval,exitflag,output,lambda] = linprog(c,A,a,B,b,lb,ub,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=1: 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'

• exitflag=-2: Không tìm được một điểm hợp lệ nào

• exitflag=-3: Miền ràng buộc là vô hạn

• exitflag=-4: Giá trị NaN (không phải là số) xuất hiện trong quá trình tính toán

• exitflag=-5: Cả bài toán gốc và đối ngẫu của nó đều vô nghiệm

• exitflag=-7: Hướng tìm kiếm càng lúc càng nhỏ, không thể tìm được các điểm tốt hơn

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…

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

c,A,a,B,b,lb,ub – lần lượt các véc tơ, ma trận dữ liệu bài toán

Trang 29

Đổi lại yêu cầu của mục tiêu: f   x   2 x1  3 x2  min

Nhận diện được các véc tơ và ma trận dữ liệu đề bài:

1) Bước 1: Phân tích bài toán

2) Bước 2: Tạo M-file script cho bài toán, ví dụ LP1.m

Trang 30

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

options = optimset( 'LargeScale' , 'off' , 'Simplex' ,

'on' , 'Display' , 'iter' )

[x,fval,exitflag,output,lambda] =

linprog(c,A,a,B,b,lb,ub,x0,options)

Trang 31

4 5 6

Trang 32

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

options = optimset( 'LargeScale' , 'off' , 'Simplex' ,

'on' , 'Display' , 'iter' )

[x,fval,exitflag,output,lambda] =

linprog(c,A,a,B,b,lb,ub,x0,options)

Trang 33

m n

n n

Trang 34

[x,fval,exitflag,output,lambda] = quadprog(H,c,A,a,B,b,lb,ub,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=1: có nghĩa là hàm đã hội tụ tại điểm lời giải x

• exitflag=3: có nghĩa là sự thay đổi giá trị hàm mục tiêu đã nhỏ hơn sai số cho phép

• exitflag=4: có nghĩa là cực tiểu địa phương đã được tìm thấy

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

• exitflag=-2: Bài toán không giải được

• exitflag=-3: Miền ràng buộc là vô hạn

• exitflag=-4: Hướng tìm kiếm không phải là hướng tốt, không thể tìm được các điểm tốt hơn

• exitflag=-7: Giá trị của hướng tìm kiếm quá nhỏ, không có tiến triển

thuật toán tại các bước tính, v.v…

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

H,c,A,a,B,b,lb,ub – lần lượt các véc tơ, ma trận dữ liệu bài toán

Trang 35

35

2

1 4 3

Trang 36

Giải bài toán quy hoạch bậc 2 sau:

1) Bước 1: Phân tích bài toán

 

1 2

Trang 38

Giải bài toán quy hoạch bậc 2 sau:

1) Bước 1: Phân tích bài toán

 

1 2 3

Trang 40

0; 1

j k

m n

p n

T n

m n

n n

Trang 41

41

[x,fval,exitflag,output,lambda,grad,hessian]=

fmincon(@Objective,x0,A,a,B,b,lb,ub,@NonLinCon,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

a) Đối với tất cả các thuật toán:

• exitflag=1: Thước đo tối ưu bậc nhất (First-order optimality measure) nhỏ hơn giá trị thông số TolFun và vi phạm ràng buộc lớn nhất (maximum constraint

violation) nhỏ hơn giá trị thông số TolCon

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

• exitflag=-1: Hàm đầu ra kết thúc thuật toán

• exitflag=-2: Không tìm được lời giải hợp lệ nào

b) Đối với 2 thuật toán là ‘trust-region-reflective’ và ‘interior-point’:

• exitflag=2: Sự biến thiên của x nhỏ hơn giá trị thông số TolX và vi phạm ràng

buộc lớn nhất nhỏ hơn giá trị thông số TolCon

c) Đối với riêng thuật toán ‘trust-region-reflective’:

• exitflag=3: có nghĩa là sự thay đổi giá trị hàm mục tiêu đã nhỏ hơn sai số cho phép TolFun và vi phạm ràng buộc lớn nhất nhỏ hơn giá trị thông số TolCon

Trang 42

• exitflag=4: giá trị của hướng tìm kiếm (search direction) đã nhỏ hơn 2 lần giá trị cho phép TolX và vi phạm ràng buộc lớn nhất nhỏ hơn giá trị thông số TolCon

• exitflag=5: giá trị của hướng tìm kiếm (search direction) đã nhỏ hơn 2 lần giá trị cho phép TolFun và vi phạm ràng buộc lớn nhất nhỏ hơn giá trị thông số TolCon e) Đối với riêng thuật toán ‘interior-point’:

• exitflag=-3: Điểm x đang xét đi xuống dưới giá trị ObjectiveLimit và vi phạm

ràng buộc lớn nhất nhỏ hơn giá trị thông số TolCon

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

thuật toán tại các bước tính, v.v…

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

A,a,B,b,lb,ub – lần lượt các véc tơ, ma trận dữ liệu bài toán

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

NonLinCon - tên của M-file xác định hàm ràng buộc phi tuyến đẳng thức và bất

đẳng thức

Trang 44

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

function f = Objective( x )

%OBJECTIVE Summary of this function goes here

% Detailed explanation goes here

%NONLINCON Summary of this function goes here

% Detailed explanation goes here

% Cac rang buoc bat dang thuc

Trang 45

x0 = [lb(:)+(ub(:)-lb(:))*rand(1,1)]' % Diem khoi dau

% Kiem tra gia tri cua ham muc tieu cung nhu cac rang buoc phi tuyen tai diem khoi dau

fprintf ( 'Gia tri ham muc tieu va rang buoc phi tuyen tai diem khoi dau\n' );

fprintf( 'Gia tri rang buoc phi tuyen tai diem cuc tri\n' );

[g, h] = NonLinCon(x)

Trang 46

46 CỰC TIỂU HÓA NỬA VÔ HẠN (Semi-Infinite Minimization)

m n

n n

Trang 47

47

[x,fval,exitflag,output,lambda]=fseminf(@Objective,x0,q,

myinfcon,A,a,B,b,lb,ub,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=1: Hàm hội tụ tại điểm lời giải x

• exitflag=4: giá trị của hướng tìm kiếm (search direction) đã nhỏ hơn giá trị cho phép và vi phạm ràng buộc lớn nhất nhỏ hơn giá trị thông số TolCon

• exitflag=5: giá trị của đạo hàm định hướng (directional derivative) đã nhỏ giá trị cho phép và vi phạm ràng buộc lớn nhất nhỏ hơn giá trị thông số TolCon

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

• exitflag=-1: Hàm đầu ra kết thúc thuật toán

• exitflag=-2: Không tìm được lời giải hợp lệ nào

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

A,a,B,b,lb,ub – lần lượt các véc tơ, ma trận dữ liệu bài toán

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

myinfcon - tên của M-file xác định hàm ràng buộc phi tuyến đẳng thức, bất đẳng thức và ràng buộc nửa vô hạn

Trang 48

w1 = w1_begin:S(1,1):w1_end; % Compute sample set

w2 = w2_begin:S(2,1):w2_end; % Compute sample set

wq = wq_begin:S(q,1):wq_end; % Compute sample set

% Semi-infinite constraints

K1 = % 1st semi-infinite constraint at x and w

K2 = % 2nd semi-infinite constraint at x and w

ham_gr]; % Compute nonlinear inequalities at x

% Cac rang buoc dang thuc phi tuyen

h = [ham_h1;

ham_h2;

ham_hs]; % Compute nonlinear equalities at x

% Plot a graph of semi-infinite constraints

% plot(w1,K1,'-',w2,K2,':'),title('Semi-infinite constraints')

% drawnow

Trang 49

49

Giải bài toán tối ưu hóa nửa vô hạn sau:

min

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

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

function f = Objective(x,s)

%OBJECTIVE Summary of this function goes here

% Detailed explanation goes here

f=sum((x-0.5).^2);

%f=(x(1)-0.5)^2 + (x(2)-0.5)^2 + (x(3)-0.5)^2;

end

3) Bước 3: Tạo M-file hàm các hàm ràng buộc phi tuyến đẳng thức,

bất đẳng thức và nửa vô hạn, ví dụ myinfcon.m

Trang 50

% Initial sampling interval

w1 = 0:s(1,1):100; % Compute sample set

w2 = 0:s(2,1):100; % Compute sample set

% Semi-infinite constraints

K1 = sin(w1*x(1)).*cos(w1*x(2)) - 1/1000*(w1-50).^2 - sin(w1*x(3))-x(3)-1; % 1st semi-infinite constraint at x and w

K2 = sin(w2*x(2)).*cos(w2*x(1)) - 1/1000*(w2-50).^2 - sin(w2*x(3))-x(3)-1; % 2nd semi-infinite constraint at x and w

% Cac rang buoc bat dang thuc phi tuyen

g = []; %Trong bai toan nay khong co 1 rang buoc phi tuyen bat dang thuc nao

% Cac rang buoc dang thuc phi tuyen

h = []; %Trong bai toan nay khong co 1 rang buoc phi tuyen dang thuc nao

% Plot a graph of semi-infinite constraints

% plot(w1,K1,'-',w2,K2,':'),title('Semi-infinite constraints')

% drawnow

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

Trang 51

51

clear;clc;format long ;warning off ;

A=[]; %Trong bai tap nay khong co rang buoc tuyen tinh bat dang thuc

a=[]'; %Trong bai tap nay khong co rang buoc tuyen tinh bat dang thuc

B=[]; %Trong bai tap nay khong co rang buoc tuyen tinh dang thuc

b=[]'; %Trong bai tap nay khong co rang buoc tuyen tinh dang thuc

lb=[]'; %Trong bai tap nay khong co rang buoc phia truoc cua tham bien

ub=[]'; %Trong bai tap nay khong co rang buoc phia sau cua tham bien

x0 = [0.5;0.2;0.3]; % Diem khoi dau

% Kiem tra gia tri cua ham muc tieu cung nhu cac rang buoc phi tuyen tai diem khoi dau

fprintf ( 'Gia tri ham muc tieu va rang buoc phi tuyen tai diem khoi dau\n' );

Ngày đăng: 16/05/2020, 01:16

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

w