Genetic Algorithm
基因演算法
原本這堂是逆運動學 但我好累
所以來講啟發式演算法!
先講一下啟發式演算法是啥
人類提出了很多種的"問題"
其中有些問題很難解,我們沒有快速的演算法解決這類問題
嚴格定義就是沒有多項式時間解
此類問題稱為 NP 問題
而我們觀察大自然或是一些物理現象
學習其中的優點 提出一個演算法
此類演算法就是“啟發式演算法”
球僮問題

有一個撞球桌
我們想在上面放N個球,讓一個固定角度的竿子以
固定力度擊打,怎麼擺才能一竿清台
所以我們需要訓練一個球童來擺球
這個球童我們假設他們叫撞球星人
撞球星人的一生
只有一個任務
擺球
生小孩
讓小孩擺球
死
我們假設
撞球星人的基因是一串
二進制編碼,我們可以把編碼轉成
球的擺放方式(座標)
那問題就是
我們要怎麼找到最棒的撞球星人
以及他的基因序
GA 的流程
GA 的流程
我們會有 n 個撞球星人
他們是第一代祖先
我們讓撞球星人們都擺一遍球
打一遍,然後根據他擺得好不好,
評出一個分數 k
GA 的流程
150
150
150
75
75
把分數k們根據大小填入圓餅圖,
分數越高的佔比越大
GA 的流程
把分數k們根據大小填入圓餅圖,
分數越高的佔比越大
150
150
150
75
75
GA 的流程
把分數k們根據大小填入圓餅圖,
分數越高的佔比越大
150
150
150
75
75
轉這個轉盤,
隨機取出一個人
GA 的流程
把分數k們根據大小填入圓餅圖,
分數越高的佔比越大
150
150
150
75
75
轉這個轉盤,
隨機取出一個人
轉這個轉盤,
隨機再取出一個人
GA 的流程
讓兩位撞球星人生 n 個小孩
作為下一代
GA 的流程
讓兩位撞球星人生 n 個小孩
作為下一代
GA 的流程
再讓撞球星人們都擺一遍球
打一遍,然後根據他擺得好不好,
評出一個分數 k
如此往復...
直到我們找到一個很棒的撞球星人
怎麼生小孩?
基因突變
基因互換
基因互換
假設現在有兩個撞球星人要生小孩
0100110101101
1010010011101
基因互換
假設現在有兩個撞球星人要生小孩
0100110101101
1010010011101
隨機切兩刀
基因互換
假設現在有兩個撞球星人要生小孩
0100010011101
1010110101101
隨機切兩刀 將區段內的部分互換
隨便抓上面或下面其中一個作為小孩
基因突變
0100010011101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率30%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0100010011101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率30%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0100010011101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0100010011101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0000010011101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0000010011101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0000010011101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0000010011101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0000010011101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0000011011101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0000011011101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0000011011101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0000011010101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0000011010101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0000011010101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0000011010101
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0000011010100
互換還不夠
我們要讓他突變 增加多樣性
假設突變機率10%
我們會遍歷所有的基因序列,並決定他要不要突變 (1->0 0->1)
基因突變
0000011010100
互換還不夠
我們要讓他突變 增加多樣性
這樣一個小孩就算生好了
注意:突變跟互換的方法並不唯一
Genetic Algorithm
By wen Ian
Genetic Algorithm
- 50