Matlab:如何求解梯度回归的最大值

时间:2012-02-15 18:39:39

标签: matlab regression linear-gradients

这是我需要帮助的问题:

方程:

r = a1 * x1 + a2 * x2 + a3 * x3 + a4 * x4,

其中'x1,x2,x3,x4'是产品四个方面的得分(全部为正);

'a1,a2,a3,a4'是初始化权重(它们之和为1);

'r'计算为此产品的最终得分;

说产品数量是100;然后根据最终得分“r”,对100种产品进行排序,并计算出前10种产品的加权利润(给定)。

目的是通过更改权重'a1,a2,a3,a4'来找到加权利润的最大值。

Matlab工具箱是否具有解决它的功能?我搜索了几个,但没找到正确的问题。任何建议将不胜感激!

1 个答案:

答案 0 :(得分:0)

创建一个计算加权利润负值的函数(负数,因为matlab的内置算法找到最小值)。如果我理解你所描述的内容,它应该看起来像这样。

function f = wprofit(a)
r=-x*a;
r=sort(r);
f=sum(r(1:10));
end

然后使用fmincon查找最小值。

Aeq=ones(4,1);
beq=1;
a0=[.25 .25 .25 .25]';
[a,f]=fmincon(@wprofit,a0,[],[],Aeq,beq)