Download Optimization

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Functional decomposition wikipedia , lookup

Addition wikipedia , lookup

Location arithmetic wikipedia , lookup

Law of large numbers wikipedia , lookup

Mathematics of radio engineering wikipedia , lookup

History of the function concept wikipedia , lookup

Principia Mathematica wikipedia , lookup

Matrix calculus wikipedia , lookup

Elementary mathematics wikipedia , lookup

Transcript
Optimization
MATLAB Exercises
Assoc. Prof. Dr. Pelin GÜNDEŞ
Introduction to MATLAB
Introduction to MATLAB
Introduction to MATLAB
• %
All text after the % sign is a comment. MATLAB
ignores anything to the right of the % sign.
• ;
A semicolon at the end of a line prevents MATLAB
from echoing the information you enter on the screen
• …
A succession of three periods at the end of the line
informs MATLAB that code will continue to the next line.
You can not split a variable name across two lines. You
can not continue a comment on another line.
Introduction to MATLAB
• ^c
You can stop MATLAB execution and get
back the command prompt by typing ^c (Ctrl-C) – by
holding down ‘Ctrl’ and ‘c’ together.
• help command_name
• helpwin
Opens a help text window that provides
more information on all of the MATLAB resources
installed on your system.
• helpdesk
Provides help using a browser window.
Introduction to MATLAB
• =
The assignment operator. The variable on the
left-hand side of the sign is assigned the value of the
right-hand side.
• ==
Within a if construct
• MATLAB is case sensitive. An a is different than A. All
built-in MATLAB commands are in lower case.
• MATLAB does not need a type definition or dimension
statement to introduce variables.
Introduction to MATLAB
• Variable names start with a letter and contain up to 31
characters (only letters, digits and underscore).
• MATLAB uses some built in variable names. Avoid using
built in variable names.
• Scientific notation is expressed with the letter e, for
example, 2.0e-03, 1.07e23, -1.732e+03.
• Imaginary numbers use either i or j as a suffix, for
example 1i, -3.14j,3e5i
Introduction to MATLAB
Arithmetic Operators
• + Addition
• - Subtraction
• * Multiplication
•
• / Division
• ^ Power
• ‘ Complex conjugate transpose (also array transpose)
Introduction to MATLAB
• In the case of arrays, each of these operators can be
used with a period prefixed to the operator, for example,
(.*) or (.^) or (./). This implies element-by-element
operation in MATLAB.
• , A comma will cause the information to echo
Exercise
>> a=2;b=3;c=4,d=5;e=6,
c=
4
e=
6
% why did only c and e echo on the screen?
Exercise
>> who % lists all the variables on the screen
Your variables are:
a b c d e
>> a
a=
2
% gives the value stored in a
Exercise
>> A=1.5 % Variable A
A=
1.5000
>> a, A % Case matters
a=
2
A=
1.5000
Exercise
>> one=a;two=b;three=c;
>> % assigning values to new variables
>> four=d;five=e;six=pi; % value of pi available
>> f=7;
>> A1=[a b c;d e f]; % A1 is a 2 by 3 matrix
% space seperates columns
% semi-colon seperates rows
>> A1(2,2) % accesses the matrix element on the second raw and
second column
ans =
6
Exercise
>> size(A1)
% gives you the size of the matrix (row, columns)
ans =
2
3
>> AA1=size(A1) % What should happen here? From previous
% statement the size of A1 contains two numbers arranged as a row
% matrix. This is assigned to AA1
AA1 =
2
3
Exercise
>> size(AA1) % AA1 is a one by two matrix
ans =
1
2
% this transposes the matrix A1
>> A1’
ans =
2
3
4
5
6
7
Exercise
>> B1=A1’ % the transpose of matrix A1is assigned to B1. B1 is a
% three by two matrix
B1 =
2
3
4
5
6
7
>> C1=A1*B1
C1 =
29 56
56 110
% Matrix multiplication
Exercise
>> C2=B1*A1
C2 =
29
36
43
36
45
54
43
54
65
>> C1*C2 % Read the error matrix
??? Error using ==> *
Inner matrix dimensions must agree.
Exercise
>> D1=[1 2]'
D1 =
1
2
% D1 is a column vector
>> C1,C3=[C1 D1]
C1 =
29 56
56 110
C3 =
29 56
56 110
1
2
% C1 is augmented by an extra column
Exercise
>> C2
C2 =
29
36
43
36
45
54
43
54
65
>> C3=[C3;C2(3,:)] % The column represents all the columns
C3 =
29 56 1
56 110 2
43 54 65
Exercise
>> C4=C2*C3
C4 =
4706
5886
7066
7906
9882
11858
2896
3636
4376
>> C5=C2.*C3 % The .* represents the product of each element of
% C2 with the corresponding element of C3
C5 =
841
2016
1849
2016
4950
2916
43
108
4225
Exercise
>> C6=inverse(C2)
??? Undefined function or variable 'inverse'.
% Apparently, inverse is not a command in MATLAB, if command
% name is known, it is easy to obtain help
>> lookfor inverse % this command will find all files where it comes
% across the word “inverse” in the initial comment lines. The
% command we need appears to be INV which says inverse of a
% matrix. The actual command is in lower case. To find out how to use
% it:
>> help inv
inv(C2) % inverse of C2
Exercise
>> for i=1:20
f(i)=i^2;
end
% The for loop is terminated with “end”
>> plot(sin(0.01*f)',cos(0.03*f))
>> xlabel('sin(0.01f)')
>> ylabel('cos(0.03*f)')
>> legend('Example')
>> title('A Plot Example')
>> grid
>> exit % finished with MATLAB
Graphical optimization
Minimize f(x1,x2)= (x1-3)2 + (x2-2)2
subject to: h1 (x1,x2): 2x1 + x2 =8
h2(x1,x2): (x1-1)2 + (x2-4)2 =4
g1(x1,x2): x1 + x2 ≤ 7
g2(x1,x2): x1 – 0.25 x22 ≤ 0
0 ≤ x1≤ 10; 0 ≤ x2≤ 10;
Example 1
% Example 1 (modified graphics)%
%
% graphical solution using matlab (two design variables)
% the following script should allow the graphical solution
% to example %
% Minimize
f(x1,x2) = (x1-3)**2 + (x2-2)**2
%
%
h1(x1,x2) = 2x1 + x2 = 8
%
h2(x1,x2) = (x1-1)^2 + (x2-4)^2 = 4
%
g1(x1,x2) : x1 + x2 <= 7
%
g1(x1,x2) : x1 - 0.25x2^2 <= 0.0
%
%
0 <= x1 <= 10 ; 0 <= x2 <= 10
%
%
%
Example 1
%
%
% WARNING : The hash marks for the inequality constraints must
%
be determined and drawn outside of the plot
%
generated by matlab
%
%---------------------------------------------------------------x1=0:0.1:10;
% the semi-colon at the end prevents the echo
x2=0:0.1:10;
% these are also the side constraints
% x1 and x2 are vectors filled with numbers starting
% at 0 and ending at 10.0 with values at intervals of 0.1
[X1 X2] = meshgrid(x1,x2);
% generates matrices X1 and X2 correspondin
% vectors x1 and x2
Example 1 cont’d
f1 = obj_ex1(X1,X2);% the objecive function is evaluated over the entire mesh
ineq1 = inecon1(X1,X2);% the inequality g1 is evaluated over the mesh
ineq2 = inecon2(X1,X2);% the inequality g2 is evaluated over the mesh
eq1 = eqcon1(X1,X2);% the equality 1 is evaluated over the mesh
eq2 = eqcon2(X1,X2);% the equality 2 is evaluated over the mesh
[C1,h1] = contour(x1,x2,ineq1,[7,7],'r-');
clabel(C1,h1);
set(h1,'LineWidth',2)
% ineq1 is plotted [at the contour value of 8]
hold on % allows multiple plots
k1 = gtext('g1');
set(k1,'FontName','Times','FontWeight','bold','FontSize',14,'Color','red')
% will place the string 'g1' on the lot where mouse is clicked
Example 1 cont’d
[C2,h2] = contour(x1,x2,ineq2,[0,0],'r--');
clabel(C2,h2);
set(h2,'LineWidth',2)
k2 = gtext('g2');
set(k2,'FontName','Times','FontWeight','bold','FontSize',14,'Color','red')
[C3,h3] = contour(x1,x2,eq1,[8,8],'b-');
clabel(C3,h3);
set(h3,'LineWidth',2)
k3 = gtext('h1');
set(k3,'FontName','Times','FontWeight','bold','FontSize',14,'Color','blue')
% will place the string 'g1' on the lot where mouse is clicked
[C4,h4] = contour(x1,x2,eq2,[4,4],'b--');
clabel(C4,h4);
set(h4,'LineWidth',2)
k4 = gtext('h2');
set(k4,'FontName','Times','FontWeight','bold','FontSize',14,'Color','blue')
Example 1 cont’d
[C,h] = contour(x1,x2,f1,'g');
clabel(C,h);
set(h,'LineWidth',1)
% the equality and inequality constraints are not written with 0 on the right hand
side. If you do write
% them that way you would have to include [0,0] in the contour commands
xlabel(' x_1 values','FontName','times','FontSize',12,'FontWeight','bold');
% label for x-axes
ylabel(' x_2 values','FontName','times','FontSize',12,'FontWeight','bold');
set(gca,'xtick',[0 2 4 6 8 10])
set(gca,'ytick',[0 2.5 5.0 7.5 10])
k5 = gtext({'Chapter 2: Example 1','pretty graphical display'})
set(k5,'FontName','Times','FontSize',12,'FontWeight','bold')
clear C C1 C2 C3 C4 h h1 h2 h3 h4 k1 k2 k3 k4 k5
grid
hold off
Example 1 cont’d
Objective function
function retval = obj_ex1(X1,X2)
retval = (X1 - 3).*(X1 - 3) +(X2 - 2).*(X2 - 2);
The first inequality
function retval = inecon1(X1, X2)
retval = X1 + X2;
The second inequality
function retval = inecon2(X1,X2)
retval = X1 - 0.25*X2.^2;
Example 1 cont’d
The first equality
function retval = eqcon1(X1,X2)
retval = 2.0*X1 + X2;
The second equality
function retval = eqcon2(X1,X2)
retval = (X1 - 1).*(X1 - 1) + (X2 - 4).*(X2 - 4);
Example 2- Graphical solution
f ( x1 , x2 )  ax12  bx22  c cos( px1 )  d cos( qx2 )  c  d
with
a  1, b  2, c  0.3, d  0.4, p  3 , q  4