Error Message using GA Genetic Algorithm need help!
Mostra commenti meno recenti
I am attempting to use a GA toolbox to optimize an input to a set of ODE equations. I am using a base function for the ODE solver, and a second function as the evaluation function for the GA. I have been able to run the ODE function with the evaluation function with no problem, but when I try to use the GA function, I recieve the message below
Error using eval Undefined function 'fhandle' for input arguments of type 'double'.
Error in ga (line 222) eval(e1str);
Error in Untitled (line 3) [w endPop] = ga([0 2],'fhandle',[],Feed,[1e-6 1 1],'maxGenTerm',1,...
Can anyone give me any guidance on what is going wrong or how to troubleshoot this issue? I am not sure where to go with this and I'm new to using this toolbox:
Top Level Script (GA Script) that is giving errors:
Feed =rand(10,1);
fhandle = @HybridomaSolver1;
[w endPop] = ga([0 2],'fhandle',[],Feed,[1e-6 1 1],'maxGenTerm',1,...
'normGeomSelect',[0.08],['arithXover'],[2 0],'nonUnifMutation',[2 1 3]);
Middle Function (Function I am attempting to use as my evaluation function in the GA)
function [mab_output,Feed] =HybridomaSolver1(Feed,options)
global Feed
Feed = rand(10,1);
x0 = [0.79 2E8 25 4 0 0 0];
tspan = [0 10];
%Push feed schedule and initial parameters into ODE
[t,x]=ode45(@hybridoma,tspan,x0);
mab_output = x(end,7)
ODE Function
function dx =hybridoma1(t,x)
global Feed
global F
%Define Variables
%Fermentor working volume (L) = x(1)
%Concentration of viable cells (cells/L) = x(2)
%Concentration of glucose (mM/l) =x(3)
%Concentration of glutamine (mM/l) = x(4)
%Concentration of Lactate (mM/l) = x(5)
%Concentration of Ammonia (mM/l) = x(6)
%Concentration of Monclonal Antibodies (mg/l)= x(7)
%Define parameter values of the kinetic model
umax = 1.09;
kdmax = 0.69;
yxvglc = 1.09E8;
yxvgln = 3.8E8;
mglc = 0.17E-8;
kmglc = 19.0;
kglc = 1.0;
kgln = 0.3;
alpha = 2.57E-8;
ku = 0.02;
beta = 0.35E-8;
kdlac = 0.01;
kdamm = 0.06;
kdgln = 0.02;
ylacglc = 1.8;
yammgln = 0.85;
f=F;
glcin = 25;
glnin = 4;
%Define kinetic expressions
u = umax*(x(3)/(kglc + x(3)))*(x(4)/(kgln + x(4)));
kd = kdmax*(1/(umax-kdlac*x(5)))*(1/(umax-kdamm*x(6)))*(kdgln/(kdgln+x(4)));
qgln = u/(yxvgln);
qglc = u/(yxvglc);
qlac = ylacglc*qglc;
qamm = yammgln*qgln;
alphaprime = (alpha/(ku + u));
qmab = alphaprime*u+beta;
if t < 1
F=Feed(1);
else
if t < 2
F=Feed(2);
else
if t < 3
F=Feed(3);
else
if t < 4
F=Feed(4);
else
if t < 5
F=Feed(5);
else
if t < 6
F=Feed(6);
else if t < 7
F=Feed(7);
else if t < 8
F=Feed(8);
else if t < 9
F=Feed(9);
else if t < 10
F=Feed(10);
end
end
end
end
end
end
end
end
end
end
dx=zeros(7,1);
dx = [f;x(2)*(u-kd)-x(2)*(f/(x(1)))...
;(glcin - x(3))*(f/x(1))-x(2)*qglc...
;(glnin - x(4))*(f/x(1))-x(2)*qgln...
;qlac*x(2) - (f/x(1))*x(5)...
;qamm*x(2) - (f/x(1))*x(6)...
;qmab*x(2) - (f/x(1))*x(7)];
end
1 Commento
Star Strider
il 10 Ott 2012
Maybe I'm missing something in the documentation for ga, but the fitness function handle is supposed to be the first argument to ga, at least in 2012b. The second argument is supposed to be nvars, ‘Positive integer representing the number of variables in the problem.’ That certainly would explain the thrown error ‘Undefined function 'fhandle' for input arguments of type 'double'’
Could that be part of the problem?
Risposta accettata
Più risposte (2)
Sean
il 9 Ott 2012
0 voti
Alan Weiss
il 10 Ott 2012
0 voti
Without trying to understand your code, perhaps this relatively new example can help you get on the right track. In particular, look at step 6.
Alan Weiss
MATLAB mathematical toolbox documentation
Categorie
Scopri di più su Ordinary Differential Equations in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!