数学建模--退火算法求解最值的Python实现

这篇具有很好参考价值的文章主要介绍了数学建模--退火算法求解最值的Python实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.算法流程简介

2.算法核心代码

3.算法效果展示

1.算法流程简介

"""
1.设定退火算法的基础参数
2.设定需要优化的函数,求解该函数的最小值/最大值
3.进行退火过程,随机产生退火解并且纠正,直到冷却
4.绘制可视化图片进行了解退火整体过程
"""

2.算法核心代码

#利用退火算法求解函数的极值(优化问题)
import numpy as np
from random import random
import random
import math
import matplotlib.pyplot as plt
#设定退火算法的基础参数
x_min,x_max=(-3,3)#x的取值范围
alpha=0.99#降温系数为0.99
bg_temp=100#起始温度
ed_temp=0.01#最终温度(可设可不设)
cycle_number=500#循环次数
#设定需要优化的函数,求解该函数的最小值
"""
需要运用的化直接修改函数即可.
不过需要注意定义域的问题,主动修改一下定义域就行
"""
def opt_fun(x):
    y=11*np.sin(2*x)+7*np.cos(5*x)
    return y
#由于没有具体的数据,我们直接随机设置值就行随机产生初始值

#随机产生本次退火解
def new_result(x):
    x1=x+bg_temp*random.uniform(-1,1)
    #退火解的合理性检查并且纠正:
    if  x_min<=x1<=x_max:
        return x1
    elif x1<x_min:
        add_min=random.uniform(-1,1)
        return add_min*x_min+(1-add_min)*x
    else:
        add_max=random.uniform(-1,1)
        return add_max*x_max+(1-add_max)*x
def draw_picture(x):
    plt.cla()
    #绘图的时候这里可以进行修改
    #注意这里y的取值范围[-25,25]要大体预估一下
    plt.axis([x_min-1,x_max+1,-25,25])
    m=np.arange(x_min,x_max,0.0001)
    plt.plot(m,opt_fun(m),color='red')
    plt.plot(x,opt_fun(x),marker='*',color='b',markersize='8')
    plt.title('Current Temperature={}'.format(T))
    plt.pause(0.1)

#设定接受概率函数
def p(x,x1):
    return math.exp(-abs(opt_fun(x)-opt_fun(x1))/T)

#循环退火过程,直到冷却求出最优解
def Annealing_cycle():
    global T
    count_number=0
    T=bg_temp
    x=random.uniform(x_min,x_max)
    print("*******************************************************************************************************************")
    while T>ed_temp:
        draw_picture(x)
        for i in range(cycle_number):
            x1=new_result(x)
            #求解最小值的过程
            if opt_fun(x)>=opt_fun(x1):
                x=x1
            else:
                if random.random()<=p(x,x1):
                    x=x1
                else:
                    continue
        T=T*alpha
        count_number=count_number+1
        print("当前执行第{}".format(count_number),"次退火过程","  当前退火温度为:{}".format(T),"  当前最优值:{}".format(opt_fun(x)))
    print("*******************************************************************************************************************")
    print("本次退火优化过程共执行{}".format(count_number),"次求得的最优解为:{}".format(opt_fun(x)))
    print("*******************************************************************************************************************")
Annealing_cycle()

3.算法效果展示

数学建模--退火算法求解最值的Python实现,数学建模,数学建模,python,算法文章来源地址https://www.toymoban.com/news/detail-707149.html

数学建模--退火算法求解最值的Python实现,数学建模,数学建模,python,算法

到了这里,关于数学建模--退火算法求解最值的Python实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数学建模学习(9):模拟退火算法

    模拟退火算法(Simulated Annealing, SA)的思想借 鉴于固体的退火原理,当固体的温度很高的时候,内能比 较大,固体的内部粒子处于快速无序运动,当温度慢慢降 低的过程中,固体的内能减小,粒子的慢慢趋于有序,最 终,当固体处于常温时,内能达到最小,此时,粒子最为 稳

    2024年02月14日
    浏览(38)
  • 数学建模(三):模拟退火算法(SA)

    1、 算法简介 模拟退火算法(simulated annealing,SA)来源于固体退火原理,是一种基于概率的算法。 模拟退火算法(SA)来源于固体退火原理,是一种基于概率的算法。将固体加温至充分高的温度,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,分子和原

    2023年04月17日
    浏览(66)
  • Matlab数学建模算法之模拟退火算法(SA)详解

    🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥  推荐专栏:《算法研究》 🔐####  防伪水印——左手の明天 #### 🔐 💗 大家好🤗🤗🤗,我是 左手の明天 !好久不见💗 💗今天分享 matlab数学建模算法 —— 模拟退火算法 💗

    2024年01月16日
    浏览(46)
  • 【数学建模】《实战数学建模:例题与讲解》第十四讲-模拟退火、遗传算法(含Matlab代码)

    本系列侧重于例题实战与讲解,希望能够在例题中理解相应技巧。文章开头相关基础知识只是进行简单回顾,读者可以搭配课本或其他博客了解相应章节,然后进入本文正文例题实战,效果更佳。 如果这篇文章对你有帮助,欢迎点赞与收藏~ 现代优化算法,自20世纪80年代初开

    2024年02月04日
    浏览(54)
  • 【数学建模】模拟退火全解析

    和局部束搜索相反,模拟退火将最优化策略改变,引入随机噪声,不一定每次都是最优,但是内部机制保证了最终的走向是最优,总的过程可以理解为初期广泛探索(Exploration),逐步过渡到深挖(Exploitation)。其中机理比较复杂,我们逐步去理解。 首先声明,我们这里还是

    2024年02月02日
    浏览(46)
  • 数学建模——模拟退火优化投影寻踪

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档   在考虑综合评价的时候,我们使用了各自主观、客观的方法去求解权重,客观权重的计算依靠着数据本身的分布来决定,有时候会出现各种各样不可抗拒的意外情况,其中在熵权法的解释在就有提到

    2024年02月11日
    浏览(51)
  • 数学建模之模拟退火法(SA)

    模拟退火算法(SA)是一种模拟物理退火过程而设计的优化算法。 它的基本思想最早在1953年就被Metropolis提出,但直到1983年,Kirkpatrick等人才设计出真正意义上的模拟退火算法并进行应用。 模拟退火算法采用类似于 物理退火 的过程。先在一个高温状态下,然后逐渐退火,在

    2024年01月17日
    浏览(43)
  • 数学建模--Lingo求解线性规划问题

    一 问题重述 1.1问题背景 工厂根据外部需求和内部设备,人力,原料等条件,以及最大利润为生产目标制定生产计划,根据生产计划,工艺流程,资源约束及费用参数等,以最小的成本为目标制定生产批量计划,若短时间外部需求和内部资源等不随时间的变化,可制定单阶段

    2024年02月12日
    浏览(44)
  • 数学建模1:lingo软件求解优化模型

    本次数学建模学习笔记系列,以代码学习为主,附带建模及论文亮点记录 由于队友为两位经济学小伙伴,因此以大数据类型题目为主要学习方向 注:论文代码资料来源网络 1、结构清晰(后附该论文前两问的目录结构) 2、lingo求解优化模型,涉及函数循环与求和 3、表格很好

    2024年02月08日
    浏览(65)
  • 数学建模--非整数规划求解的Python实现

    目录 1.算法流程简介 2.算法核心代码 3.算法效果展示

    2024年02月10日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包