Ваша фитнес-функция должна возвращать скалярное значение

Я попытался выполнить оптимизацию, используя нейронную сеть и генетический алгоритм. Я обучил нейронную сеть с входом p (матрица 4x72) и целью t (матрица 2x72). Пересматривая оптимизацию с использованием генетического алгоритма, я использовал sim функция нейронной сети как фитнес-функция. Код, который я использовал для этого, выглядит следующим образом:

objFcn=@(p) sim(net,p');
%'net' is the neural network I created with p as input and t as target
[xOpt,fVal,exitflag,target]=ga(objFcn,4,[],[],[],[],LB,UB,[],options);

Я предоставил LB и UB, которые являются нижней и верхней границами соответственно. А также optionsЯ попробовал это с

options = gaoptimset('Vectorized','on');
% even vectorized off doesnt solve the problem

Логично, как я использовал р ' в sim команда, результирующая матрица будет 72x2, что соответствует населению для GA. Но по какой-то причине я всегда получаю сообщение об ошибке "Ваша фитнес-функция должна возвращать скалярное значение".

Пожалуйста, помогите мне решить эту проблему.

1 ответ

Функция "sim" возвращает матрицу со всеми выходами из вашей сети. Вы должны вычислить квадрат ошибки от этого, чтобы обеспечить скалярное значение, чтобы минимизировать с помощью GA.

Другие вопросы по тегам