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

news2024/9/21 5:31:51

在这里插入图片描述

总述

蚁群方法求解二元函数的最大值。蚂蚁群先随机分布在定义域内,如下:
在这里插入图片描述
计算结束后,得到如下的分布,再计算分布均值,得到此时的自变量取值,因为是二元函数,所以有两个自变量,带入 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上下界,共四个参数,如下:
在这里插入图片描述
如需修改上下界,修改上面四个数即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1984518.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt 实战(9)窗体 | 9.1、QWidget

文章目录 一、QWidget1、定义与概念2、继承体系3、常用特性3.1、事件处理3.2、布局管理3.3、子控件与父子关系3.4、右键菜单 4、注意事项5、总结 前言: 在Qt这一强大的跨平台C图形用户界面应用程序开发框架中,QWidget扮演着至关重要的角色。作为所有用户…

【日记】为啥家族原发性高血压的人还喜欢喝酒啊……(442 字)

正文 今天跟人吵了一下午架,因为有一张报表换了新表,所有人都不知道怎么报。上级行一个想法,我一个想法。吵完都发现对方说得有道理,于是决定明天问省分行。难绷。草台班子。 鱼儿说他最近喜欢上了喝酒。我们劝他的同时&#xff0…

太阳光度计CE-318数据处理

太阳光度计CE-318数据处理 备注:处理公式 在我国近海,α的值在0到3之间,所以他们相对误差最大不超过25%,而通过查阅相关资料,北京地区α的值可以近似的取1.665。 大气是不断运动的,气溶胶在短时间内也可…

【网络安全】https协议的加密方案避免中间人攻击(MITM攻击)导致的数据泄露风险

目录 引言 概念准备 中间人 加密 数据摘要 && 数据指纹 数字签名 密钥加密 中间人攻击 CA证书 https加密的解决方案 个人主页:东洛的克莱斯韦克-CSDN博客 引言 http在应用层协议中是明文传输协议,它是通信双方传输数据时的一种约定。【…

超声波便携式气象站:精准监测,随身携带

在追求高效与便捷的今天,超声波便携式气象站以其独特魅力脱颖而出,成为众多行业及户外爱好者的理想选择。超声波便携式气象站采用多采集装置一体式设计,不仅实现了体积的小型化与重量的轻量化,更便于用户随身携带,随时…

期权杠杆与期货杠杆的区别是什么?

期权与股指期货在杠杆性上展现出截然不同的特性,这些特性对投资者的策略选择具有深远影响。首先,股指期货采用保证金制度,其杠杆比例是恒定的,无论市场如何波动,投资者在月初设定的十倍杠杆到月尾仍保持不变。相比之下…

STM32常见的下载方式有三种

经过对比,推荐使用 SWD下载,只需要一个仿真器(如jLINK、ST LINK、 CMSIS DAP 等),比较方便。 不推荐使用串口下载(速度慢、无法仿真和调试)和 JTAG 下载(占用 IO 多)。

Java语言程序设计基础篇_编程练习题*16.7 (设置时钟的时间)

*16.7 (设置时钟的时间) 编写一个程序,显示一个时钟,并通过在三个文本域中输入小时、分钟和秒 钟来设置时钟的时间,如图16-38b 所示。使用程序清单14-21的ClockPane改变时钟大小使其居于面板中央 习题思路 实例化一个ClockPane(在程序清单1…

【网络安全渗透测试零基础入门必知必会】之什么是文件包含漏洞分类(非常详细)零基础入门到精通,收藏这一篇就够了

一、前言 这是大白给粉丝盆友们整理的网络安全渗透测试入门阶段文件包含渗透与防御第1篇。 本文主要讲解什么是文件包含漏洞、本地文件包含漏洞 喜欢的朋友们,记得给大白点赞支持和收藏一下,关注我,学习黑客技术。 一、什么是文件包含漏洞…

the request was rejected because no multipart boundary was found

文章目录 1. 需求描述2. 报错信息3. 探索过程1. 使用postman 排除后端错误2. 搜索网上的解决方法3. 解决方法 1. 需求描述 想要在前端上传一个PDF 发票,经过后端解析PDF之后,将想要的值自动回填到对应的输入框中 2. 报错信息 org.apache.tomcat.util.…

VSCode远程调试Linux程序

VS 安装CodeRunner插件 菜单→添加配置→lunch.json中设置如下: program填入要调试的文件 {"version": "0.2.0","configurations": [{"name": "gdb renderPng","type": "cppdbg","re…

为什么某央企可以抓到红队攻击,而你不行?

国家HVV行动从2016年到2024年已经是第9年了,HVV行动目的就是保卫国家关键基础设施的网络安全行动,更是一场实战化的网络攻击与防御实战,这些年来红队攻击手段层出不穷,最为典型的就是 0/N Day、弱口令、社工钓鱼等,也极…

北京青蓝智慧科技ITSS服务经理:长安链ChainBridge“链桥”问世 加速国家级区块链网络互联互通

8月5日,据国家区块链技术创新中心消息,我国首个完全自主控制的区块链软硬件技术系统——长安链,正式推出了全场景技术平台ChainBridge“链桥”。 此平台能够支持所有异构和同构的区块链进行协作,满足跨领域、跨地域、跨行业及跨层…

用Java手写jvm之模拟方法调用指令invokexxx和方法返回指令xreturn

写在前面 源码 。 本文一起看下方法调用相关的指令invokexxx以及方法返回(栈帧弹出线程栈)相关的指令xReturn 。 1:正文 因为invokexxx指令和普通的指令不同,会创建一个新的栈帧,并压倒操作数栈中,所以我…

《黑神话:悟空》在PS5上优化得不错 能达到2K/60帧

《黑神话:悟空》是今年最受玩家期待的游戏之一,但许多粉丝担心该作优化不佳,因为其使用的是虚幻5引擎。虚幻5引擎会导致性能问题出现,游戏 科学的新作也将面临同样问题。但有新报告称,《黑神话》PS5版优化得相当不错&a…

UE 后期处理

UE4后期处理材质的一些应用(上) - 哔哩哔哩 (bilibili.com) UE4后期处理材质的一些应用(下) - 哔哩哔哩 (bilibili.com) 后期处理材质的作用 后期处理材质使您能够设置与后期处理一起使用的材质,以创建破坏的视觉屏幕…

免费【2024】springboot 二手图书交易系统的设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

PyCharm找不到Python了咋办

Python发生了重装的,且新的路径和原有路径不同,就会出现如下的错误: 解决办法: 点开PyCharm菜单的File/Setting 然后: 有上图的提示,说明需要将原来的venv进行清空。 如此操作之后,原来的红色…

交通预测数据文件梳理:PEMS04

文章目录 前言一、PEMS04.csv文件二、adj_PEMS04.pkl文件三、adj_PEMS04_distance.pkl文件四、PEMS04.npz文件 前言 最近做的实验比较多,对于交通预测数据的各种文件和文件中的数据格式理解愈加混乱,因此打算重新做一遍梳理来加深实验数据集的理解&…

【矩阵对角线求和】求一个3*3矩阵对角线元素之和

求一个3*3矩阵对角线元素之和&#xff0c;使用C语言实现 具体代码&#xff1a; #include<stdio.h>int main(){float a[3][3],sum0;printf("请输入3x3矩阵的元素&#xff08;按行输入&#xff09;&#xff1a;\n");for(int i0;i<3;i){for(int j0;j<3;j)…