about gatool
4 次查看(过去 30 天)
显示 更早的评论
Hello! I have a fitness functiion:
function z = my_fun(x)
Skorost8.input(1,1).mf(1,1).params=[x(1),x(2),x(3)];
Skorost8.input(1,1).mf(1,2).params=[x(4),x(5),x(6)];
Skorost8.input(1,1).mf(1,3).params=[x(7),x(8),x(9)];
Skorost8.input(1,1).mf(1,4).params=[x(10),x(11),x(12)];
Skorost8.input(1,2).mf(1,1).params=[x(13),x(14),x(15)];
Skorost8.input(1,2).mf(1,2).params=[x(16),x(17),x(18)];
Skorost8.input(1,2).mf(1,3).params=[x(19),x(20),x(21)];
load_system('petina.mdl');
sim('petina.mdl');
close_system('petina.mdl');
z=simout.signals.values;
And petina.mdl file, which it use. The mdl-file write to workspace a massive of values, which must be a minimal (z=simout.signals.values;)
When I try to use it with gatool I get:
>> x=ga(@my_fun,21);
??? Subscripted assignment dimension mismatch.
Error in ==> fcnvectorizer at 14
y(i,:) = feval(fun,(pop(i,:)));
Error in ==> makeState at 47
Score =
fcnvectorizer(state.Population(initScoreProvided+1:end,:),FitnessFcn,1,options.SerialUserFcn);
Error in ==> gaunc at 41
state = makeState(GenomeLength,FitnessFcn,Iterate,output.problemtype,options);
Error in ==> ga at 279
[x,fval,exitFlag,output,population,scores] = gaunc(FitnessFcn,nvars, ...
Caused by:
Failure in user-supplied fitness function evaluation. GA cannot continue.
How to use correctly gatool in this case? thank you very much!
0 个评论
采纳的回答
Sean de Wolski
2012-1-5
dbstop if error
Which will stop deep inside of ga(). Now put a break point in first line of your objective function. Run the feval line that causes the error and step through your fitness function to find the error and analyze the inputs.
5 个评论
Sean de Wolski
2012-1-5
Yes, a 1x450 would be 450 objectives (which sounds intuitively like a lot (way too many) to me!). Especially since you only want to optimize 21 variables.
If you look in the doc for ga() on line one it explains the output:
"x = ga(fitnessfcn,nvars) finds a local unconstrained minimum, x, to the objective function, fitnessfcn. nvars is the dimension (number of design variables) of fitnessfcn. The objective function, fitnessfcn, accepts a vector x of size 1-by-nvars, and returns a scalar evaluated at x."
Could you explain what you're trying to optimize?
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Linear Least Squares 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!