Use fsolve function in genetic algorithm toolbox

3 vues (au cours des 30 derniers jours)
Sepanta Gharib
Sepanta Gharib le 8 Juil 2018
I have a one-variable nonlinear equation that needs to be solved with the " fsolve" function. This equation also has a parameter that should be optimized by the genetic algorithm. To use the genetic algorithm toolbox, I have to write a separate objective function file for it which should contain the " fsolve" function. But how to define the parameter to be optimized in the first line? I can not define the input variable due to the " fsolve" function.
  1 commentaire
Walter Roberson
Walter Roberson le 21 Août 2018
Please do not close questions that have an answer.

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 8 Juil 2018
fun = @(x, param) 5 + exp(-(x-param).^2);
guess = 0.12345;
ga( @(param) fsolve( @(x) fun(x, param), guess), .... )
  2 commentaires
Mehdi
Mehdi le 1 Mai 2019
Is there a way that you could give a numerical example that I could actually run in MATLAB for better understanding? Thank you!
Walter Roberson
Walter Roberson le 1 Mai 2019
fun = @(x, param) exp(x-param) - 1/10;
guess = 0.12345;
[P,fval] = ga( @(param) (5+fsolve( @(x) fun(x, param), guess, optimoptions('fsolve', 'Display', 'none'))).^2, 1, [], [], [], [], [], [], [], gaoptimset('display', 'iter', 'TolFun', 1e-9, 'Generations', 1000))
This looks for an x and a param such that exp(x-param) is 1/10 and x is as close as possible to -5.
Here, "close to -5" is expressed as (5+value)^2 being minimal, which would best occur when value was -5
... It could do better. ga() is not such a great optimizer.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by