Is there a way to find the optimal value of a minimized function from a given set of solutions?
Here is an example of what I would like to do:
For x in {0,0.5,1}, solve: x = arg max f(x).
I think I would need a variation of "fminbnd", as this one uses a given interval of solutions, while I need a given set of solutions.
Any suggestion would be very much appreciated. Thank you

 採用された回答

Walter Roberson
Walter Roberson 2018 年 6 月 17 日

1 投票

For an explicit list of arguement values, x:
[bestfval, bestidx] = max(arrayfun(@f, x))
bestx = x(bestidx);
If the function is fully vectorized then
[bestfval, bestidx] = max(f(x(:)));
bestx = x(bestidx);

2 件のコメント

Mohamed Larabi
Mohamed Larabi 2018 年 6 月 17 日
Your answer replies perfectly to the problem stated. But I made a mistake while I typed it. It is:
For x in {0,0.5,1}, solve: x = arg max x*f(y). If you have any thoughts about it, please let me know.
Walter Roberson
Walter Roberson 2018 年 6 月 17 日
If the task is to find the y that maximizes x*f(y) for each given x, then the answer is going to be the same as the y that maximizes f(y) without considering the x because multiplication by positive x is a linear operator. If some of the x could be negative and some positive then you could have a more interesting situation.

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

その他の回答 (1 件)

Mohamed Larabi
Mohamed Larabi 2018 年 6 月 17 日

0 投票

The task is to find the x, while f(y) is given. I am trying to simplify my problem as much as I can to be understandable by the overall Matlab community. What I actually need to do is to numerically solve HJB (Hamilton-Jacobi-Bellman) problem. It is dynamic programming. Do you have any reference or link to share about it? Thank you very much.

1 件のコメント

Walter Roberson
Walter Roberson 2018 年 6 月 17 日
If f(y) is given, then the x that maximizes x*f(y) is:
if f(y) > 0
bestx = max(x);
elseif f(y) < 0
bestx = min(x);
else
all finite non-nan entries in x give the same result
end

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

カテゴリ

ヘルプ センター および File Exchange で Get Started with Optimization Toolbox についてさらに検索

製品

リリース

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by