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语言的更多相关文章

  1. PageRank算法R语言实现

    PageRank算法R语言实现 Google搜索,早已成为我每天必用的工具,无数次惊叹它搜索结果的准确性.同时,我也在做Google的SEO,推广自己的博客.经过几个月尝试,我的博客PR到2了,外链也 ...

  2. 数据挖掘算法R语言实现之决策树

    数据挖掘算法R语言实现之决策树 最近,看到很多朋友问我如何用数据挖掘算法R语言实现之决策树,想要了解这方面的内容如下: > library("party")导入数据包 > ...

  3. R语言︱情感分析—基于监督算法R语言实现(二)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:本文大多内容来自未出版的<数据 ...

  4. GA算法-R语言实现

    旅行商问题 北工商-经研143班共有30位同学,来自22个地区,我们希望在假期来一次说走就走的旅行,将所有同学的家乡走一遍.算起来,路费是一笔很大的花销,所以希望设计一个旅行方案,确保这一趟走下来的总 ...

  5. 一个简单文本分类任务-EM算法-R语言

    一.问题介绍 概率分布模型中,有时只含有可观测变量,如单硬币投掷模型,对于每个测试样例,硬币最终是正面还是反面是可以观测的.而有时还含有不可观测变量,如三硬币投掷模型.问题这样描述,首先投掷硬币A,如 ...

  6. R语言 常见模型

    转自 雪晴网 [R]如何确定最适合数据集的机器学习算法 抽查(Spot checking)机器学习算法是指如何找出最适合于给定数据集的算法模型.本文中我将介绍八个常用于抽查的机器学习算法,文中还包括各 ...

  7. R语言︱情感分析—词典型代码实践(最基础)(一)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:词典型情感分析对词典要求极高,词典中 ...

  8. Rserve详解,R语言客户端RSclient【转】

    R语言服务器程序 Rserve详解 http://blog.fens.me/r-rserve-server/ Rserve的R语言客户端RSclient https://blog.csdn.net/u ...

  9. 模拟退火算法(SA)求解TSP 问题(C语言实现)

    这篇文章是之前写的智能算法(遗传算法(GA).粒子群算法(PSO))的补充.其实代码我老早之前就写完了,今天恰好重新翻到了,就拿出来给大家分享一下,也当是回顾与总结了. 首先介绍一下模拟退火算法(SA ...

随机推荐

  1. 【quickhybrid】Android端的项目实现

    前言 前文中就有提到,Hybrid模式的核心就是在原生,而本文就以此项目的Android部分为例介绍Android部分的实现. 提示,由于各种各样的原因,本项目中的Android容器确保核心交互以及部 ...

  2. 第一次spring冲刺第3、4天

    11月14至15日 因为忙于项目的谈论与探究,以及周末的活动变动,使得博客没有时间提交上去,这里补交. 这两天,主要是应对于市场的探究做谈论,我们主要面对什么类型的客户,以及他们最需要的是什么等话题做 ...

  3. 300道随机四则运算小程序(java编写)

    这是由Java编写的300道随机四则运算小程序, 运算数范围为0~100(不包括100),运算结果保留两位小数. 程序代码: import java.util.*; class Yunsuan{ pu ...

  4. java中的互斥锁和信号量的区别

    互斥锁和信号量都是操作系统中为并发编程设计基本概念,互斥锁和信号量的概念上的不同在于,对于同一个资源,互斥锁只有0和1 的概念,而信号量不止于此.也就是说,信号量可以使资源同时被多个线程访问,而互斥锁 ...

  5. git学习(一) 如何将项目上传到github

    用了github有了段时间,但是感觉都是断断续续的,这次花了点时间来总结下,已方便下次忘记的时候拿出来看一下: 自己主要是参考了这个网站来学习的: git教程 -廖雪峰 第一步: 创建github账号 ...

  6. AWS EC2安装docker时的问题

    在AWS EC2的实例(Ubuntu)里面安装docker时,使用通常的安装步骤 :~$ sudo apt-get update :~$ sudo apt-get install docker 安装完 ...

  7. php aes加密

    <?php namespace Aes; error_reporting(E_ALL); ini_set('display_errors', '1'); class Aes { /** * va ...

  8. wamp 开启短标签支持

    1.先使用phpinfo.php文件打印出信息 2.找到Loaded Configuration File   根据他的路径去修改php.ini文件 3.打开php.ini文件,搜索 short_op ...

  9. linux 无交互生成ssh rsa免秘证书

    [root@xxx tmp]# man ssh-keygen NAME ssh-keygen - authentication key generation, management and conve ...

  10. [转帖] 固定硬盘接口 U.2和M.2

    U.2接口 U.2接口别称SFF-8639,是由固态硬盘形态工作组织(SSD Form Factor Work Group)推出的接口规范.U.2不但能支持SATA-Express规范,还能兼容SAS ...