intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Minh Vũ | Ngày: | Loại File: PDF | Số trang:51

46
lượt xem
7
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: 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

  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
  2. 2 Thống nhất phiên bản MATLAB Các biến tính toán Chọn thư xong mục làm việc Trường lịch sử các câu lệnh đã dùng Trường câu lệnh
  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 chấm phẩy ở cuối dòng sẽ tránh việc in kết quả ra trường >> a=2; Dấu ; câu lệnh (khi ta không cần in kết quả ra cho cửa sổ ngắn gọn) >> a=… Dấu ba chấm ở cuối dòng cho phép tiếp tục code ở dòng tiếp Dấu … 2 theo help Hiển thị các thông tin chi tiết về câu lệnh mà người dùng cần >>help linprog tên_câu_lệnh sử dụng >> a=2 Chữ cái viết thường và viết hoa được phân biệt khác nhau trong MATLAB >>A=2 >>A+a MATLAB coi tất cả các biến đều ở dạng mảng (arrays) Trong MATLAB tên biến được bắt đầu từ chữ cái và có chiều >>A_a_bc_9=12 Tên biến 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 + >>2+3*6^2/4-7 Các phép - toán thông * dụng / ^ Tránh trùng >>pi với các tên pi biến tích hợp sin của hệ thống, cos như các hằng v.v.. số, tên hàm
  4. 4 Ma trận trong MATLAB Đối tượng Cách thực hiện Ví dụ Véctơ hàng Ngoặc vuông, Dấu cách A=[1 2 3 4] Cách 1: Ngoặc vuông và xuống dòng B=[5 2 Véctơ cột ] 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]' Cách 1: áp dụng véc tơ hàng và cột: dấu cách A=[1 2 3 và xuống dòng 456 Ma trận [mxn] 7 8 9] Cách 2: Dấu cách và dấu chấm phẩy A=[1 2 3;4 5 6; 7 8 9] Ma trận 1 đơn vị ở - eye(m,n) – ma trận mxn eye(4) đường chéo - eye(n) – ma trận vuông kích thước n eye(3,4) Ma trận toàn 1 ones(m,n) hoặc ones(n) ones(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 100:-7:50 M:N – khi icr=1 theo mặc định 50:100
  5. 5 Ma trận trong MATLAB (tiếp) Đối tượng Cách thực hiện Ví dụ Phần tử trong ma trận Dấu ngoặc tròn: A(2,3) - A(i,j) chọn phần tử hàng i, cột j của ma A(2:3,1:3) 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
  6. 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.
  7. 7 Hàm số (Function) function [O_1,O_2,…,O_m] = function_name (I_1,I_2,…,I_n) %----------------------------------------------------------------------- % Ở dưới ghi function body end
  8. 8 function [ p ] = func1( x ) %func1 of this function goes here %Detailed explanation goes here p=x^3-2*x+cos(x); end
  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 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)
  10. 10 Giới thiệu về Optimization Toolbox STT Loại bài toán Hàm sử dụng Cực tiểu hóa hàm 1 biến số fminbnd 1 (Scalar Minimization) Cực tiểu hóa hàm nhiều biến số không có ràng buộc fminunc 2 (Unconstrained Minimization) fminsearch Quy hoạch tuyến tính linprog 3 (Linear Programming) Quy hoạch bậc hai quadprog 4 (Quadratic Programming) Cực tiểu hóa hàm phi tuyến với các ràng buộc 5 tuyến tính và phi tuyến fmincon (Constrained Minimization) Cực tiểu hóa nửa vô hạn 6 fseminf (Semi-Infinite Minimization)
  11. 11 Các thuật toán của các công cụ
  12. 12 Các thuật toán của các công cụ
  13. 13 CỰC TIỂU HÓA HÀM MỘT BIẾN SỐ f  x   min; a  x  b [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
  14. 14 CỰC TIỂU HÓA HÀM MỘT BIẾN SỐ 0.75 1 Tìm cực tiểu hàm số f  x   0.65   0.65 x arctan   ; x  0;0.5 1 x 2  x 1) Bước 1: Tạo 1 thư mục cho bài toán, ví dụ fminbnd1 Vào trong thư mục
  15. 2) Bước 2: Tạo M-file hàm mục tiêu, ví dụ Objfun.m 15 Sửa lại code của hà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
  16. 3) Bước 3: Tạo M-file Script lời giải, ví dụ Solve.m 16 clear;clc;format long;warning('off'); % Nhap mien xac dinh cua bien x: a
  17. 17 Current Function Value: -0.31002 -0.23 -0.24 -0.25 -0.26 Function value -0.27 -0.28 -0.29 -0.3 -0.31 -0.32 0 1 2 3 4 5 6 7 8 9 Iteration
  18. 18 CỰC TIỂU HÓA HÀM NHIỀU BIẾN SỐ KHÔNG RÀNG BUỘC f  x   min; x   x1 , x2 , , xn  [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
  19. 19 50 20 Tìm cực tiểu hàm số: f  x   f  x1 , x2   x1 x2    min x1 x2 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
  20. clear;clc;format long;warning('off'); 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)
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2