McCormick

Problem definition

Objective function
f = @(x) sin(x(:,1) + x(:,2)) + (x(:,1) - x(:,2)).^2 - 1.5*x(:,1) + 2.5*x(:,2) + 1
Optimization settings
o = struct	

% initializing struct

o.lb = [-1.5 -3]

% lower bounds

o.ub = 4

% upper bounds

Graphic representation
[x,y] = meshgrid(-1.5:0.5:4, -3:0.2:4)
surf(x,y,f([x(:),y(:)]))

Problem properties

convexity smoothness minimum
0 f(-0.54719,-1.54719) = -1.9133

Optimization example with fminsearch

Algorithm options
o.maxit = 40	

% number of iterations

Optimization
rng(0)	

% for tractability

x0 = [2.7,2.7]

% initial guess

[xmin,fmin,info] = fminsearch(f,x0,o)

% running minimization

Animation
rng(0)
x0 = [2.7,2.7]
[~,~,info] = fminsearch(f,x0,o)
info.sol = [-0.54719 -1.54719 -1.9133]	

% solution

info.animate = true

% plot animation

info.animfreq = 2

% frame frequency

optimview('fminsearch',info)

References

[1] F. A. Lootsma (ed.), "Numerical Methods for Non-Linear Optimization", Academic Press, 1972

Related functions

fminsearch | meshgrid | surf