【启发式算法】同核分子优化算法 Homonuclear Molecules Optimization HMO算法【Matlab代码#70】

文章目录

    • 【`获取资源`请见文章第4节:资源获取】
    • 1. 算法简介
    • 2. 部分代码展示
    • 3. 仿真结果展示
    • 4. 资源获取


获取资源请见文章第4节:资源获取】


1. 算法简介

同核分子优化算法(Homonuclear Molecules Optimization,HMO)是一种新的元启发式算法,用于优化复杂和非线性问题。根据玻尔原子模型和同核分子的结构,HMO的灵感来自于原子周围电子的排列。该算法基于在给定量子数的搜索空间中创建一组原子的初始种群以及与每个原子(搜索代理)相关联的电子。在每次迭代中,选择每个原子的最佳电子作为原子核的新位置,多个原子向具有最佳解的原子移动,形成同核分子。总体而言,HMO优于一些常见的经典算法,比如GA和PSO,可以与新的高效算法(如EO)竞争。HMO算法于2022年发表。

2. 部分代码展示

%% The main Loops of HMO for it=1:MaxIt      % The iterations loop 
for i=1:N           % The atoms loop (number of atoms) % These two loops are related to the electrons
for j=1:N_Layers    % The layers loop (number of layers, depend on the type of atom)
for k=1:Layer(j,1)  % The electrons loopsAtom(i).Layer(j).Electrons(k).X = Atom(i).X+unifrnd(-Atom(i).R(j),Atom(i).R(j),Size);  % See (Eq. 8)% The electrons position lmitsAtom(i).Layer(j).Electrons(k).X = max(Atom(i).Layer(j).Electrons(k).X,Min);            Atom(i).Layer(j).Electrons(k).X = min(Atom(i).Layer(j).Electrons(k).X,Max);  % Calculating the fitness of electronsAtom(i).Layer(j).Electrons(k).Cost = Function(Atom(i).Layer(j).Electrons(k).X);% Updating the best electron of each atomif Atom(i).Layer(j).Electrons(k).Cost<Best_Electron(i).Cost Best_Electron(i).X = Atom(i).Layer(j).Electrons(k).X;Best_Electron(i).Cost = Atom(i).Layer(j).Electrons(k).Cost;L_Best_Electron(i,1) = j;end
end
end% Updating the atoms positionsAtom(i).X = Best_Electron(i).X;  % See (Eq. 8)Atom(i).Cost = Best_Electron(i).Cost;% Updating the paramount Atom if Atom(i).Cost<Atom(N_Best).CostA = Atom(N_Best).X;B = Atom(N_Best).Cost;Atom(N_Best).X = Atom(i).X;Atom(N_Best).Cost = Atom(i).Cost;Atom(i).X = A;Atom(i).Cost = B;end% Reduction of Bohr radiusif  L_Best_Electron(i,1)==1 Atom(i).R = Atom(i).R.*exp(-10*Dr(i,1)/MaxIt); % See (Eq. 12)Dr(i,1) = Dr(i,1)+1;   elseAtom(i).R = Atom(i).R;   endend

3. 仿真结果展示

在这里插入图片描述
在这里插入图片描述

4. 资源获取

获取完整代码资源,👇👇👇👀名片

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytorch+tensorboard

安装依赖 pip install teorboard pip install torch_tb_profiler了解teorboard 记录并可视化标量[组]、图片[组]。 如何使用 第一步:构建模型,记录中间值,写入summarywriter 每次写入一个标量add_scalar 比如: from torch.utils.tensorboard import SummaryWriter wr…

【Linux】进程地址空间详解

前言 在我们学习C语言或者C时肯定都听过老师讲过地址的概念而且老师肯定还会讲栈区、堆区等区域的概念&#xff0c;那么这个地址是指的物理内存地址吗&#xff1f;这里这些区域又是如何划分的呢&#xff1f; 我们在使用C语言的malloc或者C的new函数开辟空间时&#xff0c;开辟…

鸿蒙应用开发学习:用Marquee组件做个跑马灯

一、前言 鸿蒙应用的学习持续进行中&#xff0c;这两天阅读官方的API参考文档&#xff0c;发现一个有趣的组件——Marquee&#xff0c;用它做了个跑马灯&#xff0c;做个学习记录。 二、参考资料 官网文档链接如下&#xff1a; https://developer.huawei.com/consumer/cn/d…

【python分析实战】成本:揭示电商平台月度开支与成本结构占比 - 过于详细 【收藏】

重点关注本文思路&#xff0c;用python分析&#xff0c;方便大家实验复现&#xff0c;代码每次都用全量的&#xff0c;其他工具自行选择。 全文3000字&#xff0c;阅读10min&#xff0c;操作1小时 企业案例实战欢迎关注专栏 每日更新&#xff1a;https://blog.csdn.net/cciehl/…

一键换脸的facefusion

FaceFusion 一个开源换脸软件&#xff0c;提供UI界面&#xff0c;启动后可直接在浏览器上面上传图片进行换脸操作。 电脑环境win10&#xff0c;软件pycharm&#xff0c;需要提前安装好python环境&#xff0c;推荐使用Anaconda3。关注文章下方公共号发送 “ 软件安装包 ”可以获…

ai智能生成文章,6款ai写作工具高效解决

ai智能生成文章已经成为现代写作的重要工具之一。随着技术的不断进步&#xff0c;越来越多的AI写作工具出现在市场上&#xff0c;为写作者们提供了高效解决方案。在本文中&#xff0c;我将介绍5款值得关注的AI写作工具&#xff0c;并探讨它们的特点和优势。 第一款ai写作工具是…

【SpringBoot框架篇】37.使用gRPC实现远程服务调用

文章目录 RPC简介gPRC简介protobuf1.文件编写规范2.字段类型3.定义服务(Services) 在Spring Boot中使用grpc1.父工程pom配置2.grpc-api模块2.1.pom配置2.2.proto文件编写2.3.把proto文件编译成class文件 3.grpc-server模块3.1.pom文件和application.yaml3.2.实现grpc-api模块的…

计算机组成原理 3 运算器

定点补码加/减法运算 补码加减法的实现 补码加法 &#xff1a; [X &#xff0b; Y] 补 [X] 补 &#xff0b; [Y] 补 和的补码 补码的和 补码减法 &#xff1a; [X−Y] 补 [X] 补 &#xff0b; [−Y] 补 [X] 补 −[Y] 补 差的补码 补码的差 求补公式 &#xff1a; [−…

【Entity Framework】Code First 数据批注

【Entity Framework】Code First 数据批注 文章目录 【Entity Framework】Code First 数据批注一、概述二、模型二、键Key三、组合键四、外键-ForeigKey第一种&#xff1a;指定导航属性&#xff0c;会自动生成外键&#xff0c;命名规则为&#xff1a;“对象名称_主键名“第二种…

用c++实现猴子偷桃、Fibonacci数列

4.1.2 猴子吃桃 【问题】一只猴子摘了很多桃子&#xff0c;每天吃现有桃子的一半多一个&#xff0c;到第10天时只有一个桃子&#xff0c;问原有桃子多少个? 【想法】设an表示第n天桃子的个数&#xff0c;猴子吃桃问题存在如下递推式&#xff1a; 【算法实现】由于每天的桃子…

vue2 export default写法,computed、methods的使用

<template><div><h2>{{nameAll}}</h2><h2>{{method}}</h2><h2>{{tt()}}</h2><h2>{{firstName}}</h2><h2>更新后赋值数据&#xff1a;{{lastName}}</h2><h2>赋值数据:{{writeValue}}</h2>…

[Qt] QString::fromLocal8Bit 的使用误区

QString::fromLocal8Bit 是一个平台相关的函数。默认情况下在 Windows 下 就是 gbk 转 utf-8 ,在 Linux就应该是无事发生。因为Linux平台默认的编码方式就是 utf-8 可以通过 void QTextCodec::setCodecForLocale(QTextCodec *c)来修改 Qt默认的编码方式。如下 第一输出乱码的…