apso matlab,APSO算法指导
% 改进的快速粒子群优化算法 (APSO):
function apso
Lb=[6 50 0.032 0.040 0.007 0.08 300 ]; %下边界
Ub=[8 64 0.038 0.050 0.010 0.13 350]; %上边界
% 默认参数
para=[40 100 0.95]; %[粒子数,迭代次数,gama参数]
% APSO 优化求解函数
[gbest,fmin]=pso_mincon(@result,@constraint,Lb,Ub,para);
% 输出结果
Bestsolution=gbest % 全局最优个体
fmin
%% 目标函数
function f=result(x)
f=-((1.5*10^(-3)*sin(x(1)*pi()/180))/(((x(7)/((7.5398*10^8)*x(3)*x(5)*sin(pi()*x(1)/180)))*(99.591*x(3))*(1-exp(-3.9*10^(-3)/x(3)))*(sqrt(1+9*(x(6))^2))*(3*10^(-7)+1.2582*10^(-6)*(sin(pi()*x(1)/180)/x(7))^0.3 ))*(54.3914/(25.2340*x(7)*x(6)*x(3)/(sin(x(1)*pi()/180))+32.4657))))
% 非线性约束
function [g,geq]=constraint(x)
% 不等式限制条件
A=tan(x(2)*pi()/180);
B=x(4)*sin(x(1)*pi()/180)-0.1*x(6)*x(3);
C=0.1*x(4)*sin(x(1)*pi()/180)+x(6)*x(3);
D=sin(x(1)*pi()/180)*2*pi()*x(5)*x(3);
R=x(7)/D;
Q=tan(x(1)*pi()/180);
F=B/C
S=x(3)/x(5)
t=54.407/((x(7)*x(6)*x(3)*25.234/sin(x(1)*pi()/180))+32.4657)
g(1)=F-A;
g(2)=R-2.5;
g(3)=x(6)-Q;
g(4)=2.5-S;
g(5)=S-4;
g(6)=0.15-t;
g(7)=t-0.3;
g(8)=50-x(7);
g(9)=x(7)-350;
% 如果没有等式约束,则置geq=[];
geq=[];
%% APSO Solver
function [gbest,fbest]=pso_mincon(fhandle,fnonlin,Lb,Ub,para)
if nargin<=7, %用来判定输入变量的个数
para=[40 200 0.95];
end
n=para(1);% 粒子种群大小
time=para(2); %时间步长,迭代次数
gamma=para(3); %gama参数
scale=abs(Ub-Lb); %取值区间
% 验证约束条件是否合乎条件
if abs(length(Lb)-length(Ub))>0,
disp('Constraints must have equal size');
return
end
alpha=0.2; % alpha=[0,1]粒子随机衰减因子
beta=0.5; % 收敛速度(0->1)=(slow->fast);
% 初始化粒子群
best=init_pso(n,Lb,Ub);
fbest=1.0e+100;
% 迭代开始
for t=1:time,
%寻找全局最优个体
for i=1:n,
fval=Fun(fhandle,fnonlin,best(i,:));
% 更新最有个体
if fval<=fbest,
gbest=best(i,:);
fbest=fval;
end
end
% 随机性衰减因子
alpha=newPara(alpha,gamma);
% 更新粒子位置
best=pso_move(best,gbest,alpha,beta,Lb,Ub);
% 结果显示
str=strcat('Best estimates: gbest=',num2str(gbest));
str=strcat(str,' iteration='); str=strcat(str,num2str(t));
disp(str);
fitness1(t)=fbest;
plot(fitness1,'r','Linewidth',2)
grid on
hold on
title('适应度')
end
% 初始化粒子函数
function [guess]=init_pso(n,Lb,Ub)
ndim=length(Lb);
for i=1:n,
guess(i,1:ndim)=Lb+rand(1,ndim).*(Ub-Lb);
end
%更新所有的粒子 toward (xo,yo)
function ns=pso_move(best,gbest,alpha,beta,Lb,Ub)
% 增加粒子在上下边界区间内的随机性
n=size(best,1); ndim=size(best,2);
scale=(Ub-Lb);
for i=1:n,
ns(i,:)=best(i,:)+beta*(gbest-best(i,:))+alpha.*randn(1,ndim).*scale;
end
ns=findrange(ns,Lb,Ub);
% 边界函数
function ns=findrange(ns,Lb,Ub)
n=length(ns);
for i=1:n,
% 下边界约束
ns_tmp=ns(i,:);
I=ns_tmp
ns_tmp(I)=Lb(I);
% 上边界约束
J=ns_tmp>Ub;
ns_tmp(J)=Ub(J);
%更新粒子
ns(i,:)=ns_tmp;
end
% 随机性衰减因子
function alpha=newPara(alpha,gamma);
alpha=alpha*gamma;
% 带约束的d维目标函数的求解
function z=Fun(fhandle,fnonlin,u)
% 目标
z=fhandle(u);
z=z+getconstraints(fnonlin,u); % 非线性约束
function Z=getconstraints(fnonlin,u)
% 罚常数 >> 1
PEN=10^15;
lam=PEN; lameq=PEN;
Z=0;
% 非线性约束
[g,geq]=fnonlin(u);
%通过不等式约束建立罚函数
for k=1:length(g),
Z=Z+ lam*g(k)^2*getH(g(k));
end
% 等式条件约束
for k=1:length(geq),
Z=Z+lameq*geq(k)^2*geteqH(geq(k));
end
% Test if inequalities
function H=getH(g)
if g<=0,
H=0;
else
H=1;
end
% Test if equalities hold
function H=geteqH(g)
if g==0,
H=0;
else
H=1;
end
apso matlab,APSO算法指导相关推荐
- 《MATLAB智能算法30个案例》:第17章 基于PSO工具箱的函数寻优算法
<MATLAB智能算法30个案例>:第17章 基于PSO工具箱的函数寻优算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析& ...
- 视频教程-深入学习matlab免疫算法7讲-Matlab
深入学习matlab免疫算法7讲 图像和算法等领域有多年研究和项目经验:指导发表科技核心期刊经验丰富:多次指导数学建模爱好者参赛. 宋星星 ¥20.00 立即订阅 扫码下载「CSDN程序员学院APP」 ...
- 【锂电池容量预测】基于matlab灰狼算法优化LSTM神经网络锂电池容量预测【含Matlab源码 2004期】
一.灰狼算法简介 1 前言: 灰狼优化算法(Grey Wolf Optimizer,GWO)由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优化算法.该算法受到了灰狼 ...
- 【路径规划】基于matlab DWA算法机器人局部避障路径规划【含Matlab源码 890期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[路径规划]基于matlab DWA算法机器人局部避障路径规划[含Matlab源码 890期] 获取代码方式2: 通过订阅紫极神光博客付费 ...
- 漫画:小白为了面试如何刷题?(呕心沥血算法指导篇)
来自:小浩算法 三年高考,五年刷题.leetcode不算从其他各处收录的题目,单就自己的题库,总共有1600+,如果按照每天刷一道的话,总共需要5年.那我们真的需要把这些题目全部刷完吗?如果不是,刷多 ...
- matlab bs2rv.m,Matlab智能算法之遗传算法(一)
Matlab智能算法之遗传算法(1) 以往写过的一篇文章了,旧了 1)Sheffield遗传算法工具箱的安装 我共享了下修改过文件名和后缀名的原版工具箱,地址为:http://pan.baidu.co ...
- matlab中存档算法代码,MATLAB 智能算法超级学习手册中程序代码
[实例简介] MATLAB 智能算法超级学习手册中程序代码 [实例截图] [核心代码] dc90ef43-7920-434e-bdb8-0636c31c0b44 └── MATLAB 智能算法超级学习 ...
- MATLAB常用算法与应用实例分享来袭!
小天从大学开始接触数学建模,便开启资料收集功能.经过近几年的积累和沉淀,再加上对数学建模领域的深入研究,收集整理了丰富的数学建模资料,内容涵盖"MATLAB常用算法"," ...
- 归并有效排序算法matlab,科学网—[用MATLAB写算法]之排序算法2)归并排序merge sort - 徐勇刚的博文...
归并排序(merge sort)是一种利用分治策略(divide and conquer)进行排序的算法,算法复杂度为 $\Theta (nlog_{2}n)$ . filename: merge_s ...
最新文章
- [转]Introduction of iSCSI Target in Windows Server 2012
- 电气设计 | 图说电气成套柜的布线安装
- 翻转句子中单词的顺序
- ToString() 格式化字符串总结
- 每日一题(17)—— 关键字volatile的作用和三个不同的应用场合
- C++基础17-纯虚函数和抽象类
- 如何设置几个循环出来的span其中一个宽度_css几个概念
- untiy3d坐标系以及向量运算
- Landsat系列卫星
- SEM和TEM的相同点和不同点
- 【防火墙QOS 基于策略的带宽控制】
- 什么原因可能会造成Android手机卡顿?
- 如何在网站中添加音乐
- 独立产品灵感周刊 DecoHack #029 - 随便逛逛谷歌街景
- 我来告诉你哪个银行的信用卡最好用!
- 关于计算机研究生报考方向的简要介绍
- python 爬虫登陆学校教务系统
- 10000内的回文数c语言,回文数
- java 截取mp3/aac
- Ubuntu 安装有线网卡驱动
热门文章
- Php二叉树对称,PHP如何实现判断二叉树是否对称
- scp复制linux系统的文件文件到本机(windows)以及本机文件复制到远程的命令
- java撤销上一步_CAD快速入门技巧:CAD软件中撤销操作的方法汇总
- 三角形周长最短问题_2019年中考数学压轴题分析——最短路径问题8:造桥选址...
- vb 通过php连接mysql数据库连接_php连接mysql数据库
- mysql数据库访问组件_mysql数据库访问组件
- 不显示样式 引用bootstrap_Bootstrap的引用样式
- 实现机器学习的循序渐进指南V——支持向量机
- python 帮助 autocad_python 使用pyautocad操作AutoCAD
- php矢量瓦片,矢量瓦片 - SegmentFault 思否