资讯详情

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

解决基于烟花优化算法的线性规划问题matlab程序 1 烟花算法介绍 烟花算法 (Fireworks Algorithm),缩写为 FWA,它是一组受夜空烟花爆炸启发的群体智能算法。 在这里插入图片描述 1.1 烟花算法的起源和动机 通过模拟烟花爆炸同时进行多点爆炸性搜索,这可能是一种高效的搜索方法,不同于现有其他方法的新搜索方法,因此有了研究这种爆炸性搜索方法的想法,并将其命名为烟花算法(fireworks algorithm,FWA)。 虽然烟花算法的名称更直观、更简单,但由于它没有直接与优化问题建立直接联系,一些研究人员有时用烟花算法、烟花我们的烟花算法,如烟花优化算法、烟花爆炸算法、烟花爆炸优化算法、烟花爆炸搜索算法、爆炸搜索方法等。虽然有这些不同的名称,但原名烟花算法统一在这里,以避免混淆。

1.2 烟花算法的研究进展 自2010年谭颖教授等人发表烟花算法开创性论文以来,业界对烟花算法的研究逐渐深入和传播。通过对原烟花算法的详细深入分析,针对原烟花算法(FWA)缺点,提出了大量的改进方法,开发了各种改进算法,与其他方法混合,大大提高了原烟花算法的性能,研究了烟花算法解决不同类型优化问题的能力,大量研究人员进行了烟花算法的应用研究,给出了一些典型的成功应用案例。

2 线性规划算例 2.1算例 2.2答案 3 烟花算法求解结果

1)迭代曲线 2)求解答案 从求解结果可以看出,求解答案接近标准值,求解效果一般。

4 matlab程序 1)主函数

%% 烟花算法优化函数 %求函数最小值 %fitness适应度函数,N烟花数,D变量维数,M变化火花数,Er爆炸半径,En爆炸数目 %LB,UB分别是变量的上下界,T迭代次数,a,b限制爆炸数量的因素 clear;clc N=100;   % N烟花数 D=3;     % D变量维数 M=5;     % M变异火花数 En=10;    % En爆炸数目 Er=5;    % Er爆炸半径 a=0.3;   % a,b限制爆炸数量的因素 b=0.6; T=500;   % T为迭代次数  %求上下界最大值变量 LB=[0,0,0]; UB=[10,10,15];  N烟花的位置是随机的 x = zeros(N,D); for i=1:N     x(i,:)=LB rand(1,D).*(UB-LB); end %循环迭代 E_Spark=zeros(T,D,N); Fit = zeros(1,N); F = zeros(1,T); for t=1:T     %计算每个烟花适应度值     for i=1:N         Fit(i)=fitness(x(i,:));     end     [F(t),~]=min(Fit);     Fmin=min(Fit);     Fmax=max(Fit);     每个烟花的爆炸半径计算%E_R和爆炸数目E_N还有爆炸火花     E_R = zeros(1,N);     E_N = zeros(1,N);     for i=1:N         E_R(i)=Er*((Fit(i)-Fmin eps)/(sum(Fit)-N*Fmin eps));  %爆炸半径         E_N(i)=En*((Fmax-Fit(i) eps)/(N*Fmax-sum(Fit) eps));  %爆炸数目         if E_N(i)<a*En    % 限制爆炸数量             E_N(i)=round(a*En);         elseif E_N(i)>b*En             E_N(i)=round(b*En);         else             E_N(i)=round(E_N(i));         end         %产生爆炸火花 E_Spark         for j=2:(E_N(i) 1)              % 第一烟花共产E_N(i)个火花             E_Spark(1,:,i)=x(i,:);      % 将第一个烟花保存为第一个火花序列中的第一个,爆炸产生的火花从序列中的第二个开始(即三维数组每页的第一行)             h=E_R(i)*(-1 2*rand(1,D));  % 位置偏移             E_Spark(j,:,i)=x(i,:) h;    % 第一个烟花(三维数组的i页)产生j(三维数组j行)火花             for k=1:D   %越界检测                 if E_Spark(j,k,i)>UB(k)||E_Spark(j,k,i)<LB(k)  由%第i烟花(三维数组的i页)产生的第j火花(三维数组的j行)的第k变量(三维数组的k列)                     E_Spark(j,k,i)=LB(k) rand*(UB(k)-LB(k));   %映射规则                 end             end         end     end     %产生高斯变异火花Mut_Spark,随机选择M烟花进行变异     Mut=randperm(N);          % 随机产生1-N内的N个数     for m1=1:M                % M个变异烟花         m=Mut(m1);            % 随机选择烟花         for n=1:E_N(m)             e=1 sqrt(1)*randn(1,D); %高斯变异参数,方差为1,平均值为1*D随机矩阵             E_Spark(n,:,m)=E_Spark(n,:,m).*e;             for k=1:D   %越界检测                 if E_Spark(n,k,m)>UB(k)||E_Spark(n,k,m)<LB(k)  由%第i烟花(三维数组的i页)产生的第j火花(三维数组的j行)的第k变量(三维数组的k列)                     E_Spark(n,k,m)=LB(k) rand*(UB(k)-LB(k));   %映射规则                 end             end         end     end          操作选择%,从烟花、爆炸性火花和变异性火花(包括在三维数组中)中选择N个优秀个体作为下一代(留下最佳个体,然后留下其余的N-一是按轮盘赌原则选择)     n=sum(E_N) N; 烟花、火花总数%     q=1;     Fitness = zeros(1,1);     E_Sum = zeros(1,D);     for i=1:N  % 三维转二维         for j=1:(E_N(i) 1)  % 每页三维数组的行数(即每个烟花及其产生的火花数之和)             E_Sum(q,:)=E_Spark(j,:,i); % 烟花和火花总量             Fitness(q)=fitness(E_Sum(q,:)); % 计算所有烟花和火花的适应性,选择最佳个体             q=q 1;         end     end     [Fitness,X]=sort(Fitness);  % 适应性升序排列     x(1,:)=E_Sum(X(1),:);    % 最优个体     dist=pdist(E_Sum);       % 解决火花两两个欧式距离     S=squareform(dist);      % 重新排列距离向量n*n数组,第一行之和是第一一个火花到其他火花的距离之和     P = zeros(1,n);     for i=1:n                % 分别求各行之和         P(i)=sum(S(i,:));     end     [P,Ix]=sort(P,'descend');% 按降序排列距离,选择前N-一是指个体密度高,也就是说,当个体周围有许多其他候选人时,选择个体的概率会降低     for i=1:(N-1)         x(i 1,:)=E_Sum(Ix(i),:);     end end  for i=1:N     Fit(i)=fitness(x(i,:)); end   %求最小值输出 [F(T),Y]=min(Fit); fmin=min(F); xm=x(Y,:); fprintf('xm=%f  %f\n',xm(1),xm(2)); fprintf('fmin=%f\n',fmin); figure(1); t=1:T; plot(t,F) xlabel(‘迭代次数’) ylabel(目标函数值) title('FWA算法迭代曲线; 。。。。。。。。略 

5 完整程序链接: https://mp.weixin.qq.com/s?__biz=Mzg4MTc1MjE2Mg==&mid=2247484329&idx=1&sn=7704db9e479be00e8f84328677f5b873&chksm=cf6062a4f817ebb29dde31c46f59fcdc3d89d619779c3c166dbc6a4bc8431220fdc04bb10be5&token=1023455607&lang=zh_CN#rd

标签: mtc本安型磁致伸缩位移传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台