• 【群智能算法】光学显微镜算法 OMA算法【Matlab代码#59】



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


    1. 光学显微镜算法(OMA)

    光学显微镜算法(Optical Microscope Algorithm,OMA)是受显微镜放大倍数启发的一种新的元启发式算法,可用于解决工程优化问题。

    新颖的 OMA 具有鲁棒性、易于实现且使用较少控制参数的特点,可用于解决各种数值优化问题。

    OMA 是一种基于物理的算法,它模拟观察者放大物体的过程,从观察者的眼睛开始,然后通过显微镜镜头。OMA用于获得最佳目标对象的四步过程如下图所示。
    在这里插入图片描述

    1.1 物镜放大倍数

    该算法中目标物体的放大倍数遵循复合显微镜使用的放大原理,并使用公式(1)进行建模。
    M t o t a l = M O ∗ M E (1) M_{total}=M_{O}*M_{E}\tag1 Mtotal=MOME(1)
    其中, M t o t a l M_{total} Mtotal代表显微镜的总视觉放大倍数, M O M_{O} MO是物镜的放大倍数, M E M_{E} ME并且是目镜的放大倍数。物镜的放大倍率方程一般用用公式(2)表示:
    M O = L f 0 (2) M_{O}=\frac{L}{f_{0}}\tag2 MO=f0L(2)
    其中, L L L是显微镜的镜筒长度, f 0 f_{0} f0是物镜的焦距。要计算这两个值,需要从最佳目标对象的位置进行参考( M b e s t M_{best} Mbest),用物镜放大。
    修改后的目标对象 M i , n e w M_{i,new} Mi,new的数学表达式为:
    M i , n e w = M i + m r ∗ 1.40 ∗ M b e s t (3) M_{i,new}=M_{i}+m^{r}*1.40*M_{best}\tag3 Mi,new=Mi+mr1.40Mbest(3)
    修改后的目标对象( M i , n e w M_{i,new} Mi,new)然后与当前物体进行比较,选择两者中较好的一个作为最佳放大倍数。

    1.2 目镜放大倍数

    显微镜的第二个透镜是目镜,它是继物镜之后用来放大物体的。目镜的放大倍率方程一般用公式(4)表示:
    M O = D f e (4) M_{O}=\frac{D}{f_{e}}\tag4 MO=feD(4)
    其中, D D D是最短视觉距离, f e f_{e} fe并且是目镜的焦距。目镜阶段是高级放大倍率的更具体的阶段。因此,为了确定两者的长度,需要从用目镜放大的局部搜索空间的距离作为参考。
    为了模拟目镜的放大效果,根据所选目标物体之间的距离确定放大空间( i i i)和群体中的另一个目标对象( j j j)。目标对象( i i i)被随机选择来计算局部搜索空间。

    这种修改后的放大倍数被认为是对本地搜索空间的有效利用。公式(5)和(6)分别用于模拟目标物体的放大和修改模式。
    s p a c e = { M j − M i , i f f ( M i ) > = f ( M j ) M i − M j , i f f ( M i ) < f ( M j ) (5) space=\left\{

    MjMi,iff(Mi)>=f(Mj)MiMj,iff(Mi)<f(Mj)" role="presentation" style="position: relative;">MjMi,iff(Mi)>=f(Mj)MiMj,iff(Mi)<f(Mj)
    \right.\tag5 space={MjMi,iff(Mi)>=f(Mj)MiMj,iff(Mi)<f(Mj)(5)
    M i , n e w = M i + m r ∗ 0.55 ∗ s p a c e (6) M_{i,new}=M_{i}+m^{r}*0.55*space\tag6 Mi,new=Mi+mr0.55space(6)

    2. 部分代码展示

    close all
    clear 
    clc
    
    SearchAgents_no=30; % Number of search agents
    
    Function_name='F1'; % Name of the test function that can be from F1 to F23 (Table 1,2,3 in the paper)
    
    Max_iteration=500; % Maximum numbef of iterations
    
    % Load details of the selected benchmark function
    [lb,ub,dim,fobj]=Get_Functions_details(Function_name);
    
    [OMA_Best_score,OMA_Best_pos,OMA_cg_curve]=OMA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
    
    figure('Position',[500 500 660 290])
    % Draw search space
    subplot(1,2,1);
    func_plot(Function_name);
    title('Parameter space')
    xlabel('x_1');
    ylabel('x_2');
    zlabel([Function_name,'( x_1 , x_2 )'])
    
    % Draw objective space
    subplot(1,2,2);
    semilogy(OMA_cg_curve,'Color','r','Linewidth',1.5)
    title('OMA优化过程')
    xlabel('迭代次数');
    ylabel('适应度值曲线');
    
    axis tight
    grid on
    box on
    legend('OMA')
    
    display(['The best solution obtained by OMA is : ', num2str(OMA_Best_pos)]);
    display(['The best optimal value of the objective funciton found by OMA is : ', num2str(OMA_Best_score)]);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    3. 仿真结果展示

    在这里插入图片描述

    4. 资源获取说明

    可以获取完整代码资源。👇👇👇👀名片

  • 相关阅读:
    服务器中了elbie勒索病毒解决办法,elbie勒索病毒解密数据恢复
    spring boot是如何加载Tomcat的
    高性能实体类转换工具MapStruct 使用教程
    计算机网络——数据链路层功能概述、封装成帧、差错控制、流量控制与可靠传输机制
    4.正则提取html中的img标签的src内容
    奶粉市场陷入尴尬局面,飞鹤何去何从?
    Centos7.4重启提示gurb2/i386-pc/normal.mod not found
    淘宝天猫API:buyer_cart_add-添加到购物车
    Elasticsearch索引数据的路由规则与自定义路由分发
    分布式Session如何存储
  • 原文地址:https://blog.csdn.net/xiongyajun123/article/details/133620784