我是靠谱客的博主 聪慧棉花糖,最近开发中收集的这篇文章主要介绍模拟退火算法 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 总结

  模拟退火算法作为一种贪心算法,加入了随机因素,能以一定的概率接受一个比较差的解。所以,有可能跳出局部最优解,达到全局最优解。

 

转载于:https://www.cnblogs.com/babyfei/p/9102485.html

最后

以上就是聪慧棉花糖为你收集整理的模拟退火算法 R语言的全部内容,希望文章能够帮你解决模拟退火算法 R语言所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部