
程序总述
程序使用蚁群优化的方法,计算一元函数(单输入单输出非线性函数)在定义域内的最小值。
函数形式
待计算最小值的函数形式如下:
  
      
       
        
         
         
           x 
          
         
           4 
          
         
        
          − 
         
        
          0.2 
         
        
          ∗ 
         
        
          c 
         
        
          o 
         
        
          s 
         
        
          ( 
         
        
          3 
         
        
          x 
         
        
          ∗ 
         
        
          π 
         
        
          ) 
         
        
          + 
         
        
          0.6 
         
        
       
         x^4 - 0.2 * cos(3x * \pi) + 0.6 
        
       
     x4−0.2∗cos(3x∗π)+0.6
 在-1~1这段定义域内,函数图像如下:
 
可以根据自己的实际情况在m文件中进行修改:
 
程序运行结果
运行结果如下:
- 初始蚁群粒子分布情况:
  
 经优化后,蚁群的分布情况如下:
  
 在命令行,有如下的结果输出:
  
可见,算法计算得到的最小值为-0.415734,当自变量x=-0.042363时,可以取到上述的函数最小值。
源代码
部分代码如下:
% 蚁群求解一元函数最大值
% 2024-8-4/Ver1
clear;clc;close all;
rng(0);
Ants = 300; %蚂蚁数量
Times = 80; %仿真时长
Rou = 0.9;
P0 = 0.2;
x_lower = -1; %x轴范围下界
x_upper = 1; %x轴范围上界限
%% 随机生成蚁群位置
ant = zeros(Ants, 1);
for i = 1: Ants
    ant(i, 1) = x_lower + (x_upper - x_lower) * rand;
    Tau(i) = F(ant(i, 1));  % 信息素
end
step = 0.05; %网格密度
f = '(x.^4 - 0.2 * cos(3 * pi * x)  + 0.6)';
%% 画图
x= x_lower:step:x_upper;
z = eval(f);
figure;
plot(x,z)
hold on;
plot(ant(:, 1), Tau, 'k*');
title('函数形状与初始状态的粒子分布情况');
更多代码的下载链接见:https://download.csdn.net/download/callmeup/89617642















![[Java]栈--Stack](https://i-blog.csdnimg.cn/direct/fb888ae9823d46d589b826c77453f994.png#pic_center)



