模拟退火 python 实现
简介
一直以为是一个高深的算法,好像据说在量子计算机中可以应用。发现原理并不难
参考链接
https://blog.csdn.net/google19890102/article/details/45395257
https://blog.csdn.net/wfrainn/article/details/80303138
算法缺点
这个算法怎么感觉概率的地方基本不受控制,温度降到最后还是大量接受随机解?
模拟退火就是这样的,因为它到了最优解过后还能跳出最优解域,因此能找到别的解域的最优解的值。因此一定要记录下历史最优解。
算法流程图

code
对https://blog.csdn.net/wfrainn/article/details/80303138进行的代码更新
result
直接输出 39.72958243492729 -32148.550564632504
记录最小数值 40.033185051881034 -32154.066628802473
发现保留的最小值确实更接近最小值
code
#coding=utf-8
import numpy as np
from monituihuo import aimFunction
import math
T=1000 # initiate temperature
Tmin=10 # minimun value of terperature
x = np.random.uniform(low=0, high=100) # initiate x
k=50 # times of internal circulation
y = 0 # initiate result
t=0 # time
xmin = 100
ymin = 100 # 观察凸显给出的数值
while T>Tmin:
for i in range(k):
y=aimFunction(x)
# generate a new x in the neighboorhood of x by transform function
xNew = x + np.random.uniform(low=-0.055, high=0.055) * T
if(0<=xNew and xNew <=100):
yNew=aimFunction(xNew)
if(yNew - y <= 0):
x = xNew
if(yNew < ymin):
xmin = x
ymin = yNew
else:
#metropolis principle
p = math.exp(-(yNew-y) / T)
r = np.random.uniform(low=0, high=1)
if r < p:
x=xNew
t+=1
# print(t)
T=(1000)/(1+t)
print('直接输出',x, aimFunction(x))
print('记录最小数值',xmin, aimFunction(xmin))
#coding=utf-8
from __future__ import division # 将新版本的特性引入
import numpy as np
import matplotlib.pyplot as plt
import math
def aimFunction(x):
y=x**3-60*x**2-4*x+6
return y
x = [i/10 for i in range(1000)]
y = [0 for i in range(1000)]
for i in range(1000):
y[i] = aimFunction(x[i])
plt.plot(x,y)
# plt.show()
模拟退火 python 实现的更多相关文章
- 模拟退火算法SA原理及python、java、php、c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径
模拟退火算法SA原理及python.java.php.c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径 模拟退火算法(Simulated Annealing,SA)最早的思 ...
- 模拟退火算法(1)Python 实现
1.模拟退火算法 模拟退火算法借鉴了统计物理学的思想,是一种简单.通用的启发式优化算法,并在理论上具有概率性全局优化性能,因而在科研和工程中得到了广泛的应用. 退火是金属从熔融状态缓慢冷却.最终达到能 ...
- 模拟退火算法Python编程(2)约束条件的处理
1.最优化与线性规划 最优化问题的三要素是决策变量.目标函数和约束条件. 线性规划(Linear programming),是研究线性约束条件下线性目标函数的极值问题的优化方法,常用于解决利用现有的资 ...
- 模拟退火算法Python编程(3)整数规划问题
1.整数规划问题 整数规划问题在工业.经济.国防.医疗等各行各业应用十分广泛,是指规划中的变量(全部或部分)限制为整数,属于离散优化问题(Discrete Optimization). 线性规划问题的 ...
- Python自然语言处理系列之模拟退火算法
1.基本概念 模拟退火算法(Simulated Annealing,SA)是一种模拟固体降温过程的最优化算法.其模拟的过程是首先将固体加温至某一温度,固体内部的粒子随温度上升慢慢变为无序的状态,内能增 ...
- 用 Python 通过马尔可夫随机场(MRF)与 Ising Model 进行二值图降噪
前言 这个降噪的模型来自 Christopher M. Bishop 的 Pattern Recognition And Machine Learning (就是神书 PRML……),问题是如何对一个 ...
- Python机器学习笔记 Logistic Regression
Logistic回归公式推导和代码实现 1,引言 logistic回归是机器学习中最常用最经典的分类方法之一,有人称之为逻辑回归或者逻辑斯蒂回归.虽然他称为回归模型,但是却处理的是分类问题,这主要是因 ...
- sopt:一个简单的python最优化库
引言 最近有些朋友总来问我有关遗传算法的东西,我是在大学搞数学建模的时候接触过一些最优化和进化算法方面的东西,以前也写过几篇博客记录过,比如遗传算法的C语言实现(一):以非线性函数求极值为例和 ...
- (数据科学学习手札34)多层感知机原理详解&Python与R实现
一.简介 机器学习分为很多个领域,其中的连接主义指的就是以神经元(neuron)为基本结构的各式各样的神经网络,规范的定义是:由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系 ...
- Python自然语言处理-系列一
一:python基础,自然语言概念 from nltk.book import * 1,text1.concordance("monstrous") 用语索引 2,tex ...
随机推荐
- Packet Chasing:通过缓存侧信道监视网络数据包
摘要 本文介绍了一种对网络的攻击--Packet Chasing,这种攻击不需要访问网络,无论接收数据包的进程的特权级别如何,都能发挥作用.一个间谍进程可以很容易地探测和发现网络驱动程序使用的每个缓冲 ...
- rider的xamarin环境安装
自从用上rider后,vs就再也没有安装过了.最近要做apk开发,就安装xamarin环境,但是总是报错: Show Log->idea.log 发现下面错误: ERROR | Environm ...
- 内网私仓全流程搭建记录(二)-npm私仓提交与拉取
1.npm私仓依赖下载及本地上传 方法一1)使用Pycharm创建py文档,写入如下py代码: import os import re import aiohttp import asyncio fr ...
- 时间工具之“Java8 LocalDate 根据给定的日期,获取该日期上一周的周一周日,以及TemporalAdjusters的API”
一.场景 我们的周报需要获取该月的第一个周的星期一和星期日,用于计算该星期的功能业绩(如:上产品数量) 2022-04-25 00:00:00 到 2022-05-01 23:59:592022-05 ...
- 设计模式之“模板方法模式(TemplateMethod)”
一.使用场景 场景1 当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理 例如:将子类重复声明的方法提到父类去声明,利 ...
- 网络编程:CMD命令
要求: 写一个客户端程序和服务器程序,客户端程序连接上服务器之后,通过敲命令和服务器进行交互,支持的交互命令包括: pwd:显示服务器应用程序启动时的当前路径. cd:改变服务器应用程序的当前路径. ...
- C#配置系统
读取JSON文件 NuGet两个包:Microsoft.Extensions.Configuration,Mircosoft.Extensions.Configuration.Json. { &quo ...
- 定制Django的Tag和Filter(一)
1.在 app 目录下创建 templatetags 目录(目录名只能是 templatetags). 如: app/ __init__.py models.py templatetags/ __in ...
- Redis介绍及6.2.x版本安装
概述 Redis官网:https://redis.io/ Redis 是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSI C语言 ...
- 线下IDC数据中心迁移至阿里云详细方案
一.迁移前准备 1. 迁移规划 资源评估 统计需迁移的数据库类型.版本.数据量(如 MySQL 5.7.SQL Server 2019.文件存储系统等). 评估应用依赖关系,明确停机窗口(建议业务低峰 ...