MATLAB: Applying a change of variables inside fmincon

change of variablesconvex programmingfminconMATLABstopping criterion

I want to minimize a very well-behaved objective function over the convex hull of a finite set of points .
I am only interested in finding the point where f is maximized, and do not care about the weights that allow me to write .
Of course, I could simply write this as:
popt = fmincon(@(p) f(x'*p),[],[],ones(1,N),1,zeros(N,1),[]);
y = x'*popt;
However, if the points that span the convex hull are nearly multicollinear, then this compound function (as a function of p) is very flat around the optimum. I suspect that this is slowing down fmincon a lot, and would help it "solve the problem" in the space rather than over . What steps could I take to achieve this?

Best Answer

If the dimension R^l is not too large, you could use vert2lcon
to obtain the linear (in)equalities describing the convex hull of the x_i,
A*y<=b
Aeq*y=beq
Then you can do the optimization directly in the space of y.