这是我需要帮助的问题:
方程:
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工具箱是否具有解决它的功能?我搜索了几个,但没找到正确的问题。任何建议将不胜感激!
答案 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)