资源描述:
《无约束连续函数优化的人工蚁群算法通用matlab源》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、无约束连续函数优化的人工蚁群算法通用MATLAB源题目:无约束连续函数优化的人工蚁群算法通用MATLAB源码此源码是对人工蚁群算法的一种实现,用于无约束连续函数的优化求解,对于含有约束的情况,可以先使用罚函数等方法,把问题处理成无约束的模型,再使用本源码进行求解。function[BESTX,BESTY,ALLX,ALLY]=ACOUCP(K,N,Rho,Q,Lambda,LB,UB)%%AntColonyOptimizationforUnconstrainedContinuousProblem%%ACOUCP.m%%无约束连续函数的蚁群优化算法%%此函数实现蚁群算法
2、,用于求解无约束连续函数最小化问题%%对于最大化问题,请先将其加负号转化为最小化问题%%输入参数列表%K 迭代次数%N 蚁群规模%Rho 信息素蒸发系数,取值0~1之间,推荐取值0.7~0.95%Q 信息素增加强度,大于0,推荐取值1左右%Lambda 蚂蚁爬行速度,取值0~1之间,推荐取值0.1~0.5%LB 决策变量的下界,M×1的向量%UB 决策变量的上界,M×1的向量%%输出参数列表%BESTX K×1细胞结构,每一个元素是M×1向量,记录每一代的最优蚂蚁%BESTY K×1矩阵,记录每
3、一代的最优蚂蚁的评价函数值%ALLX K×1细胞结构,每一个元素是M×N矩阵,记录每一代蚂蚁的位置%ALLY K×N矩阵,记录每一代蚂蚁的评价函数值%%测试函数设置%测试函数用单独的子函数编写好,在子函数FIT.m中修改要调用的测试函数名即可%注意:决策变量的下界LB和上界UB,要与测试函数保持一致%%参考设置%[BESTX,BESTY,ALLX,ALLY]=ACOUCP(50,30,0.95,1,0.5,LB,UB)%%第一步:初始化M=length(LB);%决策变量的个数%蚁群位置初始化X=zeros(M,N);fori=1:M x=unifrn
4、d(LB(i),UB(i),1,N); X(i,:)=x;end%输出变量初始化ALLX=cell(K,1);%细胞结构,每一个元素是M×N矩阵,记录每一代的个体ALLY=zeros(K,N);%K×N矩阵,记录每一代评价函数值BESTX=cell(K,1);%细胞结构,每一个元素是M×1向量,记录每一代的最优个体BESTY=zeros(K,1);%K×1矩阵,记录每一代的最优个体的评价函数值k=1;%迭代计数器初始化Tau=ones(1,N);%信息素初始化Y=zeros(1,N);%适应值初始化%%第二步:迭代过程whilek<=K YY=zeros(1,
5、N); forn=1:N x=X(:,n); YY(n)=FIT(x); end maxYY=max(YY); temppos=find(YY==maxYY); POS=temppos(1); %蚂蚁随机探路 forn=1:N ifn~=POS x=X(:,n); Fx=FIT(x); mx=GaussMutation(x,LB,UB); ifFmx6、 Y(n)=Fmx; elseifrand>1-(1/(sqrt(k))) X(:,n)=mx; Y(n)=Fmx; else X(:,n)=x; Y(n)=Fx; end end end forn=1:N ifn~=POS x=X(:,n); Fx=FIT(x); mx=GaussMutation(x
7、,LB,UB); Fmx=FIT(mx); ifFmx1-(1/(sqrt(k))) X(:,n)=mx; Y(n)=Fmx; else X(:,n)=x; Y(n)=Fx; end end end %朝信息素最大的地方移动 forn=1:N