matlab经济调度,用粒子群解决微电网的经济调度问题

程序如下:

clc;

clear all;

%%%%%%%%%%%%%%%%%初始化参数%%%%%%%%%%%%%%%%%%%%%

c1=1.49445;

c2=1.49445;

sizepop=200; %种群数

maxgen=200; %迭代次数

%粒子更新速度

vmax=1;

vmin=-1;

%种群

n=6;   %粒子维数

% X=zeros(N,n);  %初始化粒子位置

% V=zeros(N,n);  %初始化粒子速度

popmin=[ 10 10 10 10 10 10 10]; %机组下限

popmax=[ 60 60 150 120 150 60]; %机组上限

for i=1:sizepop

%随机产生一个种群

pop(i,:)=rands(1,n);%初始种群

v(i,:)=rands(1,n);  %初始化速度

%计算适应度

fitness(i)=fun(pop(i,:));

end

%找最好的适应度值

[bestfitness bestindex]=min(fitness);

zbest=pop(bestindex,:);%全局最佳

gbest=pop;%个体最佳

fitnessgbest=fitness;%个体最佳适应度值

fitnesszbest=bestfitness;%全局最佳适应度值

%%迭代寻优

for i=1:maxgen

for j=1:sizepop

%速度更新

v(j,:)=v(j,:)+c1*rand*(gbest(j,:)-pop(j,:))+c2*rand*(zbest-pop(j,:));

v(j,find(pop(j,:)>vmax))=vmax;

v(j,find(pop(j,:)

%种群更新

pop(j,:)=pop(j,:)+v(j,:);

pop(j,find(pop(j,:)>popmax))=popmax;

pop(j,find(pop(j,:)

%自适应变异

if rand>0.8

k=ceil(n*rand);

pop(j,k)=rand;

end

%个体最优更新

if fitness(j)

gbest(j,:)=pop(j,:)

fitnessgbest(j)=fitness(j);

end

%群体最优更新

if fitness(j)

zbest=pop(j,:);

fitnesszbest=fitness(j);

end

yy(i)=fitnesszbest;

end

end

zbest;

适应值函数为:

function y=fun(P)

n=6;

y=0;

vv=0;

%%%%%%%%%%%%%%%%%燃料成本系数%%%%%%%%%%%%%%%%%%%%%%%%%%%

a=[2 2.4 0.8 1.2 0.8 2.0 ];

b=[2.0 1.5 1.8 1.0 1.8 1.5 ];

c=[10 10 20 10 20 10];

for i=1:n

y=y+a(i)+b(i)*P(i)+c(i)*P(i)^2;

vv=vv+P(i);

end

显示错误如下:

??? Subscripted assignment dimension mismatch.

Error in ==> pso at 41

pop(j,find(pop(j,:)>popmax))=popmax;

??? Input argument "P" is undefined.

Error in ==> fun at 11

y=y+a(i)+b(i)*P(i)+c(i)*P(i)^2;

怎么回事?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值