I should add that this is my first time using the Optimization Toolbox, so it's possible I have made a rookie error. Would be grateful if anyone has an answer for me.
genetic algorithm error not enough input arguments
4 次查看(过去 30 天)
显示 更早的评论
function deltaH = curvefit_H_2modes(w1,w2,m1,m2,c1,c2)
load('file.mat');
z = -(x.^2) .* ((1 ./ ((w1.^2 * m1) - (x.^2 * m1) + (1i * x * c1))) + ...
(1 ./ ((w2.^2 * m2) - (x.^2 * m2) + (1i * x * c2))));
deltaH = sum(abs(z - y).^2);
end
Ok, now I use the Genetic Algorithm in the Global Optimization Toolbox and input @curvefit_H_2modes as my fitness function and I input 6 as the number of variables. Then I click on Start to run the GA solver. I get an error message saying "Not enough input arguments" ... WHY?! My function takes 6 input arguments. The function loads a file which has two vectors, x and y (experimental data).
I can run the function myself using estimates for the 6 input variables and it runs perfectly. Why does the GA have a problem with it?
采纳的回答
Alan Weiss
2013-5-23
There are several problems with your syntax. The main problem is that all optimization solvers expect the decision variables (the variables you want to change to find an optimum) to be in a single vector, typically called x. For example,
function deltaH = curvefit_H_2modes(x)
w1 = x(1);
w2 = x(2);
m1 = x(3);
m2 = x(4);
c1 = x(5);
c2 = x(6);
load('file.mat');
...
Furthermore, you will have much better performance if you get the load statement out of your function definition, and simply pass in the values you need (I think it is just y) in a nested function or anonymous function. See the documentation for details.
Finally, you will probably get better results if you use the appropriate solver. For this type of problem (minimizing a sum of squares), the Optimization Decision Table recommends using lsqnonlin or lsqcurvefit. And do you really need to sum the squares, or can you use the norm function?
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation
0 个评论
更多回答(3 个)
Ali Meghdadi
2013-12-1
hi, I also have somehow the same problem. My constraint function has 8 parameters as input and gives an output and GA doesn't accept it. what can I do?
1 个评论
Alan Weiss
2013-12-2
Please look at the accepted answer for the solution to your problem.
If that doesn't work, then provide more detail, such as the syntax you are using, and the error GA returns.
Alan Weiss
MATLAB mathematical toolbox documentation
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Genetic Algorithm 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!