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