突变後的S运算式.PPT

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
突变後的S运算式

* * 第 10 講 演化計算 :演化策略 及遺傳程式設計 演化策略 遺傳程式設計 總結 另一個模擬自然演化的方法是20世紀60年代早期在德國提出的。和基因演算法不同,這種稱為演化策略的方法用於解決技術最佳化的問題。 演化策略 1963年,柏林技術大學的兩個學生Ingo Rechenberg和Hans-Paul Schwefel致力於研究流體的最佳化形狀。在工作中,他們使用了Institute of Flow Engineering的風洞。由於這是一個艱苦且需要依靠直覺的工作,他們決定按照自然突變的例子來隨機改變形狀的參數,結果便產生了演化策略。 演化策略是可替代工程師直覺的一種方法。 和基因演算法不同,演化策略僅用到突變運算。 演化策略 演化策略最簡單的形式是(1+1)演化策略,即使用常態分佈突變使每代一個雙親只產生一個後代。(1+1)演化策路的實現方法如下: 定義每個參數的標準差和需要最佳化的函數。 步驟 1:選擇表示問題的N個參數,然後確定每個參數的可行的範圍: 步驟 2:在每個參數各自的可行範圍內隨機選擇初始值。這些參數值的集合就是親代參數的初始種群: x1, x2, . . . , xN X = f (x1, x2, . . . , xN) 步驟 3:計算親代參數的解決方案: 步驟 4:透過增加常態分佈的隨機變數a(其均值為0)及預先定義的變異數δ為每個親代參數建立新的參數(後代): 均值為0的常態分佈的突變反映了演化的自然過程,即較小變化的發生的機率遠遠大於較大的變化發生的機率。 步驟 5:計算後代參數的解決方案: i = 1, 2, . . . , N 步驟 6:比較子代參數和親代參數的解決方案。如果子代的解決方案比較好,就用子代種群替代親代種群。否則,保留親代參數。 步驟 7:回到步驟4,重複這個過程,直到得到滿意的解決方案,或者達到了指定的遺傳代數為止。 演化策略反映了染色體的本質。 單個的基因可能會同時影響到生物體的幾個特徵。 另一方面,生物體的單個特徵也可能由幾個基因同時確定。 自然選擇作用在一組基因而不是單個基因上。 電腦科學的一個核心問題就是如何能讓電腦在沒有明確程式設計的情況下知道如何解決問題。 遺傳程式設計提供了解決這個問題的方法,即透過自然選擇的方法來使電腦程式演化。 實際上遺傳程式設計是傳統基因演算法的擴展,但遺傳程式設計的目的不僅僅是用位元字串來表示問題,而是要編寫解決問題的程式。 遺傳程式設計 遺傳程式設計是演化計算領域最新發展成果。在20世紀90年代,John Koza對遺傳程式設計的發展產生了很大的作用。 根據Koza的理論,遺傳程式設計為非常適合待解決的問題的程式搜尋電腦程式設計的可能空間。 任何的電腦程式都是應用到值(參數)的一系列運算(函數)。但不同的程式語言包含有不同的描述、運算及語法限制。 由於遺傳程式設計是用遺傳運算來操作程式,因此,程式語言應該允許電腦程式可以像資料一樣運算,並且新建立的資料可以作為程式執行。由於上述的原因,通常選擇LISP作為遺傳程式設計的主要語言。 LISP具有高度符號導向的結構。其基本資料結構是原子和表。原子是LISP語法中不可分割的最小元素。數字 21,符號 X 和字串“This is a string”都是LISP原子的例子。表是由原子或其他表組成的物件。LISP表可以寫為圓括號中項目的有序集合。 LISP 結構 例如: 此表要求呼叫減號函數(-)處理兩個引數,也就是表(*AB)和原子C。首先,LISP對原子A和B使用乘函數(*),得到列表(*AB)的結果,然後用減函數(-)計算整個(- (*AB)C)的結果。 (- (* A B) C) LISP 結構 原子和表都稱作符號運算式或S運算式。在LISP中,所有的資料和程式都是S運算式。因此,LISP可以像運算元一樣運算程式。也就是說,LISP程式可以修改它們自己,甚至編寫出其他的LISP程式。LISP的這個重要的特點對於遺傳程式設計而言非常有吸引力。 任何LISP的S運算式都可以表達成一棵用節點標記成有根的、具有有序分支的樹。 LISP S運算式的表示圖 LISP S運算式(- (*AB) C) 如何使用遺傳程式設計來解決問題? 在使用遺傳程式設計來解決問題前,必須先執行五個預備步驟: (1) 確定終端集合。 (2) 選擇基本函數集。 (3) 定義適應性函數。 (4) 確定控制執行的參數。 (5) 選擇指定執行結果的方法。 可以用畢氏定理來說明這些預備步驟,並證明遺傳程式設計的潛力。畢氏定理說明,直角三角形的斜邊c和兩個直角邊a、b有以下關係: 遺傳程式設計的目的是找到和這個函數匹配的程式。 為了測量至今

您可能关注的文档

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档