我的移动硬盘分几个区好才重新分过区,可是用了几天后分区全部消失了。用分区软件还

模拟退火算法(Simulated Annealing,SA) - phenix_chen - ITeye技术网站
博客分类:
模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。
模拟退火算法(Simulated Annealing,SA)是一种通用概率演算法,用來在固定时间内寻在求一个大型的离散的搜索空间上的一个函数的最佳值的最好近似,该技术在许多人工智能文本中都有描述。它是一种随机算法,并不一定能找到全局的最优解,可以比较快的找到问题的近似最优解。如果参数设置得当,模拟退火算法搜索效率比穷举法要高。
模拟退火算法描述:
若J( Y(i+1) )&= J( Y(i) )
(即移动后得到更优解),则总是接受该移动
若J( Y(i+1) )& J( Y(i) )
(即移动后的解比当前解要差),则以一定的概率接受移动,而且这个概率随着时间推移逐渐降低(逐渐降低才能趋向稳定)
模拟退火算法python实现(代码转自《Natural Language Processing with Python》例3-4)
def segment(text, segs):
words = []
for i in range(len(segs)):
if segs[i] == '1':
words.append(text[last:i+1])
last = i+1
words.append(text[last:])
return words
def evaluate(text, segs):
words = segment(text, segs)
text_size = len(words)
lexicon_size = len(' '.join(list(set(words))))
return text_size + lexicon_size
def flip(segs, pos):
return segs[:pos] + str(1-int(segs[pos])) + segs[pos+1:]
def flip_n(segs, n):
for i in range(n):
segs = flip(segs, randint(0,len(segs)-1))
return segs
def anneal(text, segs, iterations, cooling_rate):
temperature = float(len(segs))
while temperature & 0.5:
best_segs, best = segs, evaluate(text, segs)
for i in range(iterations):
guess = flip_n(segs, int(round(temperature)))
score = evaluate(text, guess)
if score & best:
best, best_segs = score, guess
score, segs = best, best_segs
temperature = temperature / cooling_rate
print evaluate(text, segs), segment(text, segs)
return segs
phenix_chen
浏览: 18607 次
来自: 成都
楼主求源码
麻烦帮把源码发份研究下,谢 ...
zuoshu 写道root手机安全性无从谈起啊呵呵,其实还有办 ...
root手机安全性无从谈起啊
蛮不错的。。。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(5896)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_084065',
blogTitle:'人工智能算法(1)——模拟退火(SA)',
blogAbstract:'& \r\n&&& 模拟退火(Simulated Annealing,简称SA)是一种通用概率算法,用来在一个大的搜寻空间内找寻命题的最优解。\r\n1、固体退火原理:',
blogTag:'模拟退火,人工智能',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:6,
publishTime:3,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}出自 MBA智库百科()
模拟退火算法(Simulate Anneal Arithmetic,SAA)
  模拟退火算法(Simulate Anneal Arithmetic,SAA)是一种通用概率演算法,用来在一个大的搜寻空间内找寻命题的最优解。模拟退火是, 和在1983年所发明。而在1985年也独立发明此演算法。模拟退火算法是解决的有效方法之一。
  模拟退火来自冶金学的专有名词退火。退火是将材料加热后再经特定速率冷却,目的是增大晶粒的体积,并且减少晶格中的缺陷。材料中的原子原来会停留在使内能有局部最小值的位置,加热使能量变大,原子会离开原来位置,而随机在其他位置中移动。退火冷却时速度较慢,使得原子有较多可能可以找到内能比原先更低的位置。
  模拟退火的原理也和金属退火的原理近似:将热力学的理论套用到上,将搜寻空间内每一点想像成空气内的分子;分子的能量,就是它本身的动能;而搜寻空间内的每一点,也像空气分子一样带有“能量”,以表示该点对命题的合适程度。演算法先以搜寻空间内一个任意点作起始:每一步先选择一个“邻居”,然后再计算从现有位置到达“邻居”的概率。
  模拟退火算法可以分解为解空间、目标函数和初始解三部分。
模拟退火的基本思想:
(1) 初始化:初始温度T(充分大),初始解状态S(是算法迭代的起点), 每个T值的迭代次数L
(2) 对k=1,……,L做第(3)至第6步:
(3) 产生新解S′
(4) 计算增量Δt′=C(S′)-C(S),其中C(S)为评价函数
(5) 若Δt′&0则接受S′作为新的当前解,否则以概率exp(-Δt′/T)接受S′作为新的当前解.
(6) 如果满足终止条件则输出当前解作为最优解,结束程序。终止条件通常取为连续若干个新解都没有被接受时终止算法。
(7) T逐渐减少,且T-&0,然后转第2步。
  算法对应动态演示图:
模拟退火算法新解的产生和接受可分为如下四个步骤:
第一步是由一个产生函数从当前解产生一个位于解空间的新解;为便于后续的计算和接受,减少算法耗时,通常选择由当前新解经过简单地变换即可产生新解的方法,如对构成新解的全部或部分元素进行置换、等,注意到产生新解的变换方法决定了当前新解的邻域结构,因而对冷却进度表的选取有一定的影响。
第二步是计算与新解所对应的目标函数差。因为目标函数差仅由变换部分产生,所以目标函数差的计算最好按增量计算。事实表明,对大多数应用而言,这是计算目标函数差的最快方法。
第三步是判断新解是否被接受,判断的依据是一个接受准则,最常用的接受准则是Metropolis准则: 若Δt′&0则接受S′作为新的当前解S,否则以概率exp(-Δt′/T)接受S′作为新的当前解S。
第四步是当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时的变换部分予以实现,同时修正目标函数值即可。此时,当前解实现了一次迭代。可在此基础上开始下一轮试验。而当新解被判定为舍弃时,则在原当前解的基础上继续下一轮试验。
  模拟退火算法与初始值无关,算法求得的解与初始解状态S(是算法迭代的起点)无关;模拟退火算法具有渐近收敛性,已在理论上被证明是一种以概率l 收敛于全局最优解的全局优化算法;模拟退火算法具有并行性。
  作为模拟退火算法应用,讨论(,简记为TSP):设有n个,用数码(1,…,n)代表。城市i和城市j之间的距离为d(i,j) i, j=1,…,n.TSP问题是要找遍访每个域市恰好一次的一条回路,且其路径总长度为最短.。
  求解TSP的模拟退火算法模型可描述如下:
  解空间:解空间S是遍访每个城市恰好一次的所有回路,是{1,……,n}的所有循环排列的集合,S中的成员记为,并记wn + 1 = w1。初始解可选为(1,……,n)
  目标函数:此时的目标函数即为访问所有城市的路径总长度或称为代价函数:
  我们要求此代价函数的最小值。
  新解的产生 随机产生1和n之间的两相异数k和m,若k&m,则将
  变为:
  如果是k&m,则将
  变为:
  上述变换方法可简单说成是“逆转中间或者逆转两端”。
  也可以采用其他的变换方法,有些变换有独特的优越性,有时也将它们交替使用,得到一种更好方法。
  代价函数差:设将变换为, 则代价函数差为:
  根据上述分析,可写出用模拟退火算法求解TSP问题的伪程序:
Procedure TSPSA:
  init-of-T; { T为初始温度}
  S={1,……,n}; {S为初始值}
  termination=
  while termination=false
   begin
    for i=1 to L do
      begin
        generate(S′form S); { 从当前回路S产生新回路S′}
        Δt:=f(S′))-f(S);{f(S)为路径总长}
        IF(Δt&0) OR (EXP(-Δt/T)&Random-of-[0,1])
        S=S′;
        IF the-halt-condition-is-TRUE THEN
        termination=
      E
    T_
  模拟退火算法的应用很广泛,可以较高的效率求解最大截问题(Max Cut Problem)、0-1背包问题(Zero One Knapsack Problem)、图着色问题(Graph Colouring Problem)、调度问题(Scheduling Problem)等等。
  模拟退火算法的应用很广泛,可以求解NP完全问题,但其参数难以,其主要问题有以下三点:
  (1) 温度T的初始值设置问题。
  温度T的初始值设置是影响模拟退火算法全局搜索性能的重要因素之一、初始温度高,则搜索到全局最优解的可能性大,但因此要花费大量的计算时间;反之,则可节约计算时间,但全局搜索性能可能受到影响。实际应用过程中,初始温度一般需要依据实验结果进行若干次调整。
  (2) 退火速度问题。
  模拟退火算法的全局搜索性能也与退火速度密切相关。一般来说,同一温度下的“充分”搜索(退火)是相当必要的,但这需要计算时间。实际应用中,要针对具体问题的性质和特征设置合理的退火平衡条件。
  (3) 温度管理问题。
  温度管理问题也是模拟退火算法难以处理的问题之一。实际应用中,由于必须考虑计算复杂度的切实可行性等问题,常采用如下所示的降温方式:
  式中k为正的略小于1.00的常数,t为降温的次数。
  是在上购买,以、或出售等形式取得利润的一项经济活动。最关心的是的高低及的大小,在选择时,总希望大而最小,但二者不可能同时满足。初涉股市者往往惧怕,不求收益最大而求风险最小确定使最小,是最关心的问题。是关于在收益不确定条件下的理论,它由提出,且认为理性的投资者应具有“非满足性”和“风险回避性”两个特征。基于Markowitz理论模型,许多学者在定量分析基础上,结合实际操作内容,对其进行改进,得到很多有效的求解证券组合间题的方法,如一种确定最优组合投资权重的新方法、不允许的组合证券投资决策方法以及不允许卖空的证券组合选择模型等。在上述方法中,一般均假定Markowitz模型中的协方差矩阵是正定的,但该条件不具有一般性,因而在使用上受到限制本文提出将模拟退火算法用于求解证券组合问题,探讨如何在一定的条件下,使得投资风险最小。
  一、模拟退火算法模拟
  退火算法是基于迭代求解策略的一种随机寻优算法,它从一较高初温开始,利用具有概率突跳特性的Metrpols抽样策略在解空间中进行随机搜索,伴随温度的不断下降重复抽样过程,直至得到问题的全局最优解标准模拟退火算法的一般步骤描述如下:
  (1)给定初温t = t0,随机产生初始状态:s = s0,令k=0;
  (2)Repeat;
  Repeat;
  产生新状态sj = Generate(s);
  if min{1,exp[-(C(sj)-C(s))/tk]}[0,1]s = sj;
  Until抽样稳定准则满足:
  退温tk + 1 = update(tk),并令k=k+1
  (3)Until算法终止准则满足;
  (4)输出算法结果。
  从以上步骤可以看出,新状态产生函数、新状态接受函数、退温函数、稳定准则和退火结束准则以及初始温度是直接影响算法优化结果的主要环节。由于模拟退火算法采取随机搜索策略所以能够较快地搜索目标函数的全局最优解。
  二、模型的建立
  设一个可以选择的为n种,每种证券的为ri,,则可看作是;R是证券i的.设这。种的投资权重为,则是概率向量;其证券组合的预期收益率为:;用&ij表示第i种证券预期收益和第i种证券预期收益的,E是该证券组合的协方差矩阵。
  为使投资风险最小,间题归结为求解如下问题:
  其中第一个关系式反映投资风险极小化是预期收益率一定的条件下的:第二个关系式是预期收益率满足一个理想且合理的条件;第三个关系式是概率向量固有性质;RP是供投资决策者选择证券组合的预期收益率。
  在投资中,投资比重可能含有负分量,即对应的证券进行卖空操作,卖空是卖出该证券,将出售的收人投资于其它种类的证券.但是有时不允许卖空,因此本文假设投资比重大于零。
  借鉴标准的模拟退火算法,结合上述模型,具体分析过程如下:。
  步骤1:确定初始投资概率向量,满足X1 + X2 + ldots + Xn = 1。计算目标函数值。
  确定最大的循环迭代次数L,在实际计算中,可将L定为一固定数矿,其中n^2为变量个数,置k=1;
  步赚2;随机迭取变量可在[0,1]内选取),进行归一化处理,使之成为概率量。令,计算新目标函数值;
  步骤3:比较两个目标函数值如果,则用新向量代替原向量;
  步骤4:若不满足停止判据且尚未达到最大迭代次数,则置k=k十1,转步骤2;否则停止计算,输出最终结果。停止判据可以设为:
  其中&为预先设定的小的正数。
  实证分析。
  下面结合上述具体过程,利用实例说明在收益率RP固定情况下,求风险最小的投资组成的可行性。若一个证券组合由三个证券组成,根据历史资料,由前述协方差矩阵计算公式,得出其协方差矩阵的估计值如下:。
  其中收益率RP以及三个证券的预期收益率由程序输人,运行结果如表1所示。
  程序运行结果
输人R1 = 0.24;R2 = 0.15;R3 = O.33
RP=0.75RP=0.95
输出结果IIIIIIIV
X10.3566000.1662000.4607000.711900
X20.3974930.2916630.4206000.059233
X30.2459070.5421370.1187000.228867
csfx0.2959870.2483320.5718780.507709
jsfx0.2359320.3363760.4487420.582512
X[1]0.1322520.1662000.3327370.711900
X[2]0.2483480.2916630.0733870.059233
X[3]0.6194010.5421370.5938760.228867
  通过结合分析可得到如下结论:
  (1)随着组合证券预期收益率RP的增大,组合的风险严格增大。
  (2)计算的投资比例向量可直接作为投资比例系数,虽然计算结果不一定最优,但至少可保证结果令人满意。
  (3)由表1数据可以看出,由于随机产生初始投资向量与新产生的投资向量,因此在输人量相同情况下,可导致最终输出结果不一致,因此可适当增加其迭代次数或将进一步缩小程序停止判据条件范围,反复调试,即可得到满意的组合证券投资比例向最。
  (4)若最终计算的大于初始时,则输出初始投资向量;否则用新产生的投资向量代替初始投资向量,这符合投资者心理行为。投资者希望提高投资的收益率,但增加的风险会远远超过投资者的实际(或者心理)承受能力,因此投资者应权衡收益与风险的利弊,做出慎重选择。
  基于模拟退火算法的证券组合优化解决方法,它不要求马氏模型中的协方差矩阵具有任何特性,计算得到的投资概率向量可直接作为投资比例系数,为提供了理论依据。
蔡自兴《人工智能》[M]第五章 计算智能(2)
丁雪梅,伦立军,辛英.基于模拟退火算法的证券投资最优组合理论研究[J].哈尔滨师范大学自然科学学报,)
本条目对我有帮助47
&&如果您认为本条目还有待完善,需要补充新内容或修改错误内容,请。
本条目相关文档
& 10页& 5页& 4页& 7页& 7页& 5页& 3页& 7页& 10页& 3页
本条目由以下用户参与贡献
(window.slotbydup=window.slotbydup || []).push({
id: '224685',
container: s,
size: '728,90',
display: 'inlay-fix'
评论(共2条)提示:评论内容为网友针对条目"模拟退火算法"展开的讨论,与本站观点立场无关。
发表评论请文明上网,理性发言并遵守有关规定。
以上内容根据网友推荐自动排序生成小木虫 --- 500万硕博科研人员喜爱的学术科研平台
&&查看话题
关于模拟退火算法的一些问题
刚接触模拟退火算法,有一些疑惑,望大神指教。
模拟退火算法问题.png
其实一般我也建议这么做
但是我中学还是本科的时候老师就讲过
这样做其实有个问题
原本满足正态分布的误差取对数之后不一定会满足正态分布
楼主拟合的又不是正态分布,话说回来,拟合正态分布也不难啊,取了对数就是拟合一个二次函数而已。。本质没区别:cool:
我的意思是,好像误差是正态分布的时候,最小二乘估计才是无偏的:P:P
要拟合的函数其实不是这个,我只是举了这么一个例子,不太恰当了,原函数是
模拟退火算法追问.png
其实我就是想知道我上面提出来的那几个问题。以上的具体函数不太需要对号入座。大神能解释一下这三个问题吗?:)
我就想知道关于模拟退火算法中的这几个问题的答案,拟合函数不用对号入座。大神求解:P
爱莫能助……我不懂算法
最小二乘容易陷入局部最优解,模拟退火算法容易寻求到全局最优解,所以目标函数用的是最小二乘法的形式,但采用模拟退火算法来寻求最优解,是不是应该更精确呢
研究生必备与500万研究生在线互动!
扫描下载送金币
浏览器进程
打开微信扫一扫
随时随地聊科研}

我要回帖

更多关于 移动硬盘分几个区好 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信