clc,clear,close all
N=100; %粒子群规模
MaxDT=1000; %最大迭代次数
w=0.7298; %惯性权重w
c1=1.49618; %学习因子c1
c2=1.49618; %学习因子c2
vmax=[1 1];
vmin=[-1 -1];
xmax=[5 5];
xmin=[1 1];
%随机初始化粒子的位置和速度
j=1;
for i=1:N
x(i,:)=5*rand(1,2); %0到10之间的随机数(不同情况要改变)
% v(i,:)=rand(1,2);
if violent1(x(i,:))<0&&violent2(x(i,:))<0
p(j,:)=x(i,:); %初始化时把粒子位置设为个体最优位置
v(j,:)=rand(1,2);
j=j+1;
end
end
j=0;
x=[];x=p;
Np = size(p);
%根据两个函数确定最优位置适应度函数
Pbest=rand;
Pg=[4.5,2.3];
% for i=1:Np(1,1)
% if fitness2(p(i,:)) < Pbest && violent1(x(i,:))<0 && violent2(x(i,:))<0
% Pbest=fitness2(p(i,:));
% Pg=p(i,:);
% end
% end
%根据基本粒子群迭代公式进行一次进化迭代产生中间子代midfor i=1:N
for t=1:MaxDT
for i=1:Np
v(i,:)=w*v(i,:)+c1*rand*(p(i,:)-x(i,:))+c2*rand*(Pg-x(i,:));
mid(i,:)=x(i,:)+v(i,:); %中间代mid
end
%%速度限制%%
for i=1:Np
if v(i,:)>vmax
v(i,:)=vmax;
elseif v(i,:)<vmin
v(i,:)=vmin;
else
end
end
mid(i,:)=x(i,:)+v(i,:); %中间代mid;%位置更新
%%位置限制%%
for i=1:Np
if mid(i,:)>xmax
mid(i,:)=xmax;
elseif mid(i,:)<xmin
mid(i,:)=xmin;
else
end
end
%判进化选择
for i=1:Np
%若都一个可行,另一个不可行,则无条件选择可行解
if (violent1(x(i,:))<=0&&violent2(x(i,:))<=0) && (violent1(mid(i,:))>0&&violent2(mid(i,:))>0)
NextGeneration(i,:)=x(i,:);
end
%若都可行,选择适应度小的进入下一代
if (violent1(x(i,:))<=0&&violent2(x(i,:))<=0) && (violent1(mid(i,:))<=0&&violent2(mid(i,:))<=0)
if fitness2(x(i,:))<=fitness2(mid(i,:))
NextGeneration(i,:)=x(i,:);
else
NextGeneration(i,:)=mid(i,:);
end
end
%若都一个可行,另一个不可行,则无条件选择可行解
if (violent1(x(i,:))>0&&violent2(x(i,:))>0) && (violent1(mid(i,:))<=0&&violent2(mid(i,:))<=0)
NextGeneration(i,:)=mid(i,:);
end
%若两个都不可行,选择违背约束小的进入下一代
if (violent1(x(i,:))>0&&violent2(x(i,:))>0) && (violent1(mid(i,:))>0&&violent2(mid(i,:))>0)
if violent1(x(i,:))<violent1(mid(i,:))&violent2(x(i,:))<violent2(mid(i,:))
NextGeneration(i,:)=x(i,:);
else
NextGeneration(i,:)=mid(i,:);
end
end
end
%NextGeneration复制给更新的粒子群x
x=NextGeneration;
%下面进入主循环,迭代最大次数后输出优化结果
Nx=size(x);
%更新个体和全局最优位置
for i=1:Nx
if fitness2(x(i,:))<fitness2(p(i,:))&& violent1(p(i,:))<=0&& violent2(p(i,:))<=0
p(i,:)=x(i,:);
end
if fitness2(p(i,:))<Pbest && violent1(p(i,:))<=0&& violent2(p(i,:))<=0
Pbest= fitness2(p(i,:));
Pg=p(i,:);
end
end
y(t)=Pbest; %fitness2(Pg)
end
disp('函数的全局最优位置为:')
Solution=Pg
disp('函数的个体最优位置为:')
p(i,:)
disp('函数的最优值为')
Pbest
plot(y,'r','linewidth',2);
xlabel('进化代数');
ylabel('适应度');
title (‘最优个体适应度’)
grid on;axis tight
没有合适的资源?快使用搜索试试~ 我知道了~
基于Matlab实现PSO的机构优化仿真(源码+数据).rar
共30个文件
m:23个
asv:3个
png:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 111 浏览量
2023-05-20
17:28:02
上传
评论 1
收藏 121KB RAR 举报
温馨提示
1、资源内容:基于Matlab实现PSO的机构优化仿真(源码+数据).rar 2、适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 3、解压说明:本资源需要电脑端使用WinRAR、7zip等解压工具进行解压,没有解压工具的自行百度下载即可。 4、免责声明:本资源作为“参考资料”而不是“定制需求”不一定能够满足所有人的需求,需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。由于作者大厂工作较忙,不提供答疑服务,如不存在资源缺失问题概不负责,谢谢理解。
资源推荐
资源详情
资源评论
收起资源包目录
基于Matlab实现PSO的机构优化仿真(源码+数据).rar (30个子文件)
基于Matlab实现PSO的机构优化仿真(源码+数据)
随机方向
fun0.m 757B
g2.m 121B
untitled.fig 3KB
QQ截图未命名.png 47KB
suijifangxiangfa1.m 988B
g1.m 123B
工具箱
jihemiaoshu.m 526B
Untitled.m 613B
matlab.mat 4KB
cdj_g.m 263B
jfg_f.m 638B
lianganzhuchengxu.m 958B
QQ截图未命名.png 57KB
pso 改
fitness2.m 763B
pso2.m 3KB
violent2.m 154B
violent1.m 154B
pso
fitness2.m 766B
pso2.m 3KB
cdj_g.m 263B
violent1.m 104B
fitness2.asv 110B
惩罚函数法
cdj_g1.m 283B
zhuchengxu7.m 740B
jfg_f1.asv 659B
jfg_f1.m 668B
zhuchengxu7.asv 17KB
复合形
fuhexingfa.m 2KB
fhx2_HL.m 277B
fhx1_fg.m 748B
共 30 条
- 1
资源评论
- 一只傻祥�2024-04-13非常有用的资源,可以直接使用,对我很有用,果断支持!
- 小羊不呆2023-09-05资源是宝藏资源,实用也是真的实用,感谢大佬分享~
Matlab仿真实验室
- 粉丝: 2w+
- 资源: 2180
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功