Линейное программирование fmincon.Почему код не работает? - PullRequest
1 голос
/ 19 февраля 2012

Я хочу найти максимальное значение, используя эту функцию:

Function f = myfun(a)
    a = {'a1';'a2';'a3';'a4'};
    x = rand(4,5);
    S = -x.*a; 
    SS = sum(S); 
    [~,ix] = sort(SS); 
    R = rand(1,5)
    SR = R(ix); 
    f = sum(SR(1:10));
    Aeq=ones(4,1); 
    beq=1;  
    a0=[.25 .25 .25 .25]';  
    [a,f] = fmincon(@myfun,a0,[],[],Aeq,beq);    
end

Код выдает ошибку:

ошибка: неопределенная функция или метод mtimes для входных аргументовтипа 'ячейка'

Знаете ли вы, почему?

1 Ответ

1 голос
/ 19 февраля 2012

Как показано, ваша функция не является допустимой Matlab. Использование «F» в «Function» вместо «f» вызовет предупреждение, но наличие «end» в конце определения функции является синтаксической ошибкой. Исправьте эти ошибки, затем запустите функцию в режиме отладки. Ваша следующая проблема в том, что

S = -x.*a;

не определено, где rhs (в данном случае 'a') - это массив ячеек, который был сделан вашим предыдущим объявлением. Также очень странно, что вы ожидаете (в первой строке) «a» в качестве аргумента функции, но в l2 определите его как массив ячеек, содержащий 4 строки.

...