遺傳算法初探

組成要素

編碼

分為二進制編碼、實數編碼和順序編碼

初始種群的產生

分為隨機方法、基于反向學習優化的種群產生。
基于反向學習優化的種群其思想是先隨機生成一個種群P(N),然后按照反向學習方法生成新的種群OP(N),合并兩個種群,得到一個新的種群S(N),對S(N)按適應度排序,選擇適應度最高的N個個體作為初始種群。

適應度函數的設計

f ( x ) f(x) f(x)表示目標函數, F ( x ) F(x) F(x)為適應度函數
線性關系為 F ( x ) = a f ( x ) + b F(x)=af(x) + b F(x)=af(x)+b
冪律關系為 F = f a F=f^a F=fa
對數關系為 F ( x ) = a ? l n f ( x ) + b F(x)=a*lnf(x) + b F(x)=a?lnf(x)+b
指數關系為 F ( x ) = a ? e b f ( x ) + c F(x)=a*e^{bf(x)} + c F(x)=a?ebf(x)+c

選擇策略

對于個體i,其適應度為 F i F_i Fi?,假定規模為n,則個體被選中的概率為 P i = F i ∑ i = 1 n F i P_i=\frac{F_i}{\sum_{i = 1}^n{F_i}} Pi?=i=1n?Fi?Fi??
可以使用錦標賽選擇策略,從種群中選取n個個體,選取最優的個體放入下一代種群中

遺傳操作

有交叉和變異兩種運算。
其中交叉分為有:單點交叉,雙點交叉,單形雜交,球形雜交
變異有:按位變異,高斯變異,有向變異

停止條件

設置最大迭代次數或者適應值函數評估次數,也可以規定的搜索精度

算法流程

N
Y
開始
初始種群
是否滿足停止條件
評價個體
輸出結構
選擇
遺傳操作
產生新種群
結束

數學原理

稱為模式定理
模式的原始長度 L ( H ) L(H) L(H):模板中總的基因位數
模板的定義矩 δ ( H ) \delta(H) δ(H):模板中從左到右第一個確定字符與最后一個確定字符的距離
模板的階數 o ( H ) o(H) o(H):模板中確定字符的個數
模板的容量 D ( H ) D(H) D(H):模板包含字符串的個數,對于二進制編碼來說, D ( H ) = 2 L ( H ) ? O ( H ) D(H)= 2^{L(H)-O(H)} D(H)=2L(H)?O(H)
設第(t+1)代種群 P ( t + 1 ) P(t+1) P(t+1)含有H中元素個數的期望值為 E ( H ? P ( t + 1 ) ) E(H\bigcap P(t+1)) E(H?P(t+1)),l為種群P(t)中個體和串長,在只有選擇操作情況下時
E ( H ? P ( t + 1 ) ) = ∣ H ? P ( t ) ∣ ? N ? f ( H , t ) F ( t ) = ∣ H ? P ( t ) ∣ ? f ( H , t ) F ˉ ( t ) E(H\bigcap P(t+1))=|H\bigcap P(t)| \cdot N \cdot \frac{f(H,t)}{F(t)} = |H\bigcap P(t)| \cdot \frac{f(H, t)}{\bar{F}(t)} E(H?P(t+1))=H?P(t)?N?F(t)f(H,t)?=H?P(t)?Fˉ(t)f(H,t)?
在考慮雜交概率情況下 p c p_c pc?時,期望值為
E ( H ? P ( t + 1 ) ) = ∣ H ? P ( t ) ∣ ? f ( H , t ) F ˉ ( t ) ? ( 1 ? p c ? δ ( H ) l ? 1 ) E(H\bigcap P(t+1))= |H\bigcap P(t)| \cdot \frac{f(H, t)}{\bar{F}(t)} \cdot (1 - p_c \cdot \frac{\delta (H)}{l - 1}) E(H?P(t+1))=H?P(t)?Fˉ(t)f(H,t)??(1?pc??l?1δ(H)?)
在考慮變異概率情況下 p m p_m pm?時,期望值為 E ( H ? P ( t + 1 ) ) = ∣ H ? P ( t ) ∣ ? f ( H , t ) F ˉ ( t ) ? ( 1 ? p c ? δ ( H ) l ? 1 ) ? ( 1 ? p m ) o ( H ) E(H\bigcap P(t+1))= |H\bigcap P(t)| \cdot \frac{f(H, t)}{\bar{F}(t)} \cdot (1 - p_c \cdot \frac{\delta (H)}{l - 1}) \cdot (1 - p_m)^{o(H)} E(H?P(t+1))=H?P(t)?Fˉ(t)f(H,t)??(1?pc??l?1δ(H)?)?(1?pm?)o(H)

非線性約束優化

min ? f ( x ) s.t. g i ( x ) ≤ 0 , i = 1 , 2 , … , m h j ( x ) = 0 , j = 1 , 2 , … , p \begin{equation} \begin{aligned} \min & \quad f(x) \\ \text{s.t.} \quad & g_i(x) \le 0, \quad i = 1, 2, \ldots, m \\ & h_j(x) = 0, \quad j=1,2,\ldots, p \end{aligned} \end{equation} mins.t.?f(x)gi?(x)0,i=1,2,,mhj?(x)=0,j=1,2,,p???
其中 x = [ x 1 , x 2 , … , x n ] x=[x_1, x_2, \ldots, x_n] x=[x1?,x2?,,xn?]
選擇策略有

  • 約束違背的度數
    p ( x ) = ∑ i = 1 m + p q i ( x ) 2 q j ( x ) = { m a x ( 0 , g j ( x ) ) , 1 ≤ j ≤ m ∣ h j ( x ) ∣ , 1 ≤ j ≤ p p(x)=\sum_{i=1}^{m+p} {q_i(x)^2} \\ \begin{equation} q_j(x)=\left\{ \begin{aligned} & max(0, g_j(x)), \quad 1 \le j \le m \\ & |h_j(x)|, \quad 1 \le j \le p \end{aligned} \right. \end{equation} p(x)=i=1m+p?qi?(x)2qj?(x)={?max(0,gj?(x)),1jmhj?(x),1jp???
  • 約束違背的數目
    s ( x ) = ∑ j = 1 m + p n u m j ( x ) n u m ( x ) = { 0 , q j ( x ) ≤ 0 1 , 其他 s(x)=\sum_{j=1}^{m+p} {num_j(x)} \\ \begin{equation} num(x)=\left\{ \begin{aligned} & 0, \quad q_j(x) \le 0 \\ & 1,其他 \end{aligned} \right. \end{equation} s(x)=j=1m+p?numj?(x)num(x)={?0,qj?(x)01,其他???
    個體的特征向量表達為
    v ( x ) = ( f ( x ) , p ( x ) , s ( x ) ) v(x)=(f(x), p(x), s(x)) v(x)=(f(x),p(x),s(x))

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70564.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70564.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70564.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【算法】堆

堆 heap,一棵完全二叉樹,使用數組實現的,但具備完全二叉樹的一些性質。一般總是滿足以下性質: 堆中某個節點的值總是不大于或不小于其父節點的值;堆總是一棵完全二叉樹。(即除了最底層,其他層…

C/C++高性能Web開發框架全解析:2025技術選型指南

一、工業級框架深度解析(附性能實測) 1. Drogon v2.1:異步框架性能王者 核心架構: Reactor 非阻塞I/O線程池(參考Nginx模型) 協程實現:基于Boost.Coroutine2(兼容C11)…

使用PHP接入純真IP庫:實現IP地址地理位置查詢

引言 在日常開發中,我們經常需要根據用戶的IP地址獲取其地理位置信息,例如國家、省份、城市等。純真IP庫(QQWry)是一個常用的IP地址數據庫,提供了豐富的IP地址與地理位置的映射關系。本文將介紹如何使用PHP接入純真IP庫,并通過一個完整的案例演示如何實現IP地址的地理位…

Django ORM 的常用字段類型、外鍵關聯的跨表引用技巧,以及 `_` 和 `__` 的使用場景

一、Django ORM 常用字段類型 1. 基礎字段類型 字段類型說明示例CharField字符串字段,必須指定 max_lengthname models.CharField(max_length50)IntegerField整數字段age models.IntegerField()BooleanField布爾值字段is_active models.BooleanField()DateFiel…

java遞歸求自然數列的前n項和

概述 實現 /*** 數列 1 2 3 ... n ...* 遞歸求數列的前n項和* param n* return*/private static long calSum(long n){if (n1) return 1;else {return ncalSum(n-1); // 前n項的和 即第n項的值前n-1項的和}}測試用例 public static void main(String[] args) {long res1 cal…

【Golang 面試題】每日 3 題(六十五)

?個人博客:Pandaconda-CSDN博客 📣專欄地址:http://t.csdnimg.cn/UWz06 📚專欄簡介:在這個專欄中,我將會分享 Golang 面試中常見的面試題給大家~ ??如果有收獲的話,歡迎點贊👍收藏…

16、Python面試題解析:python中的淺拷貝和深拷貝

在 Python 中,淺拷貝(Shallow Copy) 和 深拷貝(Deep Copy) 是處理對象復制的兩種重要機制,它們的區別主要體現在對嵌套對象的處理方式上。以下是詳細解析: 1. 淺拷貝(Shallow Copy&a…

【Godot4.3】題目與答案解析合并器

免責申明 本文和工具截圖中涉及題庫和題目,均為本人自學使用,并未有商業和傳播企圖。如有侵害,聯系刪改。 概述 筆者本人醫學專業從業人員,編程只是業余愛好。在自己的專業應考學習過程當中: 有時候不太喜歡紙質題庫…

Lm studio本地部署DeepSeek

為什么用Lm studio Ollama官網下載過慢或失敗(Lm默認下載源無法下載,但可以更換下載源)Ollama默認安裝至C盤一部分Nivida顯卡無法吃滿顯存資源一部分AMD顯卡替換rocm文件后無法啟動 Lm studio安裝 官網下載:LM Studio - Discov…

基于Qlearning強化學習的2DoF機械臂運動控制系統matlab仿真

目錄 1.算法仿真效果 2.算法涉及理論知識概要 2.1 2DoF機械臂運動學模型 2.2 Q-learning強化學習算法原理 3.MATLAB核心程序 4.完整算法代碼文件獲得 1.算法仿真效果 matlab2022a仿真結果如下(完整代碼運行后無水印): 仿真操作步驟可參…

Unity貼圖與模型相關知識

一、貼圖 1.貼圖的類型與形狀 貼圖類型 貼圖形狀 2.在Unity中可使用一張普通貼圖來生成對應的法線貼圖(但并不規范) 復制一張該貼圖將復制后的貼圖類型改為Normal Map 3.貼圖的sRGB與Alpha sRGB:勾選此選項代表此貼圖存儲于Gamma空間中…

快速上手 Unstructured:安裝、Docker部署及PDF文檔解析示例

1. 核心概念 1.1 Unstructured簡介 Unstructured 是一個強大的 Python 庫,專注于從非結構化數據中提取和預處理文本信息,廣泛應用于 PDF、Word 文檔、HTML 等多種格式的文件處理。其核心功能包括分區、清理、暫存和分塊,能夠將復雜的非結構化文檔轉換為結構化輸出,為后續…

pyecharts介紹

文章目錄 介紹安裝pyecharts基本使用全局配置選項 折線圖相關配置地圖模塊使用柱狀圖使用 介紹 echarts慮是個由百度開源的數據可視化,憑借著良好的交互性,精巧的圖表設計,得到了眾多開發者的認可,而Pyhon是門富有表達力的語言&a…

Fisher信息矩陣與Hessian矩陣:區別與聯系全解析

Fisher信息矩陣與Hessian矩陣:區別與聯系全解析 在統計學和機器學習中,Fisher信息矩陣(FIM)和Hessian矩陣是兩個經常出現的概念,它們都與“二階信息”有關,常用來描述函數的曲率或參數的敏感性。你可能聽說…

python與C系列語言的差異總結(1)

/ 表示浮點除法 // 表示整數除法 print(8/3)print(8//3)布爾型 False/True 首字母大寫 整數的大小是沒有限制的,會根據需要自動增長,僅受限于可用內存的大小。 m**n表示m的n次方 x 4.3 ** 2.4print(x)print(3.5e30 * 2.77e45)print(1000000001.0 *…

Python selenium 庫

Selenium 是一個用于自動化 Web 瀏覽器操作的強大工具,廣泛應用于 Web 應用程序測試、網頁數據抓取和任務自動化等場景。 Selenium 為各種編程語言提供了 API,用作測試。 目前的官方 API 文檔有 C#、JavaScript、Java、Python、Ruby。 安裝 Selenium 和…

vllm部署LLM(qwen2.5,llama,deepseek)

目錄 環境 qwen2.5-1.5b-instruct 模型下載 vllm 安裝 驗證安裝 vllm 啟動 查看當前模型列表 OpenAI Completions API(文本生成) OpenAI Chat Completions API(chat 對話) vllm 進程查看,kill llama3 deep…

Python NumPy庫使用指南:從入門到精通

1. 引言 NumPy(Numerical Python)是 Python 中用于科學計算的核心庫之一。它提供了強大的多維數組對象(ndarray),以及一系列高效的數學函數,能夠輕松處理大規模的數值數據。NumPy 是許多其他科學計算庫(如 Pandas、Matplotlib、Scikit-learn 等)的基礎。 本文將詳細介…

15.2 智能銷售顧問系統技術架構解密:構建企業級知識驅動型對話引擎

智能銷售顧問系統技術架構解密:構建企業級知識驅動型對話引擎 關鍵詞:RAG 架構設計、銷售知識庫系統、LoRA 微調優化、多模態交互引擎、高并發服務部署 1. 系統技術架構全景解析 1.1 核心架構設計圖 #mermaid-svg-UBkTgaR5lf5WfGMa {font-family:"trebuchet ms",…

用PyTorch從零構建 DeepSeek R1:模型架構和分步訓練詳解

DeepSeek R1 的完整訓練流程核心在于,在其基礎模型 DeepSeek V3 之上,運用了多種強化學習策略。 本文將從一個可本地運行的基礎模型起步,并參照其技術報告,完全從零開始構建 DeepSeek R1,理論結合實踐,逐步…