function [ bestPosition, fitValue ] = PSOFUN( CostFun,nVar,VarMin,VarMax,MaxIt,nPop )
%% PSO Parameters
CostFunction=@(x) CostFun(x); % Cost Function
w=1; % Inertia Weight
wdamp=0.99; % Inertia Weight Damping Ratio
c1=1.5; % Personal Learning Coefficient
c2=2.0; % Global Learning Coefficient
VarSize=[1 nVar]; % Size of Decision Variables Matrix
% Velocity Limits
VelMax=0.1*(VarMax-VarMin);
VelMin=-VelMax;
%% Initialization
empty_particle.Position=[];
empty_particle.Cost=[];
empty_particle.Velocity=[];
empty_particle.Best.Position=[];
empty_particle.Best.Cost=[];
particle=repmat(empty_particle,nPop,1);
GlobalBest.Cost=inf;
for i=1:nPop
% Initialize Position
particle(i).Position=unifrnd(VarMin,VarMax,VarSize);
% Initialize Velocity
particle(i).Velocity=zeros(VarSize);
% Evaluation
particle(i).Cost=CostFunction(particle(i).Position);
% Update Personal Best
particle(i).Best.Position=particle(i).Position;
particle(i).Best.Cost=particle(i).Cost;
% Update Global Best
if particle(i).Best.Cost<GlobalBest.Cost
GlobalBest=particle(i).Best;
end
end
BestCost=zeros(MaxIt,1);
%% PSO Main Loop
for it=1:MaxIt
for i=1:nPop
% Update Velocity
particle(i).Velocity = w*particle(i).Velocity ...
+c1*rand(VarSize).*(particle(i).Best.Position-particle(i).Position) ...
+c2*rand(VarSize).*(GlobalBest.Position-particle(i).Position);
% Apply Velocity Limits
particle(i).Velocity = max(particle(i).Velocity,VelMin);
particle(i).Velocity = min(particle(i).Velocity,VelMax);
% Update Position
particle(i).Position = particle(i).Position + particle(i).Velocity;
% Velocity Mirror Effect
IsOutside=(particle(i).Position<VarMin | particle(i).Position>VarMax);
particle(i).Velocity(IsOutside)=-particle(i).Velocity(IsOutside);
% Apply Position Limits
particle(i).Position = max(particle(i).Position,VarMin);
particle(i).Position = min(particle(i).Position,VarMax);
% Evaluation
particle(i).Cost = CostFunction(particle(i).Position);
% Update Personal Best
if particle(i).Cost<particle(i).Best.Cost
particle(i).Best.Position=particle(i).Position;
particle(i).Best.Cost=particle(i).Cost;
% Update Global Best
if particle(i).Best.Cost<GlobalBest.Cost
GlobalBest=particle(i).Best;
end
end
end
BestCost(it)=GlobalBest.Cost;
w=w*wdamp;
end
bestPosition = GlobalBest.Position;
fitValue = GlobalBest.Cost;
%disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCost(it))]);
end
电磁MATLAB
- 粉丝: 4207
- 资源: 38
最新资源
- 7次b样条多目标轨迹规划,实现时间能量冲击最优,基于NSGA2多目标轨迹规划,遗传算法 代码带注释
- 麻雀优化算法优化随机森林回归预测(SSA-RF) 麻雀优化算法2020最新算法 matlab 代码 同时还有哈里斯鹰,狼群算法,粒子群优化算法,麻雀优化算法,秃鹰优化算法,龙格库塔优化算法,EO优化算
- 基于STM32指纹密码锁设计 程序、仿真、原文 本设计主要由stm32f103rct6单片机、AS608指纹模块、LCD1602显示屏、AT24C02存储模块、继电器和指示灯组成,该指纹密码锁是以st
- 多微网优化模型matlab 采用yalmip编程,考虑三个微网间的交互功率、和电网的交互功率以及风光、微燃机等主体出力,以成本最优作为目标函数,程序运行稳定
- omron欧姆龙NX程序NX1P2-1040DT,搭载思勤EtherCAT远程输入输出IO模块 全自动电池焊接检测机 涵盖人机配方一键型功能,故障记录功能,产量统计及OEE功能,TCP,视觉通信控制
- 逆变器重复控制 采用simulink仿真嵌入C语言实现了逆变器重复控制模型的搭建,整个仿真没有任何模块,全是用C语言写的代码 重复控制算法,陷波器,二阶低通滤波器,都是用C代码实现,且重复控制算法
- ruoyi-v3-node-module
- 采用simulink仿真嵌入C语言实现了逆变器的搭建,整个仿真没有一个模块,所有算法均用C语言实现,并对C语言代码给出了详尽的注释 逆变器输出的电压THD仅有0.4% 可以根据这个例子写自己的算法
- 逆变器仿真 在simulink中搭建了逆变器仿真模型,采用电压电流双闭环控制,采用LC滤波器,输出电压完美的跟随给定,且THD仅1% 整个仿真全部离散化,采用离散解析器,控制与采样环节全部自己手工
- 在simulink中搭建了PWM整流电路 直流测电压采用软启动的方式,使直流测电压逐渐上升,达到给定值时再加入负载 在s-function中编写软启动程序,实现软启动,直流测电容电压在软启动过程中
- 在simulink中搭建了两电平PWM整流器,采用电压电流双闭环控制,采用基于双二阶广义积分器的锁相环锁电网相位 实现了单位功率因数,且并网电流THD小于5%,符合并网要求 整个仿真全部离散化
- MMC模块化多电平流器pscad电磁暂态仿真模型 交流系统对称与不对称MMC-HVDC MMC-MTDC 双端 四端直流电网的都有
- 基于粒子群算法的综合能源优化问题 建立包含冷热电气的综合能源系统,以综合能源运行成本最优为目标,建立优化运行模型 采用粒子群算法进行优化求解 得到各个冷热电设备的最优运行计划 里面包含一篇参考的资料
- 基于遗传算法的最优潮流 以IEEE30节点的输电网为研究对象 以系统发电成本最小为目标函数 以机组出力为优化变量 其中出力与成本的关系是经典的二次函数关系 通过优化求解得到最佳机组出力
- 基于多目标粒子群算法的微电网优化 首先构建了含风光柴储的微电网模型,之后以风光柴储运行成本最低和风光消纳最大为目标,建立了多目标优化模型,模型考虑功率平衡 储能SOC等约束 通过模型求解 得到帕累托
- 蜂鸟e203系统移植,可以移植到其他开发板 现有移植到 arty a7开发板的
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
- 4
- 5
- 6
前往页