优化算法程序
⑴ 粒子群优化算法(PSO)的matlab运行程序~~谢谢大家啦!
%不知道你具体的问题是什么,下面是一个最基本的pso算法解决函数极值问题,如果是一些大型的问题,需要对速度、惯性常数、和自适应变异做进一步优化,希望对你有帮助
function y = fun(x)
y=-20*exp(-0.2*sqrt((x(1)^2+x(2)^2)/2))-exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)+20+2.71289;
%下面是主程序
%% 清空环境
clc
clear
%% 参数初始化
%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;
maxgen=200; % 进化次数
sizepop=20; %种群规模
Vmax=1;%速度限制
Vmin=-1;
popmax=5;%种群限制
popmin=-5;
%% 产生初始粒子和速度
for i=1:sizepop
%随机产生一个种群
pop(i,:)=5*rands(1,2); %初始种群
V(i,:)=rands(1,2); %初始化速度
%计算适应度
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(V(j,:)>Vmax))=Vmax;
V(j,find(V(j,:)<Vmin))=Vmin;
%种群更新
pop(j,:)=pop(j,:)+0.5*V(j,:);
pop(j,find(pop(j,:)>popmax))=popmax;
pop(j,find(pop(j,:)<popmin))=popmin;
%自适应变异(避免粒子群算法陷入局部最优)
if rand>0.8
k=ceil(2*rand);%ceil朝正无穷大方向取整
pop(j,k)=rand;
end
%适应度值
fitness(j)=fun(pop(j,:));
%个体最优更新
if fitness(j) < fitnessgbest(j)
gbest(j,:) = pop(j,:);
fitnessgbest(j) = fitness(j);
end
%群体最优更新
if fitness(j) < fitnesszbest
zbest = pop(j,:);
fitnesszbest = fitness(j);
end
end
yy(i)=fitnesszbest;
end
%% 结果分析
plot(yy)
title(['适应度曲线 ' '终止代数=' num2str(maxgen)]);
xlabel('进化代数');ylabel('适应度');
⑵ 关于群智能优化算法程序的问题
POS是一个二维数组 POS[i][j], 设其大小为 n * m
POS(i,:) 在matlab里表示 一个大小为m的一维数组 其中元素为 POS[i][0],...,POS[i][m-1]
⑶ 哪位大神能帮我翻译一下这段程序-------粒子群优化算法
清除所有
中图分类号
% % %的0418s标准粒群优化算法程序2007.1.9郏宣耀%测试函数:F(x,y)= 100(x ^ 2-y)^ 2 +(1-x)^ 2,2.048<x,y<2.048%求解函数最小值
tic
%程序初始化
n=10;
Ni = 1000;%设置进化代数
设置种群规模大小popsize = 50;%
max_velocity = 100 *的(1,n);%最大速度限制
XMAX = 100 *的(1,n);xmin = 100 *的(1,n);
C1 = 2;C2 = 2;iw_min = 0.4;iw_max = 0.9;
%%%%%%%%%
流行= 0(popsize,N + 1)= 0;记忆体(popsize,n + 1);速度=零(popsize,N);最优=零(1,n + 1);
记忆体(:,n + 1)=信息*人(popsize,1);进行(n + 1)= inf;
我= 1:popsize
对于j = 1:n
流行(I,J)= Xmin(J)+ rand() *(Xmax(J)- XMIN(j));
速度(I,J)= Xmin(J)+ rand() *(Xmax(J)- XMIN(j));
结束
结束
对于ni=1:ni
我= 1:popsize
弹出(i,n + 1)= 0;
对于j = 1:n
POP(i,n + 1)= POP(i,n + 1)+ POP(i,j)2;
结束
如果流行(i,n + 1)< pbest(i,n + 1)
记忆体(我,:)=流行(我,:);
如果记忆体(i,n + 1)< gBest(n + 1)
gBest = pbest(我,:);
结束
结束
结束
IW(Ni)= iw_max -(iw_max-iw_min)*镍/镍;
我= 1:popsize
对于j = 1:n
速度(I,J)= IW(Ni)*速度(I,J)+ C1 * rand() *(pbest(i,j)(i,j)流行)+ C2 * rand() *(gBest(J)-(i,j)的流行率更新速度);
如果速度(I,J)> max_velocity(J)
速度(I,J)= max_velocity(J);
“(i,j)的速度有max_velocity(J)
速度(I,J)= - max_velocity(J);
结束
弹出(i,j)=弹出(i,j)+速度(i,j);
如果流行(I,J)>Xmax(J)
流行(I,J)= Xmax(J);
“(i,j)流行<< XMIN(J)
流行(I,J)= Xmin(J);
结束
结束
结束
fbest1(Ni)= gBest(n + 1);
结束
FF1 = gBest(n + 1);
x=1:ni;
图形、符号学(x,fbest1,’B’);
传说('pso”);
xlabel('generation ');ylabel(“平均值”为标题的功能);('sphere功能);
⑷ 急求一些最优化算法的程序!比如说遗传算法、模拟退火、粒子群优化算法等等一些常见算法的程序。
google 网络。。。一堆一堆的。。。。。。
比如: http://www.google.com/search?hl=zh-CN&newwindow=1&biw=1280&bih=830&q=%E9%81%97%E4%BC%A0%E7%AE%97%E6%B3%95+%E7%A8%8B%E5%BA%8F&aq=f&aqi=g-g4g1g-g4g1&aql=&oq=
自己找找啊……
⑸ 求一个POA(逐步优化算法)的程序,最好详细一点,随便什么语言写的都行
这是一个POA算法(C#)的梯级电站优化计算的程序,来源于网络文库,代码太长,这里只给个连接。
http://wenku..com/link?url=__hjQbHSgEDNe_t882vty8EFstMni1VzBe
⑹ 求解非线性方程的的最优化算法C++程序
j是复数单位吗?可以试试http://dlib.net/,下面是个示例,我没有提供导数什么的,所以不稳定。它的用法和matlab挺像,你应该能搞定。
#include<dlib/optimization.h>
#include<iostream>
usingnamespacestd;
usingnamespacedlib;
typedefmatrix<double,2,1>column_vector;
typedefcomplex<double>complex_t;
intconstM=3;
staticmatrix<double,3,M>a;
voidinit(){
staticbooltag=true;
if(tag){
a=0,1,2,3,4,5,6,7,8;
tag=false;
}
}
doublefoo(constcolumn_vector&x){
init();
complex_tres;
for(inti=0;i!=a.nc();++i){
res+=exp(complex_t(
0,
a(0,i)+a(1,i)*x(0)+a(2,i)*x(1)
));
}
returnnorm(res)/M;
}
intmain(){
try{
column_vectorstarting_point;
starting_point=0,0;
doublemax_value=find_max_box_constrained(bfgs_search_strategy(),
objective_delta_stop_strategy(1e-9),
foo,derivative(foo),starting_point,-50,50);
cout<<"x0= "<<starting_point<<" foo(x0)="<<max_value<<" ";
}
catch(std::exceptionconst&e){
cerr<<e.what()<<" ";
}
return0;
}
运行结果:
⑺ 经济最优单目标遗传优化算法怎么实现
我给你一个标准遗传算法程序供你参考:
该程序是遗传算法优化BP神经网络函数极值寻优:
%% 该代码为基于神经网络遗传算法的系统极值寻优
%% 清空环境变量
clc
clear
%% 初始化遗传算法参数
%初始化参数
maxgen=100; %进化代数,即迭代次数
sizepop=20; %种群规模
pcross=[0.4]; %交叉概率选择,0和1之间
pmutation=[0.2]; %变异概率选择,0和1之间
lenchrom=[1 1]; %每个变量的字串长度,如果是浮点变量,则长度都为1
bound=[-5 5;-5 5]; %数据范围
indivials=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体
avgfitness=[]; %每一代种群的平均适应度
bestfitness=[]; %每一代种群的最佳适应度
bestchrom=[]; %适应度最好的染色体
%% 初始化种群计算适应度值
% 初始化种群
for i=1:sizepop
%随机产生一个种群
indivials.chrom(i,:)=Code(lenchrom,bound);
x=indivials.chrom(i,:);
%计算适应度
indivials.fitness(i)=fun(x); %染色体的适应度
end
%找最好的染色体
[bestfitness bestindex]=min(indivials.fitness);
bestchrom=indivials.chrom(bestindex,:); %最好的染色体
avgfitness=sum(indivials.fitness)/sizepop; %染色体的平均适应度
% 记录每一代进化中最好的适应度和平均适应度
trace=[avgfitness bestfitness];
%% 迭代寻优
% 进化开始
for i=1:maxgen
i
% 选择
indivials=Select(indivials,sizepop);
avgfitness=sum(indivials.fitness)/sizepop;
%交叉
indivials.chrom=Cross(pcross,lenchrom,indivials.chrom,sizepop,bound);
% 变异
indivials.chrom=Mutation(pmutation,lenchrom,indivials.chrom,sizepop,[i maxgen],bound);
% 计算适应度
for j=1:sizepop
x=indivials.chrom(j,:); %解码
indivials.fitness(j)=fun(x);
end
%找到最小和最大适应度的染色体及它们在种群中的位置
[newbestfitness,newbestindex]=min(indivials.fitness);
[worestfitness,worestindex]=max(indivials.fitness);
% 代替上一次进化中最好的染色体
if bestfitness>newbestfitness
bestfitness=newbestfitness;
bestchrom=indivials.chrom(newbestindex,:);
end
indivials.chrom(worestindex,:)=bestchrom;
indivials.fitness(worestindex)=bestfitness;
avgfitness=sum(indivials.fitness)/sizepop;
trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度
end
%进化结束
%% 结果分析
[r c]=size(trace);
plot([1:r]',trace(:,2),'r-');
title('适应度曲线','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
axis([0,100,0,1])
disp('适应度 变量');
x=bestchrom;
% 窗口显示
disp([bestfitness x]);
⑻ 优化算法是什么呢
优化算法是指对算法的有关性能进行优化,如时间复杂度、空间复杂度、正确性、健壮性。
大数据时代到来,算法要处理数据的数量级也越来越大以及处理问题的场景千变万化。为了增强算法的处理问题的能力,对算法进行优化是必不可少的。算法优化一般是对算法结构和收敛性进行优化。
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。
遗传算法
遗传算法也是受自然科学的启发。这类算法的运行过程是先随机生成一组解,称之为种群。在优化过程中的每一步,算法会计算整个种群的成本函数,从而得到一个有关题解的排序,在对题解排序之后,一个新的种群----称之为下一代就被创建出来了。首先,我们将当前种群中位于最顶端的题解加入其所在的新种群中,称之为精英选拔法。新种群中的余下部分是由修改最优解后形成的全新解组成。
常用的有两种修改题解的方法。其中一种称为变异,其做法是对一个既有解进行微小的、简单的、随机的改变;修改题解的另一种方法称为交叉或配对,这种方法是选取最优解种的两个解,然后将它们按某种方式进行组合。尔后,这一过程会一直重复进行,直到达到指定的迭代次数,或者连续经过数代后题解都没有改善时停止。
⑼ matlab最优化算法有哪些
matlab最优化程序包括
无约束一维极值问题 进退法 黄金分割法 斐波那契法 牛顿法基本牛顿法 全局牛顿法 割线法 抛物线法 三次插值法 可接受搜索法 Goidstein法 Wolfe.Powell法
单纯形搜索法 Powell法 最速下降法 共轭梯度法 牛顿法 修正牛顿法 拟牛顿法 信赖域法 显式最速下降法, Rosen梯度投影法 罚函数法 外点罚函数法
内点罚函数法 混合罚函数法 乘子法 G-N法 修正G-N法 L-M法 线性规划 单纯形法 修正单纯形法 大M法 变量有界单纯形法 整数规划 割平面法 分支定界法 0-1规划 二次规划
拉格朗曰法 起作用集算法 路径跟踪法 粒子群优化算法 基本粒子群算法 带压缩因子的粒子群算法 权重改进的粒子群算法 线性递减权重法 自适应权重法 随机权重法
变学习因子的粒子群算法 同步变化的学习因子 异步变化的学习因子 二阶粒子群算法 二阶振荡粒子群算法
⑽ 人工萤火虫群优化算法的流程是什么
人工萤火虫群优化算法流程如下:
1.初始化算法基本参数。
2.随机初始化萤火虫的位置,计算萤火虫的目标函数值作为各自最大萤光亮度。
3.计算群体中萤火虫的相对亮度I和吸引度β,根据相对亮度决定萤火虫的移动方向。
4.更新萤火虫的空间位置,对处在最佳位置的萤火虫进行随机扰动。
5.根据更新后萤火虫的位置,重新计算萤火虫的亮度。
6.当满足搜索精度或达到最大搜索次数时则转7.否则,搜索次数增加1,转3,进行下一次搜索。
7.输出全局最优值和个体最优值。