【问题标题】:Matlab: How to solve maximum value for a gradient regressionMatlab:如何求解梯度回归的最大值
【发布时间】:2012-02-15 18:39:38
【问题描述】:

这是我需要帮助的问题:

方程:

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工具箱有解决的功能吗?我已经搜索了几个,但没有找到适合这个问题的一个。任何建议将不胜感激!

【问题讨论】:

    标签: matlab regression linear-gradients


    【解决方案1】:

    创建一个计算加权利润负数的函数(负数,因为 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)
    

    【讨论】:

    • 我要求解的函数是线性的;我以为 fmincon 是非线性的,它在这里工作吗?
    • 当然可以。为什么不呢?虽然看起来,但您必须再添加一个约束以确保系数为正。
    • 谢谢,但我仍在努力。对于 f=sum(r(1:10)),你的意思是 (1:4) 吗?
    • 不,X是矩阵,a是向量,所以x*a的每一行都会是x1*a1+x2*a2+... 1到10相加是因为你说你想要排名前 10 位的产品。
    猜你喜欢
    • 2014-03-21
    • 2016-12-15
    • 1970-01-01
    • 2019-03-12
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多