关于粒子群惯性权重的描述

(可用于论文)
        在 PSO的寻优能力方面,Shi等[42l在1998年开创性的改进了粒子群算法,提出一种在粒子群算法中使用惯性权重w的方法来控制粒子飞行的速度,w的加入使粒子的飞行范围得到了限制,通过他的研究发现较大的w可以使PSO具有更好的全局搜索能力,而较小的w则使算法有了更好的局部搜索能力。通常情况下在 PSO中的w设定范围为[0,1],但为了提高PSO 整体过程中的寻优效率,将w设置为会随着算法迭代次数而改变的动态惯性权重则越来越变为主流方法。在这种情况下一般设置为动态递减的w使得算法可以在运行初期在大范围的在空间内进行全局搜索便于找到更多的最优解,而在迭代过程中逐渐变小的w使得粒子具有更精细的局部搜索能力,有利于算法在已找到的潜在最优解中搜索到更加优秀的最优解。
 

多目标规划问题

        其主要思想是将目标函数的量纲统一,然后根据题意对各个函数确立一个权重,使多目标问题变成一个有权的单目标问题。

     例:某化工厂今年拟生产两种新产品A和B,其生产费用分别为2万元/吨和5万元/吨。这两种产品均将造成环境污染,每生产一吨A产品会产生0.4吨的污染,每生产一吨B产品会产生0.3吨的污染。由于条件限制,工厂生产产品A和B的最大生产能力各为每月5吨和6吨,而市场需要这两种产品的总量每月不少于7吨。该工厂决策认为,这两个目标中环境污染应优先考虑,且根据经验生产费用的参考值为30万元,污染量参考值为2吨。试问工厂如何安排生产计划,在满足市场需要的前提下,使设备的花费和产生的污染均达最小。

惯性权重PSO 惯性权重是什么意思_算法

        下面我们将其转换为一个单目标规划问题,即对上面的两个目标函数进行加权。由于该工厂决策认为环境污染应优先考虑,因此我们可以选取f和f2的权重分别为0.4和0.6。注意到两个目标函数的单位不同,一个为“万元",一个为“吨",因此我们需要首先对目标函数进行标准化来消除量纲的影响,然后再进行加权。由于题目中已经给了产品费用和污染量的参考值,因此我们将这两个目标函数分别除以其参考值来消除量纲。

        那么加权组合后的目标函数:

 

惯性权重PSO 惯性权重是什么意思_人工智能_02

完全背包问题:

        有N种物品和一个容量为T的背包,每种物品都就可以选择任意多个,第i种物品的价值为P[i],体积为V[i]。求解:选哪些物品放入背包,可以使得这些物品的价值最大,并且体积总和不超过背包容量。

%背包问题MATLAB求解 核心问题:决策是否将物品i放入背包?
%参考思路https://www.jianshu.com/p/a66d5ce49df5
clc
clear
%% 物品和背包属性
bag_weight = 10; %背包容量
thing_numl = 5; %物品个数
value = [1,3,2,4,5];  %5个物品的价值
weight = [2,1,3,6,4]; %5个物品的重量
%% 构建并填充价值表
value_table = zeros(thing_numl,bag_weight);  
%当只有物品1供选择时
for j = 1:10
    if weight(1) <=j
        value_table(1,j) = value(1);
    else
        value_table(1,j) = 0;
    end
end
%选好物品1之后,开始判断剩下物品是否被选择
for i=2:thing_numl
    for j= 1:bag_weight
        if weight(i)<j  %如果该物品重量比当前可用空间小时,可被选择
            value_table(i,j) = max(value_table(i-1,j),value(i)+value_table(i-1,j-weight(i)));
        else if weight(i)==j  %当该物品重量和当前可用空间一样时也可选择
              value_table(i,j) = max(value_table(i-1,j),value(i)); 
            else   %当物品重量大于当前空间时不可选择
                value_table(i,j) = value_table(i-1,j);
            end
        end
    end
end