MATLAB代码下载|蚁群算法|计算一元函数最小值

在这里插入图片描述

程序总述

程序使用蚁群优化的方法,计算一元函数(单输入单输出非线性函数)在定义域内的最小值。

函数形式

待计算最小值的函数形式如下:
x 4 − 0.2 ∗ c o s ( 3 x ∗ π ) + 0.6 x^4 - 0.2 * cos(3x * \pi) + 0.6 x40.2cos(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

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB卡尔曼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值