基于鸡群优化算法的线性规划问题求解matlab程序

基于鸡群优化算法的线性规划问题求解matlab程序

1 鸡群优化算法简介

新型的仿生学算法—鸡群优化算法,它模拟群的等级制度和鸡群的群体活动行为。在特殊的等级制度下鸡群中不同鸡种搜寻食物时存在着竞争。公鸡搜索食物能力强,适应值小;母鸡其次;小鸡搜索食物能力最弱,适应值最大。为了简化,文中通过下列规则理想化鸡群算法:鸡群按公鸡个数来分组,每组由一只公鸡、一些母鸡和小鸡组成,有几只公鸡就有几组。分组中,公鸡搜索能力最强,处于统治地位,适应值最小;搜索能力稍差的母鸡紧跟在公鸡周围搜索食物,适应度值稍大;其中一些母鸡还带领小鸡,小鸡搜索能力最差,只在母鸡周围搜索食物,适应度值最大,实现局部搜索功能。在等级制度下,分组中公鸡的统治关系和母鸡 - 小鸡的母子关系将会改变。通过适应度值来建立这种等级秩序,并随机分组建立公鸡与母鸡的关系,随机建立母鸡—小鸡的母子关系。鸡群中,适应度值越小的个体越占有优势,可以优先获得食物,并且统领适应度值大的个体。适应度值最小的个体对应鸡群中的公鸡,稍大的对应于母鸡,最大的对应于小鸡,在这种等级秩序下它们以组为单位合作,并按照各自的运动规律更新位置,进行搜索,最终搜索到最佳的觅食位置,即得到最优解。
基于鸡群优化算法的线性规划问题求解matlab程序_第1张图片

2 线性规划算例
基于鸡群优化算法的线性规划问题求解matlab程序_第2张图片

3 鸡群优化算法求解结果

1)迭代曲线

基于鸡群优化算法的线性规划问题求解matlab程序_第3张图片
2)求解答案
基于鸡群优化算法的线性规划问题求解matlab程序_第4张图片
由求解结果可知,计算算法求解与答案相差较大,效果不理想。

4 matlab程序
1)主函数

%% 鸡群优化算法
close all; 
clear 
clc

ntr=1; % number of runs
for tr=1:ntr
    ton=cputime;
    pd=3; % problem dimension变量个数
    nt=500; % flock size种群规模

    AP=0.01;%awareness probability
    [x, l, u]=init(nt,pd); % initialization function

    xn=x;
    ft=fitness(xn,nt,pd); % fitness function evaluation

    mem=x;
    fit_mem=ft;
    tmax=300; % maximum number of iterations
    for t=1:tmax
        num=ceil(nt*rand(1,nt));
        for i=1:nt
            if rand>AP
%                 disp(num2str(rand));
                xnew(i,:)= x(i,:)+2*rand*(mem(num(i),:)-x(i,:));
            else
                for j=1:pd
                    xnew(i,j)=[u(j)-(u(j)-l(j))*rand];
                end
            end
        end

        xn=xnew;
        ft=fitness(xn,nt,pd); % fitness function
        % update position
        for i=1:nt
            x1=xnew(i,1);
            x2=xnew(i,2);
            if 2*(sqrt(2)*x1+x2)/(sqrt(2)*x1^2+2*x1*x2)-2<=0 && 2*x2/(sqrt(2)*x1^2+2*x1*x2)-2<=0 &&  2/(sqrt(2)*x2+x1)-2<=0 &&  x1>=0 &&  x1<=1 &&  x2>=0 &&  x2<=1

                x(i,:)=xnew(i,:);
                if ft(i)

你可能感兴趣的:(线性规划,智能算法,求目标最优,matlab,算法,开发语言)