﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-逖靖寒的世界</title><link>http://www.cnblogs.com/gpcuster/</link><description>Share my world.
Share your viewpoint.</description><language>zh-cn</language><lastBuildDate>Thu, 24 Jul 2008 21:17:24 GMT</lastBuildDate><pubDate>Thu, 24 Jul 2008 21:17:24 GMT</pubDate><ttl>60</ttl><item><title>Enjoy the Game</title><link>http://www.cnblogs.com/gpcuster/archive/2008/06/29/1232155.html</link><dc:creator>逖靖寒</dc:creator><author>逖靖寒</author><pubDate>Sun, 29 Jun 2008 14:01:00 GMT</pubDate><guid>http://www.cnblogs.com/gpcuster/archive/2008/06/29/1232155.html</guid><wfw:comment>http://www.cnblogs.com/gpcuster/comments/1232155.html</wfw:comment><comments>http://www.cnblogs.com/gpcuster/archive/2008/06/29/1232155.html#Feedback</comments><slash:comments>52</slash:comments><wfw:commentRss>http://www.cnblogs.com/gpcuster/comments/commentRss/1232155.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/gpcuster/services/trackbacks/1232155.html</trackback:ping><description><![CDATA[摘要: 时间过得真快，还有2天就要出发了。 &nbsp;&nbsp;<a href='http://www.cnblogs.com/gpcuster/archive/2008/06/29/1232155.html'>阅读全文</a><img src ="http://www.cnblogs.com/gpcuster/aggbug/1232155.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41284/" target="_blank">[新闻]奇虎回应:瑞星半年免费版像是一个恶意软件</a>]]></description></item><item><title>虚拟村庄1</title><link>http://www.cnblogs.com/gpcuster/archive/2008/06/28/1231674.html</link><dc:creator>逖靖寒</dc:creator><author>逖靖寒</author><pubDate>Sat, 28 Jun 2008 08:08:00 GMT</pubDate><guid>http://www.cnblogs.com/gpcuster/archive/2008/06/28/1231674.html</guid><wfw:comment>http://www.cnblogs.com/gpcuster/comments/1231674.html</wfw:comment><comments>http://www.cnblogs.com/gpcuster/archive/2008/06/28/1231674.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/gpcuster/comments/commentRss/1231674.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/gpcuster/services/trackbacks/1231674.html</trackback:ping><description><![CDATA[<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/gpcuster/vv1.jpg" /><br />
这个游戏就是一个模拟的人工生命体，Agent在这个小环境里面，借助玩家的帮助来生存。<br />
以上我的游戏统计截图：注意看（游戏时间）我的排名是第一哦：）<br />
<br />
<img src ="http://www.cnblogs.com/gpcuster/aggbug/1231674.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41283/" target="_blank">[新闻]鲍尔默致员工信：部署09年微软5大工作重心</a>]]></description></item><item><title>人工神经网络入门（4） —— AForge.Net简介</title><link>http://www.cnblogs.com/gpcuster/archive/2008/06/24/1229140.html</link><dc:creator>逖靖寒</dc:creator><author>逖靖寒</author><pubDate>Tue, 24 Jun 2008 13:05:00 GMT</pubDate><guid>http://www.cnblogs.com/gpcuster/archive/2008/06/24/1229140.html</guid><wfw:comment>http://www.cnblogs.com/gpcuster/comments/1229140.html</wfw:comment><comments>http://www.cnblogs.com/gpcuster/archive/2008/06/24/1229140.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.cnblogs.com/gpcuster/comments/commentRss/1229140.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/gpcuster/services/trackbacks/1229140.html</trackback:ping><description><![CDATA[摘要: 这篇文章中，我们将介绍一个用C#实现的框架AForge，利用这个框架，您可以方便地操作人工网络，计算机视觉，机器学习，图像处理，遗传算法等<br><br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/gpcuster/archive/2008/06/24/1229140.html'>阅读全文</a><img src ="http://www.cnblogs.com/gpcuster/aggbug/1229140.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41282/" target="_blank">[新闻]陈一舟:Facebook也抄袭过校内 不怕打官司</a>]]></description></item><item><title>人工神经网络入门（3） —— 多层人工神经网络应用示例</title><link>http://www.cnblogs.com/gpcuster/archive/2008/06/22/1227733.html</link><dc:creator>逖靖寒</dc:creator><author>逖靖寒</author><pubDate>Sun, 22 Jun 2008 12:15:00 GMT</pubDate><guid>http://www.cnblogs.com/gpcuster/archive/2008/06/22/1227733.html</guid><wfw:comment>http://www.cnblogs.com/gpcuster/comments/1227733.html</wfw:comment><comments>http://www.cnblogs.com/gpcuster/archive/2008/06/22/1227733.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/gpcuster/comments/commentRss/1227733.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/gpcuster/services/trackbacks/1227733.html</trackback:ping><description><![CDATA[摘要: 我们可以使用第一篇文章中的代码来计算这个结果http://www.cnblogs.com/Files/gpcuster/ANN1.rar（需要修改其中的训练集），可以发现学习后的结果不能让我们满意，原因是单层神经网络学习能力有限，需要使用更加复杂的网络来学习。<br>在这一篇文章中，我们将使用一个新的多层神经网络来学习。&nbsp;&nbsp;<a href='http://www.cnblogs.com/gpcuster/archive/2008/06/22/1227733.html'>阅读全文</a><img src ="http://www.cnblogs.com/gpcuster/aggbug/1227733.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41281/" target="_blank">[新闻]微软重组视窗与在线业务</a>]]></description></item><item><title>关于选用Python IDE的一些思考</title><link>http://www.cnblogs.com/gpcuster/archive/2008/06/19/1225817.html</link><dc:creator>逖靖寒</dc:creator><author>逖靖寒</author><pubDate>Thu, 19 Jun 2008 05:15:00 GMT</pubDate><guid>http://www.cnblogs.com/gpcuster/archive/2008/06/19/1225817.html</guid><wfw:comment>http://www.cnblogs.com/gpcuster/comments/1225817.html</wfw:comment><comments>http://www.cnblogs.com/gpcuster/archive/2008/06/19/1225817.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/gpcuster/comments/commentRss/1225817.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/gpcuster/services/trackbacks/1225817.html</trackback:ping><description><![CDATA[下面这个链接给出了所以你开发Python所需要的工具集合<br />
http://wiki.python.org/moin/DevelopmentTools<br />
<br />
但是，对于像我这样的初学者来说，如何选用一个合适的IDE就尤为重要。<br />
<br />
当我们安装完Python的运行库以后，系统有一个自带的IDLE，这个工具的基本功能都有，初学者可以直接使用。<br />
但是我发现有一个更好的IDE适合像我这样的初学者来使用：ActiveState ActivePython 2.5（也叫PythonWin Editor）<br />
为什么说要推荐这个IDE？<br />
1 安装方便：要使用Python非常简单，您不需要做任何事情，唯一的就是将这个安装文件安装就可以搞定，里面包括了运行库，工具，文档。<br />
2 文档完善：里面的帮助文档非常棒，有官方的Python文档，Python Enhancement Proposals (PEPs), Non-Programmer's Tutorial for Python
(intended for beginners), Dive Into Python (intended
for programmers), Python FAQs, Python HOWTOs.使用起来很方便：）<br />
3 使用简单明了：这个就有待你自己的体验了。<br />
<br />
当你熟悉Python了，就可以使用更加强大的IDE了，有2个比较有名的IDE是Komodo-IDE和WingIDE<br />
至于选择哪个，那就是您自己的偏好了。<br />
<img src ="http://www.cnblogs.com/gpcuster/aggbug/1225817.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41280/" target="_blank">[新闻]我国网民数达2.53亿超美国居世界首位</a>]]></description></item><item><title>Java版的Python，Jython</title><link>http://www.cnblogs.com/gpcuster/archive/2008/06/19/1225145.html</link><dc:creator>逖靖寒</dc:creator><author>逖靖寒</author><pubDate>Thu, 19 Jun 2008 01:09:00 GMT</pubDate><guid>http://www.cnblogs.com/gpcuster/archive/2008/06/19/1225145.html</guid><wfw:comment>http://www.cnblogs.com/gpcuster/comments/1225145.html</wfw:comment><comments>http://www.cnblogs.com/gpcuster/archive/2008/06/19/1225145.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/gpcuster/comments/commentRss/1225145.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/gpcuster/services/trackbacks/1225145.html</trackback:ping><description><![CDATA[今天突然发现有一个叫<a href="http://wiki.python.org/jython/">Jython</a>的脚本语言，他是一个用Java实现的Python。<br />
<br />
咱们来看看他们之间有什么不同。<br />
<br />
原文参考地址http://wiki.python.org/jython/WhyJython<br />
<h2 id="head-4cfa12adfa33bbbbd1527d8efc0e480321469c64">为什么要 Jython</h2>
<p class="line874">现在有许多语言实现了 Java VM. 下面的这些介绍将 Jython 其他的语言实现中区分开来: </p>
<ul>
    <li>动态地编译成 Java 字节码</li>
    <li>扩展Java原有Class的能力</li>
    <li>能创建多中类型的程序</li>
    <li>具有Bean的属性</li>
    <li>Python 的语法</li>
</ul>
<p class="line867">
</p>
<h2 id="head-c1cde7ead897588e3d1474d4092fc848c48a4833">为什么 Jython 做得非常好?</h2>
<ul>
    <li>Prototyping </li>
    <li>Java investigation
    <ul>
        <li style="list-style-type: none;">
        <pre>    &gt;&gt;&gt; from java.util import Date<br />
        &gt;&gt;&gt; d = Date()<br />
        &gt;&gt;&gt; print d<br />
        Sat Jan 08 16:26:16 CST 2005<br />
        &gt;&gt;&gt; from java.util import Random<br />
        &gt;&gt;&gt; print dir(Random)<br />
        ['__init__', 'nextBoolean', 'nextBytes', 'nextDouble', 'nextFloat',<br />
        'nextGaussian', 'nextInt', 'nextLong', 'seed', 'setSeed']<br />
        &gt;&gt;&gt;<br />
        </pre>
        </li>
    </ul>
    </li>
    <li class="gap">Making bean properties accessible
    <ul>
        <li style="list-style-type: none;">
        <pre>    &gt;&gt;&gt; print Date().time<br />
        1105500911121<br />
        </pre>
        </li>
    </ul>
    </li>
    <li class="gap">Glues together libraries already written in Java </li>
    <li>Excellent embedded scripting language
    <ul>
        <li>Object Domain UML Tool </li>
        <li>
        <p class="line891"><a href="http://wiki.python.org/jython/PushToTest">PushToTest</a> </p>
        </li>
        <li>Drools </li>
    </ul>
    </li>
</ul>
<hr />
<p class="line874"> </p>
<p class="line867">
</p>
<h2 id="head-f7c1a5b1ce57e3c9b12381cbc2efc94c12dccd56">Python &amp; Jython 的区别<br />
</h2>
<p class="line867"><strong>Python</strong> </p>
<ul>
    <li>C </li>
    <li>Multi-platform </li>
    <li>Compiles to .pyc </li>
    <li>Extend with C </li>
    <li>
    <p class="line862">GIL <sup><a href="http://wiki.python.org/jython/WhyJython#fndef-0edd12e1f236f8b9c64bb66c211e066bace41c1a-0" id="fnref-0edd12e1f236f8b9c64bb66c211e066bace41c1a-0">1</a></sup> </p>
    </li>
    <li>Python Garbage Collection </li>
</ul>
<p class="line867"><strong>Jython</strong> </p>
<ul>
    <li>100% Java </li>
    <li>Any JVM (currently 1.1+) </li>
    <li>Compiles to .class </li>
    <li>Extend with Java </li>
    <li>Truly multi-threaded </li>
    <li>Java garbage collection </li>
</ul>
看到以上这些，我不禁要为这些为软件默默奉献的人感到敬佩。<br />
<br />
<br />
<img src ="http://www.cnblogs.com/gpcuster/aggbug/1225145.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41280/" target="_blank">[新闻]我国网民数达2.53亿超美国居世界首位</a>]]></description></item><item><title>分享2个Python的学习资源</title><link>http://www.cnblogs.com/gpcuster/archive/2008/06/18/1224447.html</link><dc:creator>逖靖寒</dc:creator><author>逖靖寒</author><pubDate>Wed, 18 Jun 2008 02:40:00 GMT</pubDate><guid>http://www.cnblogs.com/gpcuster/archive/2008/06/18/1224447.html</guid><wfw:comment>http://www.cnblogs.com/gpcuster/comments/1224447.html</wfw:comment><comments>http://www.cnblogs.com/gpcuster/archive/2008/06/18/1224447.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/gpcuster/comments/commentRss/1224447.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/gpcuster/services/trackbacks/1224447.html</trackback:ping><description><![CDATA[<ol>
    <li>《dive into Python》是一本非常不错的免费电子书，您可以在http://diveintopython.org/下载到英文版和中文版。</li>
    <li>还有一个非常不错的免费的IDE， ActivePython。您可以在http://www.activestate.com/Products/ActivePython/下载。这个IDE提供了Python的运行库，完善的文档。使用起来非常的方便,感觉就是All In One<br />
    </li>
</ol>
<br />
<img src ="http://www.cnblogs.com/gpcuster/aggbug/1224447.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41278/" target="_blank">[新闻]瑞星炮轰奇虎用阉割版杀毒软件欺骗用户</a>]]></description></item><item><title>利用模拟退火算法求解TSP问题</title><link>http://www.cnblogs.com/gpcuster/archive/2008/06/15/1222245.html</link><dc:creator>逖靖寒</dc:creator><author>逖靖寒</author><pubDate>Sun, 15 Jun 2008 02:51:00 GMT</pubDate><guid>http://www.cnblogs.com/gpcuster/archive/2008/06/15/1222245.html</guid><wfw:comment>http://www.cnblogs.com/gpcuster/comments/1222245.html</wfw:comment><comments>http://www.cnblogs.com/gpcuster/archive/2008/06/15/1222245.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/gpcuster/comments/commentRss/1222245.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/gpcuster/services/trackbacks/1222245.html</trackback:ping><description><![CDATA[&nbsp;示例代码下载<a href="http://www.cnblogs.com/Files/gpcuster/TSP.zip">/Files/gpcuster/TSP.zip</a>
<p style="line-height: normal"><strong><span style="font-size: 13pt; color: #ff9900; font-family: 宋体">介绍</span></strong></p>
<p style="line-height: normal"><span style="font-size: 10pt; color: black; font-family: 宋体">组合优化算法用于解决在一个解空间非常大的情况下快速地求解近似解。这类算法可用于资源管理，操作管理，质量控制等等问题，并且可以在有效的时间里给出一个足够好的近似解。</span></p>
<p style="line-height: normal"><span style="font-size: 10pt; color: black; font-family: 宋体">常见的启发算法有：</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">simulated annealing, tabu search, harmony search, scatter search, genetic algorithms, ant colony optimization</span><span style="font-size: 10pt; color: black; font-family: 宋体">等等。在这篇文章中，我们将讨论</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">simulated annealing</span><span style="font-size: 10pt; color: black; font-family: 宋体">（模拟退火算法）和他在解决</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">TSP</span><span style="font-size: 10pt; color: black; font-family: 宋体">（旅行商）问题中的实际应用。</span></p>
<p style="line-height: normal"><strong><span style="font-size: 13pt; color: #ff9900; font-family: 宋体">背景</span></strong></p>
<p style="line-height: normal"><span style="font-size: 10pt; color: black; font-family: 宋体">模拟退火算法来源于固体退火原理，将固体加温至充分高，再让其徐徐冷却，加温时，固体内部粒子随温升变为无序状，内能增大，而徐徐冷却时粒子渐趋有序，在每个温度都达到平衡态，最后在常温时达到基态，内能减为最小。所以，模拟退火算法的目标就是通过一个目标函数来随机搜索。（这也是所有启发搜索算法的一个共性）</span></p>
<p style="line-height: normal"><span style="font-size: 10pt; color: black; font-family: 宋体">模拟退火算法的优势在于能够有效地避免局部最优问题。在这里，我们现在讨论的这个算法并不总是拒绝使总体目标函数值上升（变差）的结果，而是依据这样一个概率函数：</span></p>
<p style="background: #fbedbb; margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">P = exp (-∆f/T)</span></p>
<p style="line-height: normal"><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">T</span><span style="font-size: 10pt; color: black; font-family: 宋体">代表温度控制参数（类比问题），</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">∆f</span><span style="font-size: 10pt; color: black; font-family: 宋体">是新参数的结果和当前最优解的差值。</span></p>
<p style="line-height: normal"><span style="font-size: 10pt; color: black; font-family: 宋体">这个概率函数是由</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">Metropolis</span><span style="font-size: 10pt; color: black; font-family: 宋体">准则而得来的。</span></p>
<p style="line-height: normal"><strong><span style="font-size: 13pt; color: #ff9900; font-family: 宋体">旅行商问题</span></strong></p>
<p style="line-height: normal"><span style="font-size: 10pt; color: black; font-family: 宋体">旅行商问题就是指旅行商按一定的顺序访问</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">N</span><span style="font-size: 10pt; color: black; font-family: 宋体">个城市的每个城市</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">,</span><span style="font-size: 10pt; color: black; font-family: 宋体">使得每个城市都能被访问且仅能被访问一次</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">,</span><span style="font-size: 10pt; color: black; font-family: 宋体">最后回到起点</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">,</span><span style="font-size: 10pt; color: black; font-family: 宋体">而使花费的代价最小。</span></p>
<p style="line-height: normal"><span style="font-size: 10pt; color: black; font-family: 宋体">为了解决该问题，我们需要了解下面两个问题</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">:<br />
<br />
</span><span style="font-size: 10pt; color: black; font-family: 宋体">1 产生新解的策略</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">: </span><span style="font-size: 10pt; color: black; font-family: 宋体">我们将随机交换已有解中的任意</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">2</span><span style="font-size: 10pt; color: black; font-family: 宋体">个城市的顺序，来产生新的访问顺序（新解）。<br />
</span><span style="font-size: 10pt; color: black; font-family: 宋体">2 目标函数</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'"> (</span><span style="font-size: 10pt; color: black; font-family: 宋体">用于求最小值</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">): </span><span style="font-size: 10pt; color: black; font-family: 宋体">按照对所有城市的访问顺序来求解路径的长度。</span></p>
<p style="line-height: normal"><strong><span style="font-size: 13pt; color: #ff9900; font-family: 宋体">代码的使用</span></strong></p>
<p style="line-height: normal"><em><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">TravellingSalesmanProblem.cs</span></em><span style="font-size: 10pt; color: black; font-family: 宋体">是最要的类</span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'">. </span><span style="font-size: 10pt; color: black; font-family: 宋体">调用</span><span style="color: #990000; font-family: 'Courier New'">Anneal()</span><span style="font-size: 10pt; color: black; font-family: 宋体">方法将计算出访问各个城市的最短路径。<br />
</span><span style="font-size: 10pt; color: black; font-family: 宋体"></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TravellingSalesmanProblem&nbsp;problem&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TravellingSalesmanProblem();<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;problem.FilePath&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">Cities.txt</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;problem.Anneal();</span></div>
<p style="line-height: normal"><br />
<span style="font-size: 10pt; font-family: 宋体"><span style="font-size: 10pt; font-family: 宋体">下面的代码说明了模拟退火算法的基本流程</span><span style="font-size: 10pt; font-family: 'Verdana','sans-serif'">:</span></span></span><span style="font-size: 10pt; color: black; font-family: 'Verdana','sans-serif'"><br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img id="Codehighlighter1_8_75_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_8_75_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_8_75_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_8_75_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_8_75_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_8_75_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_8_75_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_8_75_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_8_75_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_8_75_Open_Text"><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;summary&gt;</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;Annealing&nbsp;Process<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/summary&gt;</span></span><br />
<span style="color: #008080">&nbsp;4</span><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Anneal()<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img id="Codehighlighter1_112_1311_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_112_1311_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_112_1311_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_112_1311_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_112_1311_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_112_1311_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_112_1311_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_112_1311_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_112_1311_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_112_1311_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;iteration&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #800080">1</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;temperature&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">10000.0</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;deltaDistance&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;coolingRate&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0.9999</span><span style="color: #000000">;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;absoluteTemperature&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0.00001</span><span style="color: #000000">;<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoadCities();<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;distance&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GetTotalDistance(currentOrder);<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(temperature&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;absoluteTemperature)<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img id="Codehighlighter1_475_1259_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_475_1259_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_475_1259_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_475_1259_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_475_1259_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_475_1259_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_475_1259_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_475_1259_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_475_1259_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_475_1259_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nextOrder&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GetNextArrangement(currentOrder);<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deltaDistance&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GetTotalDistance(nextOrder)&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;distance;<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">if&nbsp;the&nbsp;new&nbsp;order&nbsp;has&nbsp;a&nbsp;smaller&nbsp;distance<br />
</span><span style="color: #008080">24</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">or&nbsp;if&nbsp;the&nbsp;new&nbsp;order&nbsp;has&nbsp;a&nbsp;larger&nbsp;distance&nbsp;but&nbsp;satisfies&nbsp;Boltzman&nbsp;condition&nbsp;then&nbsp;accept&nbsp;the&nbsp;arrangement</span><span style="color: #008000"><br />
</span><span style="color: #008080">25</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;((deltaDistance&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;(distance&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;Math.Exp(</span><span style="color: #000000">-</span><span style="color: #000000">deltaDistance&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;temperature)&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;random.NextDouble()))<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img id="Codehighlighter1_931_1126_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_931_1126_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_931_1126_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_931_1126_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_931_1126_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_931_1126_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_931_1126_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_931_1126_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_931_1126_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_931_1126_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;nextOrder.Count;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentOrder[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;nextOrder[i];<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;distance&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;deltaDistance&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;distance;<br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">cool&nbsp;down&nbsp;the&nbsp;temperature</span><span style="color: #008000"><br />
</span><span style="color: #008080">34</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temperature&nbsp;</span><span style="color: #000000">*=</span><span style="color: #000000">&nbsp;coolingRate;<br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iteration</span><span style="color: #000000">++</span><span style="color: #000000">;<br />
</span><span style="color: #008080">37</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">38</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080">39</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shortestDistance&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;distance;<br />
</span><span style="color: #008080">40</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
</span>
<img src ="http://www.cnblogs.com/gpcuster/aggbug/1222245.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41277/" target="_blank">[新闻]阿里巴巴正式成立台湾分公司</a>]]></description></item><item><title>人工神经网络入门（2） —— 人工神经基本概念介绍</title><link>http://www.cnblogs.com/gpcuster/archive/2008/06/03/1213008.html</link><dc:creator>逖靖寒</dc:creator><author>逖靖寒</author><pubDate>Tue, 03 Jun 2008 11:14:00 GMT</pubDate><guid>http://www.cnblogs.com/gpcuster/archive/2008/06/03/1213008.html</guid><wfw:comment>http://www.cnblogs.com/gpcuster/comments/1213008.html</wfw:comment><comments>http://www.cnblogs.com/gpcuster/archive/2008/06/03/1213008.html#Feedback</comments><slash:comments>19</slash:comments><wfw:commentRss>http://www.cnblogs.com/gpcuster/comments/commentRss/1213008.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/gpcuster/services/trackbacks/1213008.html</trackback:ping><description><![CDATA[<p>如果您有疑问，可以先参考&nbsp;<a href="http://www.cnblogs.com/gpcuster/archive/2008/05/22/1204705.html">FAQ</a> <br />
如果您未找到满意的答案，可以在下面留言：）<br />
首先向大家道歉，很长时间没有来更新文章了。最近杂事太多，不好意思。 </p>
<p><strong>1 介绍 </strong></p>
<p>在<a href="http://www.cnblogs.com/gpcuster/archive/2008/05/22/1204456.html" target="_blank">上一篇文章</a>中，我们已经看到了一个简单的关于ANN实际应用程序，这篇文章中，我将简单地介绍一下ANN的最最基础的知识以及上一篇文章中的程序原理的说明。 </p>
<p><strong>2 ANN的最最基础的知识 </strong></p>
<p>ANN算法起源于生物体的神经系统，相信大家对生物神经系统的工作方式都非常了解，这里我也就不详细介绍了，不过，为了后续说明的方便，给大家上一个截图：<br />
&nbsp;
<div align="center"><img height="348" alt="" src="http://www.cnblogs.com/images/cnblogs_com/gpcuster/zz1.jpg" width="583" border="0" /></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="text-align: center">图1 </p>
<p>根据生物神经系统的工作过程，我们可以大概理解以下这个图所要表达的含义： <br />
<div align="center"><img height="257" alt="" src="http://www.cnblogs.com/images/cnblogs_com/gpcuster/zzz2.jpg" width="555" border="0" /></div>
<br />
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="text-align: center">图2 </p>
<p>大家可以想象这样一种情形：寒冷的冬天，我们伸手到火炉边烤火，慢慢地，你觉得自己快要睡着了，这个时候，突然发现自己伸在火炉边的手特别烫得疼，然后马上将手缩回去。这就是一个神经网络的工作实例，火对手产生的温度就是图2的输入层（Input），而缩手或不缩手就是图2的输出层（Output）。但是缩手只有在手的温度达到一定的程度才发生的，比如说40度。 </p>
<p>用图2来表示上面所说的情形： </p>
<p>X1 = 火对手产生的温度 </p>
<p>w1 =火对手产生的温度的权值（对火对手产生的温度的放大或是缩小，我们让这个值为1） </p>
<p>激活函数（Active Function）= 如果 x1 * w1 &gt; 40 激活（缩手），否则抑制（不缩手） </p>
<p>这是单输入的情况，如果有多个输入，则输出为 f(x1 * w1 + x2 * w2 + x3 * w3 &#8230;) </p>
<p>其中，f(x)为激活函数。 </p>
<p>下面，我们来看2个多输入的神经网络结构图： </p>
<p>AND运算 </p>
<p>
<div align="center"><img height="123" alt="" src="http://www.cnblogs.com/images/cnblogs_com/gpcuster/4324rwerewr.jpg" width="522" border="0" /></div>
<p>&nbsp;</p>
<p>其中f(x) = </p>
<p>If (x &gt;= 2) return 1; </p>
<p>Else return 0; </p>
<p>阀值为2 </p>
<p>我们可以利用这个结构图来检验一下是否正确： </p>
<p>X1 = 0, x2 = 0, x = x1*w1 + x2*w2 = 0 f(x) = 0;正确 </p>
<p>X1 = 0, x2 = 1, x = x1*w1 + x2*w2 = 1 f(x) = 0;正确 </p>
<p>X1 = 1, x2 = 0, x = x1*w1 + x2*w2 = 1 f(x) = 0;正确 </p>
<p>X1 = 1, x2 = 1, x = x1*w1 + x2*w2 = 2 f(x) = 0;正确 </p>
<p>OR运算 </p>
<p>
<div align="center"><img height="123" alt="" src="http://www.cnblogs.com/images/cnblogs_com/gpcuster/4324rwerewr.jpg" width="522" border="0" /></div>
<p>&nbsp;</p>
<p>其中f(x) = </p>
<p>If (x &gt;= 1) return 1; </p>
<p>Else return 0; </p>
<p>阀值为1 </p>
<p>我们可以利用这个结构图来检验一下是否正确： </p>
<p>X1 = 0, x2 = 0, x = x1*w1 + x2*w2 = 0 f(x) = 0;正确 </p>
<p>X1 = 0, x2 = 1, x = x1*w1 + x2*w2 = 1 f(x) = 1;正确 </p>
<p>X1 = 1, x2 = 0, x = x1*w1 + x2*w2 = 1 f(x) = 1;正确 </p>
<p>X1 = 1, x2 = 1, x = x1*w1 + x2*w2 = 2 f(x) = 1;正确 </p>
<p>上面2个实例，就是我上篇文章中所需要建立的一个神经网络模型。 </p>
<p>但是我们如何确定w1,w2和阀值呢？ </p>
<p>这就需要通过神经网络来学习，从而确定w1,w2和阀值。 </p>
<p><strong>2 学习 </strong></p>
<p>拿计算AND运算的模型来说，需要2个输入1个输出是肯定的。关键就是如何确定2个输入的权值和激活函数的阀值。 </p>
<p>为了计算激活函数的阀值，我们可以增加一个输入层，变成这个样子 </p>
<p>
<div align="center"><img height="274" alt="" src="http://www.cnblogs.com/images/cnblogs_com/gpcuster/545333.jpg" width="497" border="0" /></div>
<p>&nbsp;</p>
<p>这样，我们只需让激活函数f(x)= </p>
<p>If (x &gt;= 1) return 1; </p>
<p>Else return 0; </p>
<p>即可。至于阀值究竟是多少，可以让w3的值去确定。这样，原先的问题就转化成了求解w1, w2 ,w3的大小的问题了。 </p>
<p>接下来，我们制定这样的学习规律： </p>
<p>W(i) = &nbsp;&nbsp;&nbsp;&nbsp;W(i)&nbsp;&nbsp;&nbsp;&nbsp;+ (正确值-实际计算的值)*x(i). </p>
<p>通过一定次数的训练，我们就可以让&nbsp;&nbsp;&nbsp;&nbsp;(正确值-实际计算的值)变得相当下，这样最后的结果也就稳定了，同时求出了我们需要的w1, w2 ,w3的近似值。 </p>
<p><strong>3实际执行过程 </strong></p>
<ul>
    <li>得到训练集合（合理的输入和期望的输出（如：输入x1=1，x2=1输出1））
    <li>随机给w1, w2,w3赋值
    <li>执行一定次数的训练 </li>
</ul>
<p><span style="font-size: 10pt"><strong><span style="font-family: Arial">4 </span><span style="font-family: 宋体">预告</span><span style="font-family: Arial"><br />
</span></strong><span style="font-family: 宋体">在下一篇文章中，我将介绍和一个多层的神经网络，用于计算XOR（异或）操作。</span><span style="font-family: Arial"> </span></span></p>
<p><span style="font-size: 10pt"><strong><span style="font-family: Arial">5 </span><span style="font-family: 宋体">总结</span><span style="font-family: Verdana"><br />
</span></strong><span style="font-family: 宋体">在本文中，咱们介绍了神经网络的简单最最基本的原理和<a href="http://www.cnblogs.com/gpcuster/archive/2008/05/22/1204456.html">上一篇文章</a>的实例原理。</span><span style="font-family: Arial"> </span></span></p>
<p>&nbsp;</p>
  <img src ="http://www.cnblogs.com/gpcuster/aggbug/1213008.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41276/" target="_blank">[新闻]浅析facebook的信息架构</a>]]></description></item><item><title>人工神经网络入门（0） —— 关于人工神经网络的FAQ</title><link>http://www.cnblogs.com/gpcuster/archive/2008/05/22/1204705.html</link><dc:creator>逖靖寒</dc:creator><author>逖靖寒</author><pubDate>Thu, 22 May 2008 04:36:00 GMT</pubDate><guid>http://www.cnblogs.com/gpcuster/archive/2008/05/22/1204705.html</guid><wfw:comment>http://www.cnblogs.com/gpcuster/comments/1204705.html</wfw:comment><comments>http://www.cnblogs.com/gpcuster/archive/2008/05/22/1204705.html#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://www.cnblogs.com/gpcuster/comments/commentRss/1204705.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/gpcuster/services/trackbacks/1204705.html</trackback:ping><description><![CDATA[<a href="http://www.cnblogs.com/gpcuster/archive/2008/05/22/1204456.html">今天早上发了一篇关于ANN的文章</a>，给大家演示了一个简单的学习AND运算和OR运算的程序，但是发现大家有很多疑问。<br />
所以通过这篇文章，我希望能对大家的一些常见的疑问给予解答<img alt="" src="http://www.cnblogs.com/Emoticons/qface/055242240.gif" /><br />
<br />
<span style="background-color: yellow">这里的 训练 一词怎么解释？ <br />
学会？ </span><br />
大家通过使用这个程序可以发现：ANN在通过训练以后，可以计算出正确的结果，如1 AND 1 = 1，等等。<br />
如果您阅读了代码会发现，程序中并没有给出如何计算1 AND 1的结果，而是将1，1这两个参数传递给经过训练后ANN，然后由ANN自己计算出结果。<br />
在整个过程中，完全是ANN自己通过一定数量的训练从而达到咱们计算AND运算的结果。<br />
<strong><br />
</strong><span style="background-color: yellow">貌似很深奥,不知道能够最终达到甚么效果,实现甚么功能,机器人?? </span><br />
如果您能够深入地了解ANN，最终会达到非常好的效果，特别是做AI这块。<br />
比如RoboCup的仿真机器人比赛中就有应用，<br />
还有一个非常有名的游戏<a href="http://www.biologic.com.au/bugbrain/">《Bug Brain》</a>，它就是一款通过给一个小虫子设计神经网络而可以在复杂的环境中生存的游戏。有兴趣的朋友可以去了解一下：）<br />
关于这个游戏的玩法和攻略，可以参考<font face="Verdana"><a href="http://hi.baidu.com/szk8888/blog/item/eb1d033b282ac7ea14cecb42.html">http://hi.baidu.com/szk8888/blog/item/eb1d033b282ac7ea14cecb42.html</a></font><br />
<br />
<span style="background-color: yellow">楼主，你要介绍哪种神经网络？我没看出来。。囧。。。 <br />
</span>计划在这一系列文章中，介绍单层和多层（BP）神经网络。<br />
<a id="homepage1_HomePageDays_DaysList_ctl00_DayItem_DayList_ctl01_TitleUrl" href="http://www.cnblogs.com/gpcuster/archive/2008/05/22/1204456.html">人工神经网络入门（1） —— 单层人工神经网络应用示例</a>&nbsp;这个属于最简单明了的单层神经网络。介绍一个网络的主要原因就是帮助咱们先有一个感性的认识。<br />
让我们知道ANN是什么，如果使用。<br />
<br />
<span style="background-color: yellow">神经网络还真的不是很熟悉,楼主能否解释下这里,我看的不是很懂: <br />
&#8220;计算结果&#8221;显示为&#8220;1.74E-10&#8221;，说明 0 AND 0 = 0. </span>
<div></div>
在我的程序中，实际输出的结果只是接近于0，这是正常的。<br />
神经网络计算出来的结果只是近似值。所以你可以在实际的应用中对这个近似值根据实际情况来处理。<br />
<br />
<span style="background-color: yellow">你这个学习网络 来运算54 AND 0 结果为什么是1？ <br />
</span>经过学习的ANN并不一定能计算出所有有效的输入的结果。<br />
造成这样的原因很多，输入节点的个数，隐含层的层数，激活函数，网络类型，训练集合的选取等等。<br />
而且您的54并不是有效输入，所以说结果不会理想。<br />
<br />
<div></div>
<div></div>
<img src ="http://www.cnblogs.com/gpcuster/aggbug/1204705.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41275/" target="_blank">[新闻]Mozilla将于本周五发布Firefox 3.1第一个预览版</a>]]></description></item></channel></rss>