Python实现模拟退火算法

本文深入探讨了模拟退火算法的基本原理,并提供了详细的Python代码实现。通过实例解析,帮助读者理解如何利用Python进行模拟退火算法的编程,应用于解决优化问题。
摘要由CSDN通过智能技术生成
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  # 当前温度
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值