MATLAB代码|蚁群算法|计算二元函数最大值

在这里插入图片描述

总述

蚁群方法求解二元函数的最大值。蚂蚁群先随机分布在定义域内,如下:
在这里插入图片描述
计算结束后,得到如下的分布,再计算分布均值,得到此时的自变量取值,因为是二元函数,所以有两个自变量,带入 F ( x , y ) F(x,y) F(x,y)中,得到对应的因变量,因变量即为求得的函数最大值。

待求函数的形式

选择如下非单调函数作为测试函数:
− ( x 4 + 3 y 4 − 0.2 ∗ c o s ( 3 x ∗ π ) − 0.4 ∗ c o s ( 4 y ∗ π ) + 0.6 ) -(x^4 + 3y^4 - 0.2 * cos(3x * \pi ) - 0.4 * cos(4y *\pi ) + 0.6) (x4+3y40.2cos(3xπ)0.4cos(4yπ)+0.6)
可以根据自己的实际情况进行修改

程序运行结果

运行程序后,蚁群寻找到使函数值最大的点,如下:
在这里插入图片描述
同时在命令行输出如下内容:
在这里插入图片描述

即:当x为 − 2.9 ∗ 1 0 − 4 -2.9*10^{-4} 2.9104、y为 − 1.37 ∗ 1 0 − 4 -1.37*10^{-4} 1.37104的时候,函数取得最大值,约为 1.38 ∗ 1 0 − 6 1.38*10^{-6} 1.38106

源代码

% 蚁群求解函数最大值
% 2024-7-31/Ver1
clear;clc;close all;
rng(0);
Ants = 300; %蚂蚁数量
Times = 80; %仿真时长
Rou = 0.9;
P0 = 0.2;
x_lower = -1; %x轴范围下限,下面的同理
y_lower = -1;
x_upper = 1;
y_upper = 1;
%% 随机生成蚁群位置
ant = zeros(Ants, 2);
for i = 1: Ants
    ant(i, 1) = x_lower + (x_upper - x_lower) * rand;
    ant(i, 2) = y_lower + (y_upper - y_lower) * rand;
    Tau(i) = F(ant(i, 1), ant(i, 2));  % 信息素
end

step = 0.05; %网格密度
f = '-(x.^4 + 3 * y.^4 - 0.2 * cos(3 * pi * x) - 0.4 * cos(4 * pi * y) + 0.6)';
%% 画图
fprintf('完整源代码下载链接:https://gf.bilibili.com/item/detail/1105973012');
[x, y] = meshgrid(x_lower:step:x_upper, y_lower:step:y_upper);

修改建议

主函数和计算函数里面各有一个目标函数,将其修改为自己想要的即可计算自己需要的函数最大值了。
更改函数定义域的方法:X和Y两个自变量,所以定义X的上下界和Y上下界,共四个参数,如下:
在这里插入图片描述
如需修改上下界,修改上面四个数即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MATLAB卡尔曼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值