Как я могу свернуть эту функцию с MATLAB? - PullRequest
0 голосов
/ 11 февраля 2019

Я написал следующую функцию в MATLAB:

function EX_EFFICIENCY=EXERGY_EFFICIENCY_FUNCTION(CR,ER,PC,T0,P0)

Я использовал следующий порядок (га):

x = ga(@EXERGY_EFFICIENCY_FUNCTION,5)

Но он получает ошибку:

Недостаточно входных аргументов.

Ошибка в EXERGY_EFFICIENCY_FUNCTION (строка 22) T7p = T0. * (ПК. ^ ((K-1) ./ k));

Ошибка вcreateAnonymousFcn> @ (x) fcn (x, FcnArgs {:}) (строка 11) fcn_handle = @ (x) fcn (x, FcnArgs {:});

Ошибка в makeState (строка 47) firstMemberScore =FitnessFcn (state.Population (initScoreProvided + 1,:));

Ошибка в gaunc (строка 40) state = makeState (GenomeLength, FitnessFcn, Iterate, output.problemtype, options);

Ошибка в ga (строка 398) [x, fval, exitFlag, выход, население, баллы] = gaunc (FitnessFcn, nvars, ...

Причина: ошибка при первоначальной оценке пользовательских фитнес-функций, предоставленной пользователем. GAневозможно продолжить.

Как я могу минимизировать эту функцию?

1 Ответ

0 голосов
/ 12 февраля 2019

Какие переменные вы хотите минимизировать?Все пять CR,ER,PC,T0,P0?Затем вам нужно указать ga использовать вектор длины 5 и передать его элементы входным аргументам функции.Как это:

xopt = ga(@(x) EXERGY_EFFICIENCY_FUNCTION(x(1),x(2),x(3),x(4),x(5)), 5);

Вы также можете исправить некоторые и оптимизировать по сравнению с другими, конечно, как это:

xopt = ga(@(x) EXERGY_EFFICIENCY_FUNCTION(x(1),x(2),PC,T0,P0), 2);

оптимизируетCR, ER для фиксированных значений PC, T0 и P0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...