线性编程fmincon。为什么代码不起作用?

时间:2012-02-19 12:08:29

标签: matlab mathematical-optimization

我想使用此功能找到最大值:

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

代码抛出错误:

  

错误:未定义的功能或方法&#39> mtimes'对于' cell'

类型的输入参数

你知道为什么吗?

1 个答案:

答案 0 :(得分:1)

如图所示,您的功能无效Matlab。在'Function'而不是'f'中使用'F'会引发警告,但在函数定义结尾处出现'end'是语法错误。更正这些错误,然后在调试模式下运行该函数。你的下一个问题是

S = -x.*a;

未定义rhs(在本例中为“a”)是一个单元格数组,您之前的声明就是它。你期望(在第一行)'a'作为函数的参数也是非常奇怪的,但在l2中将它定义为包含4个字符串的单元格数组。