Applying a change of variables inside fmincon

1 回表示 (過去 30 日間)
Michele Muller
Michele Muller 2019 年 10 月 18 日
コメント済み: Michele Muller 2019 年 10 月 30 日
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?

採用された回答

Matt J
Matt J 2019 年 10 月 18 日
編集済み: Matt J 2019 年 10 月 18 日
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.
  5 件のコメント
Michele Muller
Michele Muller 2019 年 10 月 18 日
Oh, thanks, that might be useful! Maybe if I combine that with a supplied gradient that points in the right direction? Will try and report back!
Michele Muller
Michele Muller 2019 年 10 月 30 日
Sorry, it took a while, but this seemed to help! I still don't exactly know what's going on "under the hood", but it definitely improved speed, with little if no precision decrease.

サインインしてコメントする。

その他の回答 (1 件)

Matt J
Matt J 2019 年 10 月 18 日
You could add a regularizing penalty to better specify the solution p_i in the cases where it is ambiguous. Maybe an L1 penalty to enourage sparseness, or an L2 roughness penalty.
  2 件のコメント
Michele Muller
Michele Muller 2019 年 10 月 18 日
Is there a way to do this in a "lexicographic" way that doesn't interfere with finding the correct y?
Matt J
Matt J 2019 年 10 月 18 日
編集済み: Matt J 2019 年 10 月 18 日
You need to put a sufficiently small weight on the penalty that the solution is not greatly perturbed.

サインインしてコメントする。

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by