程序总述
程序使用蚁群优化的方法,计算一元函数(单输入单输出非线性函数)在定义域内的最小值。
函数形式
待计算最小值的函数形式如下:
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