数学建模——智能优化之模拟退火模型详解Python代码
2021/7/25 11:40:43
本文主要是介绍数学建模——智能优化之模拟退火模型详解Python代码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数学建模——智能优化之模拟退火模型详解Python代码
#本功能实现最小值的求解# from matplotlib import pyplot as plt import numpy as np import random import math plt.ion()#这里需要把matplotlib改为交互状态 #初始值设定 hi=3 lo=-3 alf=0.95 T=100 #目标函数 def f(x): return 11*np.sin(x)+7*np.cos(5*x)##注意这里要是np.sin #可视化函数(开始清楚一次然后重复的画) def visual(x): plt.cla() plt.axis([lo-1,hi+1,-20,20]) m=np.arange(lo,hi,0.0001) plt.plot(m,f(m)) plt.plot(x,f(x),marker='o',color='black',markersize='4') plt.title('temperature={}'.format(T)) plt.pause(0.1)#如果不停啥都看不见 #随机产生初始值 def init(): return random.uniform(lo,hi) #新解的随机产生 def new(x): x1=x+T*random.uniform(-1,1) if (x1<=hi)&(x1>=lo): return x1 elif x1<lo: rand=random.uniform(-1,1) return rand*lo+(1-rand)*x else: rand=random.uniform(-1,1) return rand*hi+(1-rand)*x #p函数 def p(x,x1): return math.exp(-abs(f(x)-f(x1))/T) def main(): global x global T x=init() while T>0.0001: visual(x) for i in range(500): x1=new(x) if f(x1)<=f(x): x=x1 else: if random.random()<=p(x,x1): x=x1 else: continue T=T*alf print('最小值为:{}'.format(f(x))) main()
这篇关于数学建模——智能优化之模拟退火模型详解Python代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12Python编程基础指南
- 2024-11-12Python基础编程教程
- 2024-11-08Python编程基础与实践示例
- 2024-11-07Python编程基础指南
- 2024-11-06Python编程基础入门指南
- 2024-11-06怎么使用python 计算两个GPS的距离功能-icode9专业技术文章分享
- 2024-11-06Python 基础编程入门教程
- 2024-11-05Python编程基础:变量与类型
- 2024-11-05Python编程基础:变量与类型
- 2024-11-04Python编程基础:变量与类型