Professional Documents
Culture Documents
Cach Giai Bai Toan Toi Uu Bang Matlab
Cach Giai Bai Toan Toi Uu Bang Matlab
Cach Giai Bai Toan Toi Uu Bang Matlab
HCMC, November-2012
11 Introduction
14 IP (Interior – Point)
6 Phụ Lục
Bài toán giải tích
min f ( x) = e x1 (4 x12 + 2 x 22 + 4 x1 x2 + 2 x2 + 1)
x
⎧ g1 = x1 x2 − x1 − x2 ≤ 1.5
s.t. ⎨
⎩ g 2 = − x1 x2 ≤ 10
Bài toán số
1 T ⎧| ε |≤ ε max
min ε Aε s.t ⎨
θ 2 ⎩0 ≤ θ ≤ 180
Ta đã lập trình và giải được cho bài toán giải tích bằng hàm
Matlab có sẵn
Để giải bài toán tối ưu bằng SLP ta cần thực hiện hai bước sau
1 Tạo bài toán con xấp xỉ tuyến tính bằng khai triển Taylor bậc nhất
của bài toán ban đầu
2 Giải bài toán này bằng phương pháp đơn hình hoặc phương pháp
điểm trong với hàm Matlab “linprog.m”
Ví dụ min f ( x) = e x1 (4 x12 + 2 x 22 + 4 x1 x2 + 2 x2 + 1)
x
⎧ g1 = x1 x2 − x1 − x2 ≤ 1.5
s.t. ⎨
⎩ g 2 = − x1 x2 ≤ 10
1 Tạo bài toán con xấp
ấ xỉ
%----------------------------------------------------
% tao bai toan xap xi
function f = f(x)
( )
% min f_(x)
f (x) = f0 + df*(x-x
df*(x x0) = df*(x-x
df*(x x0)
f = exp(x(1))*(4*x(1)^2 + 2*x(2)^2
% s.t g_(x) = g0 + dg*(x-x0) <= 0
+ 4*x(1)*x(2) + 2*x(2) + 1);
%----------------------------------------------------
function g = g_fun1(x)
g = x(1)*x(2) - x(1) - x(2) + 1.5;
1 5;
df = [subs(df(1),x,x0),subs(df(2),x,x0)];
function g = g_fun2(x)
g01 = g_fun1(x0);
g = -x(1)*x(2)- 10;
g02 = g_fun2(x0);
dg 1 = [subs(dg1(1),x,x0),subs(dg1(2),x,x0)];
dg_1 [subs(dg1(1) x x0) subs(dg1(2) x x0)];
dg_2 = [subs(dg2(1),x,x0),subs(dg2(2),x,x0)];
Ví dụ min f ( x) = e x1 (4 x12 + 2 x 22 + 4 x1 x2 + 2 x2 + 1)
x
⎧ g1 = x1 x2 − x1 − x2 ≤ 1.5
15
s.t. ⎨
⎩ g 2 = − x1 x2 ≤ 10
2 Giải bài toán con xấp xỉ bằng hàm “linprog
linprog.m
m”
%---------------------------------------------------------------
% giai bai toan xap xi bang ham cua Matlab dang
% min Cx Ù f0 + df*(x –xx0)= df*x
% s.t Ax <= b Ù dg*x <= - g0 + dg*x0
%---------------------------------------------------------------
C = [subs(df(1),x,x0),subs(df(2),x,x0)]; % Vector hệ số hàm mục tiêu
A = [dg_1; dg_2]; % ma trận hệ số 2x2
b = -[g01 - dg_1*x0'; g02 - dg_2*x0']; % vector b
options = optimset('LargeScale', 'off', 'Simplex', 'on')
XX = linprog(C,A,b,[],[],LB,UB,[],options);
linprog(C A b [] [] LB UB [] options); % Mặc định là Interior point
Ví dụ min f ( x) = e x1 (4 x12 + 2 x 22 + 4 x1 x2 + 2 x2 + 1)
x
⎧ g1 = x1 x2 − x1 − x2 ≤ 1.5
15
s.t. ⎨
⎩ g 2 = − x1 x2 ≤ 10
Nhiệm vụ
1. Lập trình và giải bài toán giải tích trên nhưng không dùng hàm có
sẵn của Matlab (linprog.m) mà dùng code Simplex (bằng Matlab).
2. Lập trình và giải một bài toán số có ràng buộc bằng code Simplex.
1 T ⎧| ε |≤ ε max
min ε Aε s.t ⎨
θ 2 ⎩0 ≤ θ ≤ 180
Ta đã khai thác và sử dụng thành thạo hàm trong matlab và
giải cho các loại bài toán kể cả bài toán số và bài toán giải tích
Để giải bài toán tối ưu bằng SQP bằng hàm của Matlab ta cần thực
hiện ba bước sau
1 Tạo hàm mục tiêu
2 Tạo hàm ràng buộc
3 G i hàm
Gọi hà Matlab
M l b để giải
iải “fmincon.m”
“f i ”
Ví dụ min f ( x) = e x1 (4 x12 + 2 x 22 + 4 x1 x2 + 2 x2 + 1)
x
⎧ g1 = x1 x2 − x1 − x2 ≤ 1.5
15
s.t. ⎨
⎩ g 2 = − x1 x2 ≤ 10
⎧ g1 = x1 x2 − x1 − x2 ≤ 1.5
s.t. ⎨
⎩ g 2 = − x1 x2 ≤ 10
3 G i hàm
Gọi hà Matlab
M l b để giải
iải
ObjectiveFunction = @f_fun;
LB = []; % Lower bound
UB = []; % Upper bound
ConstraintFunction = @g_fun;
x0 = [-1,10];
options = optimset(
optimset('Algorithm'
Algorithm ,‘sqp');
sqp );
[x,fval] = ...
fmincon(ObjectiveFunction,x0,[],[],[],[],LB,UB,ConstraintFunction,options)
Ví dụ min f ( x) = e x1 (4 x12 + 2 x 22 + 4 x1 x2 + 2 x2 + 1)
x
⎧ g1 = x1 x2 − x1 − x2 ≤ 1.5
15
s.t. ⎨
⎩ g 2 = − x1 x2 ≤ 10
Nhiệm vụ
1. Lập trình và giải bài toán giải tích trên nhưng không dùng hàm có
sẵn của Matlab (fmincon.m) mà dùng code SQP (bằng Matlab).
2. Lập trình và giải một bài toán số
ố có ràng buộc bằng
ằ code SQP.
1 T ⎧| ε |≤ ε max
min ε Aε s.t ⎨
θ 2 ⎩0 ≤ θ ≤ 180
Ta đã khai thác và sử dụng thành thục hàm trong matlab và giải
cho các loại bài toán kể cả bài toán số và bài toán giải tích
Để giải bài toán tối ưu bằng IP sử dụng hàm của Matlab ta cần thực
hiện ba bước sau giống như SQP
1 Tạo hàm mục tiêu
2 Tạo hàm ràng buộc
3 G i hàm
Gọi hà Matlab
M l b để giải
iải “fmincon.m”
“f i ”
Ví dụ min f ( x) = e x1 (4 x12 + 2 x 22 + 4 x1 x2 + 2 x2 + 1)
x
⎧ g1 = x1 x2 − x1 − x2 ≤ 1.5
15
s.t. ⎨
⎩ g 2 = − x1 x2 ≤ 10
Bước 1 và bước 2 tươngg tự như SQP
Q
3 Gọi hàm Matlab để giải
ObjectiveFunction = @f_fun;
LB = []; % Lower bound Điểm khác so với SQP
UB = []; % Upper bound
ConstraintFunction = @g_fun;
x0 = [[-1,10];
1,10];
options = optimset('Algorithm','interior-point');
[x,fval] = ...
( j , ,[],[],[],[], , , , p )
fmincon(ObjectiveFunction,x0,[],[],[],[],LB,UB,ConstraintFunction,options)
Ví dụ min f ( x) = e x1 (4 x12 + 2 x 22 + 4 x1 x2 + 2 x2 + 1)
x
⎧ g1 = x1 x2 − x1 − x2 ≤ 1.5
s.t. ⎨
⎩ g 2 = − x1 x2 ≤ 10
Nhiệm vụ
1. Lập trình và giải bài toán giải tích trên nhưng không dùng hàm có
sẵn của Matlab (fmincon.m) mà dùng code IP (bằng Matlab).
2. Lập trình và giải một bài toán số có ràng buộc bằng code IP.
1 T ⎧| ε |≤ ε max
min ε Aε s.t ⎨
θ 2 ⎩0 ≤ θ ≤ 180
Ta đã có code giải cho bài toán giải tích của tác giả Krister Svanberg
(Phương pháp này không có trong thư viện Matlab)
Để giải bài toán tối ưu bằng MMA ta cần thực hiện hai bước sau
1 Tạo bài toán con xấp xỉ dựa trên khai triển Taylor bậc nhất bài toán
ban đầu.
2 Giải bài toán này bằng phương đối ngẫu Lagrange với hàm
“subsolv.m”
Ví dụ min f ( x) = e x1 (4 x12 + 2 x 22 + 4 x1 x2 + 2 x2 + 1)
x
⎧ g1 = x1 x2 − x1 − x2 ≤ 1.5
15
s.t. ⎨
⎩ g 2 = − x1 x2 ≤ 10
1 T
Tạo bài ttoán
á con xấp
ấ xỉỉ
Tính toán giá trị hàm mục tiêu, ràng buộc và đạo hàm của nó tại điểm x0
function
f i [f0,df,g0,dg]
[f0 df 0 d ] = calculate(x0)
l l ( 0)
syms x1 x2
x = [x1 x2];
f0 = f_fun(x0);
f fun(x0);
df = [subs(diff(f_fun(x),x1),x,x0); subs(diff(f_fun(x),x2),x,x0)];
g0 = [g_fun1(x0);g_fun2(x0)];
dg = [subs(diff(g_fun1(x),x1),x,x0), subs(diff(g_fun1(x),x2),x,x0)
subs(diff(g_fun2(x),x1),x,x0),
b (diff( f 2( ) 1) 0) subs(diff(g_fun2(x),x2),x,x0)];
b (diff( f 2( ) 2) 0)]
Ví dụ min f ( x) = e x1 (4 x12 + 2 x 22 + 4 x1 x2 + 2 x2 + 1)
x
⎧ g1 = x1 x2 − x1 − x2 ≤ 1.5
15
s.t. ⎨
⎩ g 2 = − x1 x2 ≤ 10
1 T
Tạo bài ttoán
á con xấp
ấ xỉỉ
1. Lập trình và giải một bài toán số có ràng buộc bằng code MMA.
1 T ⎧| ε |≤ ε max
min ε Aε s.t ⎨
θ 2 ⎩0 ≤ θ ≤ 180
Cách thiết lập hàm mục tiêu và ràng buộc cho bài toán số
function [y, ]
[y,w0]=simplep _fitness(x)( )
global Dim
Ex=180.E3; Ey=8.E3;nuxy=0.3;Es=6.E3; nuyx=nuxy*Ey/Ex; m=1/(1-
nuxy*nuyx);Qxx=m*Ex;Qxy=m*Ex*nuyx;Qyy=m*Ey;Qs=Es;
Q(1 1) Q ;Q(1 2) Q ;Q(1 3) 0;Q(2 1) Q ;Q(2 2) Q ;Q(2 3) 0;Q(3 1) 0;
Q(1,1)=Qxx;Q(1,2)=Qxy;Q(1,3)=0;Q(2,1)=Qxy;Q(2,2)=Qyy;Q(2,3)=0;Q(3,1)=0;
Q(3,2)=0;Q(3,3)=Qs;Nx=3750.;Ny=2500.;Nxy=5000.; N(1,1)=Nx;
N(2,1)=Ny;N(3,1)=Nxy; h=1;
%% ---------1 bien thiet ke------------
if Dim ==1; th = [90 0 x x 0 90]; end
%% ---------2 bien thiet ke------------
if Dim ==2; th = [x(1) x(2) x(2) x(1)]; end
%% ---------33 bien thiet ke------------
ke
if Dim ==3; th = [x(1) x(2) x(3) x(3) x(2) x(1)]; end
%% ------------------------------------
[A]=app01(Q,th,h); deps=inv(A)*N; W = norm(deps);
deform=[deps(1) deps(2) deps(3)]'; Hàm mục tiêu
y=1/2*deform'*A*deform;
w0 = W – W0; Hàm ràng buộc