模拟退火算法matlab求函数最大值实例

2023-11-08

模拟退火算法matlab求函数最大值实例

模拟退火算法的思路基本上是:

1.粒子按照不同的概率在不同的方向漂移(随机运动)

2.向目标点漂移的概率更大(趋向于能量低的点)

3.随着时间的推移粒子每次漂移的步长变短(温度降低)


这里粒子的速度采用正态分布,正态分布的速度的平均值与温度成正比

粒子运动方向随机,+-方向运动概率为0.5


%模拟退火算法实现搜索函数最大值
%Anneal.m
N=20;%粒子数量
temp=20;%初始温度
T=200;%迭代次数
k=0.1;%温度位移系数
kt=0.05;%温度概率系数
de=0.99;%温度降低速率
minx=0;
maxx=10;%区间
location=10*rand(1,N);%粒子初始位置
present_value=equation(location);%粒子当前解
%---------------------------
for t=1:T
    %
    dx_av=k*temp;%当前温度下粒子平均移动距离
    probability=exp(-1/(kt*temp));
    disp(probability);
    temp=temp*de;%温度变化
    for p=1:N
        dx=0.5*dx_av*randn+dx_av;%以平均移动距离为中心正态分布,
        if rand>0.5    %0.5的概率为-
            dx=-dx;
        end
        local=location(p)+dx;
        if (local<maxx)&&(local>minx)%判断是否越界
            local_value=equation(local);
            if local_value>present_value(p)
                location(p)=local;
                present_value(p)=local_value;
            else if rand<probability
                    location(p)=local;
                    present_value(p)=local_value;   
                end
                
            end
        end
    end
end


x=minx:0.01:maxx;
y=equation(x);
plot(x,y);
hold on;
plot(location, present_value,'*');
disp(location);

被搜寻的函数如下·

function y=equation(x)
y=10*cos(0.4*pi*x).*sin(0.1*pi*x);
end


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

模拟退火算法matlab求函数最大值实例 的相关文章

  • MATLAB:将当前文件夹设置为脚本位置

    我在不同的文件夹中有一些脚本和数据 我使用addpath和相对路径经常 我的问题是 只有当我的当前文件夹是我执行的脚本所在的位置时 这才有效 例如 如果我执行添加路径 X 的脚本 A 然后执行位于路径 X 中的脚本 B 则 Matlab 不
  • 如何在 MATLAB 中将矩阵元素除以列总和?

    有没有一种简单的方法可以将每个矩阵元素除以列和 例如 input 1 4 4 10 output 1 5 4 14 4 5 10 14 以下是执行此操作的不同方法的列表 使用bsxfun https www mathworks com he
  • 图像梯度角计算

    我实际上是按照论文的说明进行操作的 输入应该是二进制 边缘 图像 输出应该是一个新图像 并根据论文中的说明进行了修改 我对指令的理解是 获取边缘图像的梯度图像并对其进行修改 并使用修改后的梯度创建一个新图像 因此 在 MATLAB Open
  • matlab 中的动画绘图

    我正在尝试创建一个三角形的动画图 最终结果应该是十个三角形 后面跟着两个更大的三角形 后面跟着一条直线 使用matlab文档 https de mathworks com help matlab ref drawnow html 我最终得到
  • 帮助我理解FFT函数(Matlab)

    1 除了负频率之外 FFT 函数提供的最小频率是多少 是零吗 2 如果它为零 我们如何在对数刻度上绘制零 3 结果总是对称的 或者只是看起来是对称的 4 如果我使用abs fft y 来比较2个信号 我是否会失去一些准确性 1 除了负频率之
  • 轴标注问题

    通过运行我编写的以下 matlab 函数 可以互换图中的 x 轴和 y 轴 谁能告诉我问题出在哪里或者帮我解决它吗 预先感谢您的任何帮助 function axislabeling n x 1 1 n y 1 1 n z zeros n n
  • 优先连接,Matlab 中的复杂网络

    大家好 我现在正在 MATLAB 中研究优先附件模型 在理解以下内容时遇到一些困难 假设我一开始有 4 个节点 连接如下 time 0 1 lt gt 2 3 lt gt 4 在下一个时间步骤中 我添加一个节点和 4 个连接 然后添加另一个
  • Mathworks 生成 Matlab HTML 文档的方法是什么?

    我正在开发共享的 Matlab 代码 我们希望在本地网络中将生成的文档作为可搜索的 HTML 文档共享 我知道以下生成文档的方法 编写一个类似于 C 文件的转换器 这是在中完成的将 Doxygen 与 Matlab 结合使用 http ww
  • 在 Python 上显示 Matlab mat 文件中的图像

    我目前正在尝试显示从此下载的 Mat 文件中的图像site http www rctn org bruno sparsenet 这是一个 mat 文件 所以我尝试使用 scipy io loadmat 函数加载它 但我似乎无法绘制图像 我究
  • 在Matlab图例中使用Latex?

    我的 matlab 不接受我的 Latex 例如 如果我使用legend b 6 rightarrow b 7 它没有向我显示箭头 我该如何解决这个问题 尝试使用 Latex 解释器 例如 legend b 6 rightarrow b 7
  • 计算向量的导数

    我有以下函数 维维亚尼曲线 Phi t cos t 2 cos t sin t sin t 只需检查它是否有效 s linspace 0 T 1000 plot3 cos s 2 cos s sin s sin s 如何推导函数Phi 可能
  • 在 numpy/scipy 中查找 matlab 函数

    是否有一个等价的函数find A gt 9 1 来自 numpy scipy 的 matlab 我知道有nonzeronumpy 中的函数 但我需要的是第一个索引 以便我可以在另一个提取的列中使用第一个索引 Ex A 1 2 3 9 6 4
  • 使用正常数据直方图与直接公式进行熵估计(matlab)

    假设我们已经绘制了n 10000标准正态分布的样本 现在我想使用直方图计算其熵来计算概率 1 计算概率 例如使用matlab p x hist samples binnumbers area x 2 x 1 sum p p p area b
  • MATLAB 符号替换

    我知道在 MATLAB 中如果声明了 syms x y f x 2 y 2 grad gradient f 然后grad会存储值 2 x 2 y 如果我想评估梯度 2 2 I use subs f x y 2 2 这返回 4 4 我正在编写
  • 在matlab中融合2个以上的图像

    在 MATLAB 中 如何融合两个以上的图像 例如 我想要做什么imfuse但对于超过 2 个图像 使用两张图像 这是我的代码 A imread file1 jpg B imread file2 jpg C imfuse A B blend
  • 可以避免迭代元胞数组时的“s{1} 烦恼”吗?

    The s 1 标题的 烦恼 指的是下面的 for 块中的第一行 for s some cell array s s 1 unpeel the enclosing cell do stuff with s end This s s 1 业务
  • MATLAB 图形渲染:OpenGL 与 Painters?

    当谈到使用哪个渲染器来处理 MATLAB 图形或何时它很重要时 我一无所知 但我遇到过某些示例 其中does matter plot 0 0 ko markersize 50 linewidth 8 set gcf renderer ope
  • OpenCV功能类似于matlab的“查找”

    我正在寻找 openCV 中的一个函数来帮助我制作图像蒙版 例如在 MATLAB 中 B A or B 零 大小 A B A 10 c 有些功能可以让你通过mask向他们提出论据 按照您描述的方式创建面具 我认为您正在追求Cmp 或 Cmp
  • 在 Matlab 中将绘图从高斯混合变换为均匀分布

    考虑以下抽签2x1Matlab 中的向量 其概率分布是两个高斯分量的混合 P 10 3 number draws v 1 First component mu a 0 0 5 sigma a v 0 0 v Second component
  • ODE 时间 Matlab 与 R

    如果在 matlab 中使用可变时间步长求解器 例如 ODE45 我会定义输出的时间跨度 即times 0 50 matlab 将返回 0 到 50 之间不同时间步长的结果 然而在 R 中 我似乎必须定义我希望 ODE 返回结果的时间点 即

随机推荐

  • 解决HttpClient工具中application/x-www-form-urlencoded表单提交时,请求参数中文乱码问题

    一 参数乱码现象 当我去请求第三方接口时 接口接收格式为Form表单的时候 使用HttpClient工具类 这时 对于封装进HttpPost对象里的请求参数 如果有中文参数 会出现乱码的现象 二 代码现象复现 controller层 Res
  • c语言中\n,\t,\r,\b的用法和区别

    1 n 最容易理解 就是 换行 跳到下一行的起始位置 2 t 也容易理解 即跳到下一制表位 举例如下图所示 3 r 回车 不换行 r后边的数字替代 这一行最开始的相等数目的数字 举例 4 b 退格 也就是电脑键盘上的backspace b后
  • python pip命令安装 pyinstaller失败提示Installing build dependencies ... error

    1 现象 2 解决方案 自己下载 手动安装 2 1 下载地址 https pypi org project PyInstaller 3 5 files 2 2 解压到E python PyInstaller 3 5 2 3 cmd进入到解压
  • 差分信号简述

    差分信号是一种信号传输技术 传统的传输方法使用一根信号线传输信号 一根地线接地 差分信号需要在两根线上都传输信号 且两个信号振幅相同 相位相反 这样的信号就是差分信号 使用差分信号传输的好处是 只要传输正负信号的两根线在物理上是紧密耦合在一
  • echart柱状图Y轴最小间隔问题,Y轴不显示小数

    今天来说说echart 柱状图 Y轴的最小值 间隔问题 最近项目中用到柱状图 数据量少的时候 Y轴会出现小数 但是我们产品小哥哥说不能出现小数 好了 那就开干 option xAxis type category data Mon Tue
  • Linux安装opencv(附带出错,解决方法参考)

    前言 lib库 运行库 dev库 开发 gdb库 调试 安装 1 1 OpenCV是一个开源的软件 在一个source文件下 包含了所有的源代码文件 使用哪种操作系统 windows还是linux 使用哪种编译器 注意 执行安装包很可能不仅
  • springmvc有哪几种请求参数的方式呢?

    转自 springmvc有哪几种请求参数的方式呢 传送参数至后台 是每个系统都必须面对的事实 因为系统就是一个实现人机交互的工具 那么Spring MVC中如何在后台获取参数呢 下文将一一道来 如下所示 方式一 在Controller的形参
  • LRC歌词解析,实现Linux设备播放音乐显示歌词 LRC解析

    开始正文 1 关于LRC lrc是英文lyric 歌词 的缩写 被用做歌词文件的扩展名 以lrc为扩展名的歌词文件可以在各类数码播放器中同步显示 LRC 歌词是一种包含着 形式的 标签 tag 的 基于纯文本的歌词专用格式 最早由郭祥祥先生
  • vue实现农历日期选择器

    在项目中会员进行注册的时候需要进行生日的选择 由于通用的UI库都是公历的并且万年历的形式不符合 也在网上查了好多资料 最后找到一套算法感觉还是不错的 经过加工分析封装成了一个vue组件 实现公农历转换的算法 数组LunarDaysOfMon
  • shell脚本中数组的运用以及排序算法

    shell脚本中数组的运用 一 数组的介绍 1 概念 2 定义方法 3 数组包括的数据类型 二 关于数组的操作 1 获取数组长度 2 获取数组各个元素的下标 3 获取数组列表或单个元素 4 对数组切片输出 5 对数组里的元素替换 6 删除单
  • 【Webpack】webpack5基本配置

    5大核心概念 1 entry 入口 指示webpack从哪个文件开始打包 2 output 输出 指示webpack打包完的文件输出到哪里去 如何命名 3 loader 加载器 webpack本身只能处理js json等资源 其他资源需要借
  • 蓝桥杯 算法训练 单词接龙 超详细

    嘿嘿 低产博主又来更新了 这次是dfs搜索的题 我是看另一个博主写的 自己来归纳一下啦 冲冲冲 参考博客 https www cnblogs com zbx2000 p 12715400 html 问题概述 1 已知一组单词 2 给定一个开
  • 控制winform控件textbox(自写的那个),限制输入两位小数

    有个FloatLength属性 直接修改为2 即可 如果是3位小数的话 直接修改为3即可
  • Redis主从复制+哨兵模式

    必读 redis的主从复制是单向的 只能有主节点到从节点 主节点以写为主从节点以读为主不能写入数据 因为系统的80 的需求都是读的需求 redis服务默认自己是主节点 一个主节点由一个或多个从节点 一个从节点只有一个主节点 全量复制 red
  • MySQL数据库性能分析与调优实践

    一 MySQL索引 1 索引简介 索引是对数据库表中一列或多列的值进行排序的一种数据结构 好比是一本书前面的目录 可以增加对特定信息的查询速度 一般来说索引本身也很大 不可能全部存储在内存中 因此索引往往是存储在磁盘上的文件中的 可能存储在
  • 谈谈对Canal(增量数据订阅与消费)的理解

    概述 canal是阿里巴巴旗下的一款开源项目 纯Java开发 基于数据库增量日志解析 提供增量数据订阅 消费 目前主要支持了mysql 也支持mariaDB 起源 早期 阿里巴巴B2B公司因为存在杭州和美国双机房部署 存在跨机房同步的业务需
  • EnvironmentLocationNotFound: Not a conda environment: C:\Program Files\Anaconda3

    问题一 conda无法找到keras信息 于是使用以下办法 恢复keras使用 EnvironmentLocationNotFound Not a conda environment C Program Files Anaconda3 长时
  • 【PTA】数组合并

    合并两个升序数组 使得合并后的数组仍然是升序 输入格式 输入两个整数n和m 表示两个数组的长度 接着输入n个整数表示第一个数组的元素 然后输入m个整数表示第二个数组的元素 要求输入时按升序输入 import java util public
  • idea导入eclipse项目(保姆式教学)

    直接上操作吧 这里的红色箭头点击OK的不用 标错了 配置全部完成之后再点击OK 然后配置自己的tomcat 正常配置就好 如果是maven项目 则右键pom xml文件 点击maven 红色的pom xml文件变为蓝色则完成 这样就将ecl
  • 模拟退火算法matlab求函数最大值实例

    模拟退火算法matlab求函数最大值实例 模拟退火算法的思路基本上是 1 粒子按照不同的概率在不同的方向漂移 随机运动 2 向目标点漂移的概率更大 趋向于能量低的点 3 随着时间的推移粒子每次漂移的步长变短 温度降低 这里粒子的速度采用正态