模拟退火算法 R语言
0 引言
模拟退火算法是用来解决TSP问题被提出的,用于组合优化。
1 原理
一种通用的概率算法,用来在一个打的搜索空间内寻找命题的最优解。它的原理就是通过迭代更新当前值来得到最优解。模拟退火通常使用均匀抽样的方式,得到区间上的N个状态,以各个状态点目标值的方差作为初始温度。
2 程序包
GenSA:
GenSA(par, fn, lower, upper, control=list(), ...)
参数:
par:向量。包含优化对象的初始值,默认NULL,一般算法会自动产生默认值。
fn:最小化函数,使用参数向量作为该函数的第一个参数,并且基于它实现最小化。返回一个标量的结果。
lower:与par长度一致的向量,包含优化对象的下界值
upper:与par长度一样的向量,包含优化对象的上界值
control:控制算法行为的列表。
maxit:实数。算法迭代次数的最大值
threshod.stop:实数。当期望的目标函数值达到此值时终止程序,默认为null
max.call:整数。调用目标函数的最大次数
max.time:实数。最大运行时间
temperature:实数。温度的初始值
visiting.param:实数。访问分布的参数
acceptance.param:实数。接受分布的参数
verbose:逻辑值。显示算法信息
simple.function:逻辑值。设置为TRUE表示目标函数有少数几个局部最小值,默认为FALSE,表示目标函数有很多局部最小值,是复杂的
trace.fn:字符串。跟踪矩阵将会写入trace.fn的文件,默认null,表示跟踪矩阵将存储在返回值中而不是文件中
stats:
optim(par, fn, gr = NULL, ...,
method = c("Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN",
"Brent"),
lower = -Inf, upper = Inf,
control = list(), hessian = FALSE)
optimHess(par, fn, gr = NULL, ..., control = list())
参数:
par:向量。包含优化对象的初始值,默认NULL,一般算法会自动产生默认值。
fn:最小化函数,使用参数向量作为该函数的第一个参数,并且基于它实现最小化。返回一个标量的结果。
gr:为BFGS/CG/L-BFGS-B方法返回梯度的函数,若为null,将使用有限差分逼近的方法。对于SANN方法,它指定一个函数来产生新的候选点,若为null,将使用高斯马尔科夫核
method:要使用的方法
lower、upper:对于L-BFGS-B方法,参数表示变量的上下界;对于Brent方法,参数表示搜索时限制的上下界
hessian:逻辑值,是否应该返回一个数字区分的海森矩阵
control:控制参数列表,默认下,optim处理最小化问题,若把control$fnscale设置为负值,则可以处理最大化问题。
4 总结
模拟退火算法作为一种贪心算法,加入了随机因素,能以一定的概率接受一个比较差的解。所以,有可能跳出局部最优解,达到全局最优解。
模拟退火算法 R语言的更多相关文章
- PageRank算法R语言实现
PageRank算法R语言实现 Google搜索,早已成为我每天必用的工具,无数次惊叹它搜索结果的准确性.同时,我也在做Google的SEO,推广自己的博客.经过几个月尝试,我的博客PR到2了,外链也 ...
- 数据挖掘算法R语言实现之决策树
数据挖掘算法R语言实现之决策树 最近,看到很多朋友问我如何用数据挖掘算法R语言实现之决策树,想要了解这方面的内容如下: > library("party")导入数据包 > ...
- R语言︱情感分析—基于监督算法R语言实现(二)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:本文大多内容来自未出版的<数据 ...
- GA算法-R语言实现
旅行商问题 北工商-经研143班共有30位同学,来自22个地区,我们希望在假期来一次说走就走的旅行,将所有同学的家乡走一遍.算起来,路费是一笔很大的花销,所以希望设计一个旅行方案,确保这一趟走下来的总 ...
- 一个简单文本分类任务-EM算法-R语言
一.问题介绍 概率分布模型中,有时只含有可观测变量,如单硬币投掷模型,对于每个测试样例,硬币最终是正面还是反面是可以观测的.而有时还含有不可观测变量,如三硬币投掷模型.问题这样描述,首先投掷硬币A,如 ...
- R语言 常见模型
转自 雪晴网 [R]如何确定最适合数据集的机器学习算法 抽查(Spot checking)机器学习算法是指如何找出最适合于给定数据集的算法模型.本文中我将介绍八个常用于抽查的机器学习算法,文中还包括各 ...
- R语言︱情感分析—词典型代码实践(最基础)(一)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:词典型情感分析对词典要求极高,词典中 ...
- Rserve详解,R语言客户端RSclient【转】
R语言服务器程序 Rserve详解 http://blog.fens.me/r-rserve-server/ Rserve的R语言客户端RSclient https://blog.csdn.net/u ...
- 模拟退火算法(SA)求解TSP 问题(C语言实现)
这篇文章是之前写的智能算法(遗传算法(GA).粒子群算法(PSO))的补充.其实代码我老早之前就写完了,今天恰好重新翻到了,就拿出来给大家分享一下,也当是回顾与总结了. 首先介绍一下模拟退火算法(SA ...
随机推荐
- runlevel 命令详解
基础命令学习目录首页 原文链接:https://blog.csdn.net/PecoVio/article/details/82428883 runlevel 知识扩展 linux操作系统自从开始启动 ...
- Python20-Day05
一.模块与包 1.模块 什么是模块? 在python中,模块可以分为四个通用类别: 1. 使用python编写的.py文件 2. 已经被编译为共享库或DLL的c或者c++扩展 3. 把一系列模块组织到 ...
- 20172319 《Java程序设计教程》 第10周学习总结
20172319 2018.05.09-05.21 <Java程序设计教程>第10周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周 ...
- C++编译与链接(0)-.h与.cpp中的定义与声明
C++中有的东西需要放在可以在.h文件中定义,有的东西则必须放在.cpp文件中定义,有的东西在不同的cpp文件中的名字可以一样,而有的则不能一样 那么究竟哪些东西可在头文件中定义,声明,哪些东西又必须 ...
- 6th Alpha阶段的postmortem报告
组名:好好学习(代组长发布) 会议重要内容记录: 1. 尝试在beta阶段实现的功能,与alpha阶段相比的优势 (1)更改软件现有的bug: 1)软件的账目只能输入,但是一旦发生失误却无法更改和 ...
- koa中接收前台传递的各种数据类型的方式
标签(空格分隔): koa 数据类型接收 主要介绍三种会用到的中间件,其实都是自己在开发的过程中踩过的坑 首先介绍koa-body [详情介绍 https://github.com/dlau/koa- ...
- vsftpd的配置文件说明
vsftpd的配置文件说明: vsftpd.ftpusers:位于/etc目录下.它指定了哪些用户账户不能访问FTP服务器,例如root等. vsftpd.user_list:位于/etc目录下.该文 ...
- NodeJs 遍历文件夹内容 上传到服务器.并输出上传记录文件
var path = require('path'); var glob = require('glob') var fs = require('fs'); var Promise = require ...
- 利用stream对map集合进行过滤
最近公司在大张旗鼓的进行代码审核,从中也发现自己写代码的不好习惯.一次无意的点到了公司封装的对map集合过滤的方法,发现了stream.于是研究了一下.并对原有的代码再次结合Optional进行重构下 ...
- LeetCode 717. 1-bit and 2-bit Characters
We have two special characters. The first character can be represented by one bit 0. The second char ...