资源简介
多目标perota优化MATLAB算法,运用算法,通过MATLAB进行自动优化
代码片段和文件信息
%% 该函数演示多目标perota优化问题
%清空环境
clc
clear
load data
%% 初始参数
objnum=size(P1); %类中物品个数
weight=92; %总重量限制
%初始化程序
Dim=5; %粒子维数
xSize=50; %种群个数
MaxIt=200; %迭代次数
c1=0.8; %算法参数
c2=0.8; %算法参数
wmax=1.2; %惯性因子
wmin=0.1; %惯性因子
x=unidrnd(4xSizeDim); %粒子初始化
v=zeros(xSizeDim); %速度初始化
xbest=x; %个体最佳值
gbest=x(1:); %粒子群最佳位置
% 粒子适应度值
px=zeros(1xSize); %粒子价值目标
rx=zeros(1xSize); %粒子体积目标
cx=zeros(1xSize); %重量约束
% 最优值初始化
pxbest=zeros(1xSize); %粒子最优价值目标
rxbest=zeros(1xSize); %粒子最优体积目标
cxbest=zeros(1xSize); %记录重量,以求约束
% 上一次的值
pxPrior=zeros(1xSize);%粒子价值目标
rxPrior=zeros(1xSize);%粒子体积目标
cxPrior=zeros(1xSize);%记录重量,以求约束
%计算初始目标向量
for i=1:xSize
for j=1:Dim %控制类别
px(i) = px(i)+P(x(ij)j); %粒子价值
rx(i) = rx(i)+R(x(ij)j); %粒子体积
cx(i) = cx(i)+C(x(ij)j); %粒子重量
end
end
% 粒子最优位置
pxbest=px;rxbest=rx;cxbest=cx;
%% 初始筛选非劣解
flj=[];
fljx=[];
fljNum=0;
%两个实数相等精度
tol=1e-7;
for i=1:xSize
flag=0; %支配标志
for j=1:xSize
if j~=i
if ((px(i)rx(j))) ||((abs(px(i)-px(j)) && (rx(i)>rx(j)))||((px(i)weight)
flag=1;
break;
end
end
end
%判断有无被支配
if flag==0
fljNum=fljNum+1;
% 记录非劣解
flj(fljNum1)=px(i);flj(fljNum2)=rx(i);flj(fljNum3)=cx(i);
% 非劣解位置
fljx(fljNum:)=x(i:);
end
end
%% 循环迭代
for iter=1:MaxIt
% 权值更新
w=wmax-(wmax-wmin)*iter/MaxIt;
%从非劣解中选择粒子作为全局最优解
s=size(fljx1);
index=randi(s11);
gbest=fljx(index:);
%% 群体更新
for i=1:xSize
%速度更新
v(i:)=w*v(i:)+c1*rand(11)*(xbest(i:)-x(i:))+c2*rand(11)*(gbest-x(i:));
%位置更新
x(i:)=x(i:)+v(i:);
x(i:) = rem(x(i:)objnum)/double(objnum);
index1=find(x(i:)<=0);
if ~isempty(index1)
x(iindex1)=rand(size(index1));
end
x(i:)=ceil(4*x(i:));
end
%% 计算个体适应度
pxPrior(:)=0;
rxPrior(:)=0;
cxPrior(:)=0;
for i=1:xSize
for j=1:Dim %控制类别
pxPrior(i) = pxPrior(i)+P(x(ij)j); %计算粒子i 价值
rxPrior(i) = rxPrior(i)+R(x(ij)j); %计算粒子i 体积
cxPrior(i) = cxPrior(i)+C(x(ij)j); %计算粒子i 重量
end
end
%% 更新粒子历史最佳
for i=1:xSize
%现在的支配原有的,替代原有的
if ((px(i)rxPrior(i))) ||((abs(px(i)-pxPrior(i)) && (rx(i)>rxPrior(i)))||((px(i)weight)
xbest(i:)=x(i:);%没有记录目标值
pxbest(i)=pxPrior(i);rxbest(i)=rxPrior(i);cxbest(i)=cxPrior(i);
end
%彼此不受支配,随机决定
if ~( ((px(i)rxP
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-05-20 15:01 多目标perota优化问题\
文件 422 2018-05-17 14:20 多目标perota优化问题\data.mat
文件 6048 2018-05-17 14:20 多目标perota优化问题\main.m
- 上一篇:PSO优化BP神经网络模型.zip
- 下一篇:小波神经网络matlab详细代码
评论
共有 条评论