MATLAB模拟退火算法、遗传算法、蚁群算法、粒子群算法

概况

模拟退火算法、遗传算法、蚁群算法、粒子群算法等算法,都是属于概率算法,不绝对,不迅速,能用其它方式解决的问题,不要用这些相对复杂的算法,比如有明确的线性关系或者非线性对应关系。这里的概率算法是指摇骰子式的算法,虽然这些算法的特定规则,很大程度能保证找到比较合适的结果,但是对于复杂的多最值图像,也未必取得令人满意的结果。为了解决这个问题,发展出了自适应模拟退火算法,自适应遗传算法等改进型,以及遗传-粒子群混合型算法。

Rastrigin函数

表达式: f(x) = ∑(A+x^2 - A*cos(2π * x))

所以,二维Rastrigin函数表达式

绘图如下,最大值约80.7

optimtool工具

这是一个神奇的工具 ,旧版本(2006a以前)没有,新版本(比如2023)也没有, 2014a版本没有粒子群等,可以用2016?

模拟退火,速度比遗传慢一点,最大值检测非常好,最小值不理想。

遗传算法,最大值检测非常好,最小值检测要比sa好一些的。

其它参考

以下连接可以用学习自适应遗传算法的手撸写法,全部都是外部链接,不需要VIP可见。

https://www.cnblogs.com/yezuhui/p/6853257.html

https://www.cnblogs.com/ncepubye/p/12724070.html

演化算法原理与实战(一)遗传算法(GA)原理与Matlab实现 - 知乎

复制代码
    Function = @(x) -(x-5).^2; 
    Fitness  = sum(Function(Population),2);

R2023a版本推荐Function的这种写法。

复制代码
%%百度生成的sa算法,它自己叫asa自适应模拟退火
function [bestSol, bestFitness] = asa(objFunc, nVar, lb, ub, MaxIt, T0, Tf)
    % objFunc:目标函数
    % nVar:变量数量
    % lb:变量下界
    % ub:变量上界
    % MaxIt:最大迭代次数
    % T0:初始温度
    % Tf:最终温度
    
    Dimension = nVar; % 变量维数
    Iteration = MaxIt; % 迭代次数
    T = T0; % 初始温度
    r = 0.98; % 温度降低的速率
    bestSol = rand(1, Dimension).*(ub - lb) + lb; % 初始解
    bestFitness = objFunc(bestSol); % 初始解的适应度
    fitness = bestFitness; % 当前解的适应度
    Sol = bestSol; % 当前解
    Temp = T; % 当前温度
 
    for iter = 1:Iteration
        newSol = rand(1, Dimension).*(ub - lb) + lb; % 产生新解
        newFitness = objFunc(newSol); % 新解的适应度
        
        if newFitness < fitness
            Sol = newSol;
            fitness = newFitness;
        elseif exp(-(newFitness - fitness)/Temp) > rand()
            Sol = newSol;
            fitness = newFitness;
        end
        
        if fitness < bestFitness
            bestSol = Sol;
            bestFitness = fitness;
        end
        
        Temp = Temp * r; % 降低温度
    end
end
相关推荐
念何架构之路1 小时前
Go语言加密算法
数据结构·算法·哈希算法
AI科技星1 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
失去的青春---夕阳下的奔跑1 小时前
560. 和为 K 的子数组
数据结构·算法·leetcode
砥锋1 小时前
纯NumPy手写两层GCN:从零开始理解图神经网络核心思想
机器学习
Larcher2 小时前
🔥 告别抓瞎:用 Claude Code (cc) 优雅接手与维护已有项目
javascript·机器学习·前端框架
黎阳之光2 小时前
黎阳之光:以视频孪生重构智慧医院信息化,打造高标项目核心竞争力
大数据·人工智能·物联网·算法·数字孪生
丷丩2 小时前
三级缓存下MVT地图瓦片服务性能优化策略
算法·缓存·性能优化·gis·geoai-up
m0_629494732 小时前
LeetCode 热题 100-----25.回文链表
数据结构·算法·leetcode·链表
大模型最新论文速读3 小时前
PreFT:只在 prefill 时使用 LoRA,推理速度翻倍效果不降
论文阅读·人工智能·深度学习·机器学习·自然语言处理
ʚ希希ɞ ྀ3 小时前
单词拆分----dp
算法