how to calculate fitness function when simulation is running?
조회 수: 1 (최근 30일)
이전 댓글 표시
Hi everyone, I have a simulink model and it returns two output. One of them is real and the other is predicted. Both of them have 500*1 size. For the optimization I wrote genetic algorithm code. There is no problem about the ga code. I have a problem writing my cost function. When i run the ga.m my fitness function returns constant value. But it is impossible, for 500 values it must be varied and converge to 0 in optimization process (am i wrong?). Could you please help me?
this is my fitness function
function MSE = optimizationfunc(real,predicted)
real = [2;3;6;.....]; %it has 500 values and i didnt write it here
predicted = get_param('my_sys_simulink/predicted','predicted');
MSE = ((abs((real(:,1)-predicted(:,1)).^2)));
end
댓글 수: 2
Walter Roberson
2015년 8월 24일
I suspect you want to either sum() or mean() those squared differences, not abs() them.
답변 (1개)
Alan Weiss
2015년 8월 24일
I have trouble understanding what you are doing. What are your control variables? I mean, which variables should the genetic algorithm change in order to try to minimize something, perhaps a sum of squares?
Whatever that vector of variables is, let's call it x, a row vector.
Your fitness function should accept that row vector and return a real number. Probably, it should look something like this:
function y = optimfunc(x)
[real,predicted] = mysimulationresults(x);
y = norm(real - predicted);
Obviously, I do not exactly know how you are going to write the function mysimulationresults(x), but I assume that you do.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation
댓글 수: 0
참고 항목
카테고리
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!