Problems with GA function (global optimization toolbox)

I am trying to execute the global optimization toolbox function ga, but my FITNESSFUNCTION has another non-parameterized values. Specifically I want to call another function with multiple parameters inside the calling of ga function :
FITNESSFUNCTION = @(x1,x2,x3) mod_sol(x1, x2, x3, DSSCircuit, DSSText, canb(1), cand(1), i, s1);
[x_sol, f_sol] = ga(FITNESSFUNCTION,3, [], [], [], [],lb, ub, [], [], opts);
the parameters to be optmized are x1, x2 and x3, but I need doing some other calculus with the variables DSSCircuit, DSSText, canb(1), cand(1), i et s1 in order to evaluate the fitness function

6 commentaires

What difficulty are you encountering? That syntax looks appropriate.
Jose Vivas
Jose Vivas le 27 Jan 2016
Modifié(e) : Walter Roberson le 27 Jan 2016
There is the error
Error in balvolag_v1>@(x1,x2,x3)mod_sol(x1,x2,x3,DSSCircuit,DSSText,canb(1),cand(1),i,s1) (line 58)
fitness = @(x1,x2,x3) mod_sol(x1, x2, x3, DSSCircuit, DSSText, canb(1), cand(1), i, s1)
Error in createAnonymousFcn>@(x)fcn(x,FcnArgs{:}) (line 11)
fcn_handle = @(x) fcn(x,FcnArgs{:});
Error in makeState (line 47)
firstMemberScore = FitnessFcn(state.Population(initScoreProvided+1,:));
Error in galincon (line 17)
state = makeState(GenomeLength,FitnessFcn,Iterate,output.problemtype,options);
Error in ga (line 359)
[x,fval,exitFlag,output,population,scores] = galincon(FitnessFcn,nvars, ...
Error in balvolag_v1 (line 59)
[x_sol, f_sol] = ga(fitness,3, [], [], [], [],lb, ub, [], [], opts);
Caused by:
Failure in initial user-supplied fitness function evaluation. GA cannot continue.
Thanks
jgg
jgg le 27 Jan 2016
It looks like there's a problem in your mod_sol function, specifically with balvolag_v1 which you haven't included.
Not quite, balvolag_v1 appears to be the name of the file that contains the calls the user shows.
The problem is something to do with mod_sol, such as if mod_sol cannot be found, or one of the named variables does not exist at the time the anonymous function is created.
Jose Vivas
Jose Vivas le 28 Jan 2016
Modifié(e) : Jose Vivas le 28 Jan 2016
I Finally found the error, on the handler definition, it must be
FITNESSFUNCTION = @(x) mod_sol(x1, x2, x3, DSSCircuit, DSSText, canb(1), cand(1), i, s1);
instead
FITNESSFUNCTION = @(x1,x2,x3) mod_sol(x1, x2, x3, DSSCircuit, DSSText, canb(1), cand(1), i, s1);
thanks a lot to jgg and Walter Roberson by your suggestions
More likely you would need
FITNESSFUNCTION = @(x) mod_sol(x(1), x(2), x(3), DSSCircuit, DSSText, canb(1), cand(1), i, s1);

Connectez-vous pour commenter.

Réponses (0)

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by