Looking for optimization loop or tool

5 ビュー (過去 30 日間)
Tony Esposito
Tony Esposito 2015 年 3 月 29 日
編集済み: Matt J 2015 年 3 月 31 日
I'll preface this question noting that I'm new to Matlab and have only been using it for about a week now. I've written the program that I want, but now I need help with optimization.
My program takes (as input) a 1x16 row vector where each entry can vary between 0 and 1. The program then calculates a series of parameters based upon these 16 values.
What I would like to do, is to use some kind of optimization loop/tool that will vary the 1x16 input vector and allow me to specify specific parameters as restrictions (i.e. a < 0.01 ans b = 3500) and specify two other parameters as targets (i.e f = 85 and g = 100).
Is there a way to do this in Matlab? If the reader is familiar with Excel, I'm looking for something similar (but preferable more powerful than) Excels solver add-in.
Thank you in advance for your time.
  1 件のコメント
Matt J
Matt J 2015 年 3 月 29 日
b = 3500 is not really a "restriction". It means you already know its value!

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

回答 (1 件)

Matt J
Matt J 2015 年 3 月 29 日
編集済み: Matt J 2015 年 3 月 30 日
You can look at the Optimization Toolbox if you have it. Look at fmincon() or lsqnonlin() if your objective function is nonlinear.
  2 件のコメント
Tony Esposito
Tony Esposito 2015 年 3 月 31 日
My objective isn't a single function, which is what I was trying to describe above. My objective, I think, would be the "f" and "g" parameters that I indicated above, which are calculated within a script file.
Matt J
Matt J 2015 年 3 月 31 日
編集済み: Matt J 2015 年 3 月 31 日
lsqnonlin accepts a vector-valued objective, so in your case this could be [f(x);g(x)]. It tries to minimize the norm of this objective, which I assume is what Excel does as well.
If you really think you need fancier multi-objective optimization, then you might look at fgoalattain().

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

Community Treasure Hunt

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

Start Hunting!

Translated by