use ga optimization but got error for ga process
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
sogol bandekian
il 10 Mag 2022
Risposto: Walter Roberson
il 23 Mag 2022
%fitness function Gomez and Levy
function y=fitnessfunctiongl(x)
x1=x(1);
x2=x(2);
y=(4*x1.^2)-2.1*x1.^4+1/3*x1.^6+(x1*x2)-4*x2.^2+4*x2.^4;
end
%constraints
function [c ,ceq]=constraintgl(x)
x1=x(1);
x2=x(2);
c=-sin(4*pi*x1)+2*sin(2*pi*x2)^2-1.5;
ceq=[];
end
%main script to pass function and constraints to ga for optimization
ObjFcn=@fitnessfunctiongl;
nvars=2;
lb=[-1, -1];
ub=[0.75, 1];
nonlcon=@constraintgl;
options = optimoptions('ga','ConstraintTolerance',1e-6,'Display','iter','PlotFcn',{@gaplotrange,@gaplotbestf,@gaplotselection,@gaplotmaxconstr}); %plotting the process of finding the solution
%solution and function value
[x , fval,exitFlag,output,population,scores]= ga(ObjFcn,nvars,[],[],[],[],lb,ub,nonlcon,options);
----------------------------------but I got these errors------------------------------
Error in gadsplot (line 141)
[state,optimvalues] = callOnePlotFcn(fname,plotNames{i},state,options.OutputPlotFcnOptions,optimvalues,'init',args{i}{:});
Error in gacon (line 55)
state = gadsplot(options,state,'init','Genetic Algorithm');
Error in ga (line 406)
[x,fval,exitFlag,output,population,scores] = gacon(FitnessFcn,nvars, ...
Error in maingl (line 11)
[x , fval,exitFlag,output,population,scores]= ga(ObjFcn,nvars,[],[],[],[],lb,ub,nonlcon,options);
0 Commenti
Risposta accettata
Walter Roberson
il 23 Mag 2022
syms x [1 2]
x1=x(1);
x2=x(2);
y=(4*x1.^2)-2.1*x1.^4+1/3*x1.^6+(x1*x2)-4*x2.^2+4*x2.^4;
c=-sin(4*pi*x1)+2*sin(2*pi*x2)^2-1.5;
sol1 = solve(c, x1)
eqn2 = subs(y, x1, sol1)
sol2a = vpasolve(eqn2(1), x2)
sol2b = vpasolve(eqn2(2), x2)
back1a = vpa(subs(eqn2(1), x2, sol2a))
back1b = vpa(subs(eqn2(2), x2, sol2b))
ya = vpa(subs(y, {x1, x2}, {back1a, sol2a}))
yb = vpa(subs(y, {x1, x2}, {back1b, sol2b}))
Beyond this, you need to test at least one c value less than that equality, such as c=-sin(4*pi*x1)+2*sin(2*pi*x2)^2-1.6; in case the minima is not right at the constraint bound.
0 Commenti
Più risposte (1)
Matt J
il 10 Mag 2022
Modificato: Matt J
il 10 Mag 2022
Perhaps you meant to have,
y=(4*x1.^2)-2.1*x1.^4+1/3*x1.^6+(x1*x2)-4*x1.^2+4*x2.^4;
or
y=(4*x1.^2)-2.1*x1.^4+1/3*x1.^6+(x1*x2)-4*x2.^2+4*x2.^4;
6 Commenti
Alan Weiss
il 23 Mag 2022
You have nonlinear constraints. Therefore, the algorithm has few iterations, and plot functions are called just once per iteration. For an explanation of what nonlinear constraints do to the ga algorithm, see Nonlinear Constraint Solver Algorithms. For an example showing this behavior, see Constrained Minimization Using the Genetic Algorithm.
Alan Weiss
MATLAB mathematical toolbox documentation
Vedere anche
Categorie
Scopri di più su Genetic Algorithm in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!