【啃书】《智能优化算法及其MATLAB实例》例7.2模拟退火算法进行函数寻优

2023-11-03

问题描述

在这里插入图片描述

在这里插入图片描述

仿真过程

matlab源码

%该脚本要命名为func2.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%适应度函数%%%%%%%%%%%%%%%%%%%%%%%%%
function value=func2(x,y)
%value=5*cos(x*y)+x*y+y*y*y;
value=3*cos(x*y)+x+y*y;
%20201017lu注:该matlab代码成功在matlabR2019a运行
%%%%%%%%%%%%%%%%%%%%%%模拟退火算法解决函数极值%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%初始化%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;                      %清除所有变量
close all;                      %清图
clc;                            %清屏
XMAX= 4;                        %搜索变量x最大值
XMIN= -4;                       %搜索变量x最小值
YMAX= 4;                        %搜索变量y最大值
YMIN= -4;                       %搜索变量y最小值
%%%%%%%%%%%%%%%%%%%%%%%%%%%冷却表参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
L = 100;                        %马可夫链长度
K = 0.99;                       %衰减参数
S = 0.02;                       %步长因子
T=100;                          %初始温度
YZ = 1e-8;                      %容差
P = 0;                          %Metropolis过程中总接受点
%%%%%%%%%%%%%%%%%%%%%%%%%%随机选点 初值设定%%%%%%%%%%%%%%%%%%%%%%%%%
PreX =  rand * (XMAX-XMIN)+XMIN;
PreY =  rand * (YMAX-YMIN)+YMIN; 
PreBestX = PreX;
PreBestY = PreY;
PreX =  rand * (XMAX-XMIN)+XMIN;
PreY =  rand * (YMAX-YMIN)+YMIN; 
BestX = PreX;
BestY = PreY;
%%%%%%%%%%%每迭代一次退火一次(降温), 直到满足迭代条件为止%%%%%%%%%%%%
deta=abs( func2( BestX,BestY)-func2 (PreBestX, PreBestY));
while (deta > YZ) && (T>0.001)
    T=K*T; 
    %%%%%%%%%%%%%%%%%%%%%在当前温度T下迭代次数%%%%%%%%%%%%%%%%%%%%%%
    for i=1:L  
        %%%%%%%%%%%%%%%%%在此点附近随机选下一点%%%%%%%%%%%%%%%%%%%%%
        p=0;
        while p==0
            NextX = PreX + S* (rand * (XMAX-XMIN)+XMIN);
            NextY = PreY + S*( rand * (YMAX-YMIN)+YMIN);
            if (NextX >= XMIN && NextX <= XMAX && NextY >=...
                    YMIN && NextY <= YMAX)
                p=1;
            end
        end
        %%%%%%%%%%%%%%%%%%%%%%%是否全局最优解%%%%%%%%%%%%%%%%%%%%%%
        if (func2(BestX,BestY) > func2(NextX,NextY))
            %%%%%%%%%%%%%%%%%%保留上一个最优解%%%%%%%%%%%%%%%%%%%%%
            PreBestX = BestX;
            PreBestY = BestY;
            %%%%%%%%%%%%%%%%%%%此为新的最优解%%%%%%%%%%%%%%%%%%%%%
            BestX=NextX;
            BestY=NextY;
        end
        %%%%%%%%%%%%%%%%%%%%%%%% Metropolis过程%%%%%%%%%%%%%%%%%%%
        if( func2(PreX,PreY) - func2(NextX,NextY) > 0 )
            %%%%%%%%%%%%%%%%%%%%%%%接受新解%%%%%%%%%%%%%%%%%%%%%%%%
            PreX=NextX;
            PreY=NextY;
            P=P+1;
        else
            changer = -1*(func2(NextX,NextY)-func2(PreX,PreY))/ T ;
            p1=exp(changer);
            %%%%%%%%%%%%%%%%%%%%%%%%接受较差的解%%%%%%%%%%%%%%%%%%%%
            if p1 > rand        
                PreX=NextX;
                PreY=NextY;
                P=P+1;         
            end
        end
        trace(P+1)=func2(BestX, BestY);
    end
    deta=abs( func2( BestX,BestY)-func2 (PreBestX, PreBestY));
end
disp('最小值在点:');
BestX
BestY
disp( '最小值为:');
func2(BestX, BestY)
plot(trace(2:end))
xlabel('迭代次数')
ylabel('目标函数值')
title('适应度进化曲线')
最小值在点:

BestX =

    -3.999987170818327e+00


BestY =

    -7.521340802922394e-01

最小值为:

ans =

    -6.407760829998221e+00

在这里插入图片描述

中 智能优化算法及其MATLAB实例(第二版)[包子阳,余继周][电子工业出版社][2018年01月][9787121330308]

经过调试,随书所有代码均可以在matlabR2019a上成功运行https://mianbaoduo.com/o/bread/YZyVlp9v

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【啃书】《智能优化算法及其MATLAB实例》例7.2模拟退火算法进行函数寻优 的相关文章

随机推荐

  • 大学操作系统原理课程笔记

    进程的概念 定义 可并发执行的程序 在一个数据集合上运行的过程 申请 拥有资源 调度 线程 程序 静态概念 是指令和数据的集合 可长期存储 进程与程序对应关系 a 一个程序可以对应一个进程或多个进程 b 一个进程可以对应一个程序 或者一段程
  • ajax.beginform insertionmode,MVC Ajax.BeginForm InsertionMode

    的JavaScript引用的文件 CSHTML页 using Ajax BeginForm new AjaxOptions UpdateTargetId result LoadingElementId progress InsertionM
  • 【C#学习笔记】保存文件

    using System using System Collections Generic using System ComponentModel using System Data using System Drawing using S
  • Windows下Qt静态编译全解

    Windows下Qt静态编译全解 2012 04 16 16 59 05 转载 标签 杂谈 分类 QT Windows下Qt静态编译全解 2010 09 08 13 42 分类 QT 编译准备 下载NOKIA网站上的QT SDK 解压或安装
  • pyautogui 的截图及图片匹配

    pyautogui 的截图 import pyautogui as pg 官网有提在不同的操作系统上 具体操作还不太一样 我的环境 win10 python3 9 截图需依赖 Pillow PIL 库 截全屏 pg screenshot 只
  • 渗透测试流程是什么?7个步骤给你讲清楚!

    在学习渗透测试之初 有必要先系统了解一下它的流程 静下心来阅读一下 树立一个全局观 一步一步去建设并完善自己的专业领域 最终实现从懵逼到牛逼的华丽转变 渗透测试是通过模拟恶意黑客的攻击方法 同时也是在授权情况下对目标系统进行安全性测试和评估
  • 移动端安卓文字垂直居中偏上偏移的解决方案

    移动web里小于12px的文字居中异常的问题 最后还是改为12px才近乎解决了问题 但是有时候或许并不是那么乐观 你并不能将原本定为10px的字体改为12px 那该怎么办呢 我们都知道 移动端为了高清屏显示1px的border 会有那么几种
  • 【Java】【NIO】【01】NIO设计理念

    什么是NIO NIO中的N 既有New的含义 也有Non blocking的含义 它是Java1 4之后推出来的一套非阻塞式IO接口 用于解决高并发 提升IO性能 NIO的主要改变 NIO主要的改变在于以下几点 通过Channel取代Str
  • python 测试开发岗 笔面试编程题

    题目网址 leetcode 题目名称 1 两数之和 3 无重复字符的最长子串 20 有效的括号 32 最长有效括号 53 最大子数组和 70 爬楼梯 80 删除有序数组中的重复项 II 83 删除排序链表中的重复元素 141 环形链表 20
  • loadrunner报错问题处理

    CPU使用率过高 Code 29723Error Failed to deliver a p2p message from parent to child process reason communication error Code 60
  • 医院信息化系统术语汇总

    以下文章来源于罗福如 作者Rolia 关于专业术语 每个领域都有领域中的专业术语 了解掌握也是为了工作上的沟通 让我们听懂同行说的话 也能展示自身具备专业知识 下面基本专业术语概念 从事智慧医疗 互联网医疗的你应该掌握 1 医院信息系统 H
  • idea热部署静态资源无法及时生效

    飘 Idea 每次修改JS文件都需要重启Idea才能生效解决方法 最近开始使用Idea 有些地方的确比eclipse方便 但是我发现工程每次修改JS或者是JSP页面后 并没有生效 每次修改都需要重启一次Tomcat这样的确不方便 我想Ide
  • 解决Access32位驱动器问题

    Access数据源驱动器是32位的 64位不支持 只要打开32位版本的ODBC管理工具就可以了 下面是我解决方法 打开这个就行了C Windows SysWOW64 odbcad32 exe
  • linux c++编程

    这本阿里P8撰写的算法笔记 再次推荐给大家 身边不少朋友学完这本书最后加入大厂 Github 疯传 史上最强悍 阿里大佬 LeetCode刷题手册 开放下载了 一 前提 以下环境均采用VMWare虚拟机安装CentOS6 6环境下编程 想要
  • 常用的linux命令还只能说出cd、ls?下次面试说出这几个命令提升你的层次吧!

    mpstat 显示各个可用CPU的状态 P 指定CPU编号 mpstat p 5 指定查看编号5CPU的状态 间隔时间 次数 mpstat 2 3 两秒一次合计输出三次 pidstat 显示指定进程CPU 内存 线程 设备IO等资源的占用情
  • 个人记账管理系统(大二第一学期JAVA期末项目)

    项目简介 设置账单条目Account类 定义属性 支出金额expend 收入金额income 时间datestr 账单条目备注remark 账单条目类型type 账单条目流水编号id 设置用户User类 定义用户信息 帐号昵称UserNam
  • C++模版深度解析

    在C 发明阶段 C 之父Stroustrup和贝尔实验室的C 小组对原先的宏方法进行了修订 对其进行了简化并将它从预处理范围移入了编译器 这种新的代码替换装置被称为模板 而且它变现了完全不同的代码重用方法 模板对源代码重用 而不是通过继承和
  • 支持向量机SVM

    文章目录 SVM简单理解 SVM代码实现 导入数据集 SVM实现 画出支持向量 总结 SVM简单理解 在下二维平面存在以下数据点 不同颜色代表不同类别 现在需要画一条直线 想将两个类别分别开来 当有新数据加入时 根据这条直线 也能将新数据正
  • Vue:ElementUI怎么引入外部svg图标

    推荐阿里巴巴图标库 命令行运行npm install svg sprite loader 创建icons svg文件夹 将svg文件放在该文件夹下面 在components文件夹中创建svgiconfont vue文件 文件内容
  • 【啃书】《智能优化算法及其MATLAB实例》例7.2模拟退火算法进行函数寻优

    文章目录 问题描述 仿真过程 matlab源码 问题描述 仿真过程 matlab源码 该脚本要命名为func2 m 适应度函数 function value func2 x y value 5 cos x y x y y y y value