变权matlab算法(目前算法内容只适用于一阶)

该博客主要探讨了一种权重计算方法,通过基础权重(BW)和用户定义的最大权重(BWU)来调整权重分配。代码中展示了如何根据给定条件计算变量权重,使用VariableWeight函数进行优化。该函数涉及到了一些优化理论,如通过对λ值的计算和调整,最终得到加权和score。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

理论内容来自https://wenku.baidu.com/view/193063449a89680203d8ce2f0066f5335b81671d.html百度文库中的课本知识。
主函数代码

BW=[0.5 0.3 0.2];       
BWU=[];
u=[95 85 75];
um=[100 100 100];
BWU_LE=length(BWU);
if BWU_LE==0                %用于判断是否是用户自定义最大权限,如果没有则按照下面的方式计算
    for i=1:length(BW)
        BWU(i)=BW(i)./(min(BW)+max(BW));
    end
end
weight=VariableWeight(BW,BWU,u,um);
score=sum(weight.*u)

公式代码

function Weight = VariableWeight(BW,BWU,u,um)       %BW表示基础权重   BWU表示各因素权重上界
    y0=[];      %对应课本上的λ0(i)
    y1=[];      %对应课本上的λ*(i),*在下面
    y2=[];      %对应课本上的λ*(i),*在上面
    Y=[];       %对应课本上的λi(u)
    for i=1:length(BW)
    y0(i)= BWU(i).*(sum(BW)-BW(i))./(1-BWU(i));
    y1(i)=sum(BW)-BW(i);
    end
    for j=1:length(BW)
    y2(j)=sum(y0)-y0(j);
    K(j)=1-1./(log((y0(j).*(y2(j)+BW(j)))./(sum(y0).*BW(j))));
    Y(j)=(y2(j).*y0(j))./(sum(y0).*exp(1./(1-K(j)).*(u/um).^(1-K(j))));
    end
    Weight=Y./sum(Y);
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值