import math
from random import random
import numpy as np
import matplotlib.pyplot as plt
'''
这里traditional_monituihuo加三维成像与monituihuo加三维成像的方法不同,
因为这里的x,y的取值是一个一个取的,而不是直接取很多
所以要进行成像的话,需要单独生成x,y值
'''
def func(x1, x2): # 函数优化问题
# res = 4 * x ** 2 - 2.1 * x ** 4 + x ** 6 / 3 + x * y - 4 * y ** 2 + 4 * y ** 4
res = 3 * (1 - x1) ** 2 * np.exp(-(x1 ** 2) - (x2 + 1) ** 2) - 10 * (x1 / 5 - x1 ** 3 - x2 ** 5) * np.exp(
-x1 ** 2 - x2 ** 2) - 1 / 3 ** np.exp(-(x1 + 1) ** 2 - x2 ** 2)
return res
# x为公式里的x1,y为公式里面的x2
class SA:
def __init__(self, func, iter=100, T0=100, Tf=0.01, alpha=0.99):
self.func = func
self.iter = iter # 内循环迭代次数,即为L =100
self.alpha = alpha # 降温系数,alpha=0.99
self.T0 = T0 # 初始温度T0为100
self.Tf = Tf # 温度终值Tf为0.01
self.T = T0 # 当前温度
Python实现模拟退火算法
最新推荐文章于 2024-08-13 21:01:40 发布
本文深入探讨了模拟退火算法的基本原理,并提供了详细的Python代码实现。通过实例解析,帮助读者理解如何利用Python进行模拟退火算法的编程,应用于解决优化问题。
摘要由CSDN通过智能技术生成