NightFeather02
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    # 演化計算導論 ## 演化計算基本架構 ### 概述 演化計算是一個基於生物進化原理的優化和搜索方法,用於解決各種組合優化問題,機器學習,人工智慧和其他領域。演化計算方法包括遺傳算法(Genetic Algorithms),演化策略(Evolution Strategies),差分進化(Differential Evolution),粒子群優化(Particle Swarm Optimization)等。這些方法都具有相似的基本架構。 ### 基本架構 1. 個體表示(Representation):在演化計算中,解決方案被表示為一個或多個個體,這些個體通常是由某種編碼方式表示的。這種表示方式可以是二進制、整數、實數、字串或其他形式,具體取決於問題的性質。 2. 初始種群(Initial Population):演化計算算法首先創建一個初始個體群體,通常是隨機生成的。這個初始種群是搜索過程的起點。 3. 適應度函數(Fitness Function):適應度函數評估每個個體的性能,它定義了解決方案的品質。適應度函數的目標是最大化(或最小化),根據具體問題的性質而定。 4. 選擇(Selection):在每代中,根據個體的適應度,一部分個體被選中用於繁殖下一代。通過選擇操作,優秀的個體更有可能被選中。 5. 交叉(Crossover):選中的個體進行交叉操作,創建新的個體。交叉操作模擬了生物學中的基因交換過程,產生了後代。 6. 變異(Mutation):部分個體可能會經歷變異操作,這通常是在個體的基因中引入隨機變化,以增加多樣性。 7. 生成下一代(Generate Next Generation):通過選擇、交叉和變異操作,創建下一代個體。這一代的個體將取代上一代,並繼續搜索過程。 8. 停止條件(Termination Criteria):搜索過程持續進行,直到滿足某個停止條件,例如達到最大迭代次數、適應度達到一定閾值,或達到時間限制。 9. 結果(Result):最終的搜索結果是最優的個體,其對應的解決方案是問題的近似最優解或一個高品質解。 ## hill-climbing ### 原理 找局部最佳解 比如說下一步有ABC三個走法,其中A走法的cost最低,則選擇A ### 缺點 只找到局部最佳解,沒辦法找到全局最佳解 ## tabu search ### 原理 為了破解局部最佳解的盲區,所以在禁忌搜尋法中,在找到一處的局部最佳解後,就將其列入禁忌表中,不能再被訪問,以鼓勵最佳解的多樣性,過了一段時間之後,禁忌表中的局部最佳解將會被釋放,以繼續向下探索。 ### 實作步驟 1. 從初始解開始,通常是隨機生成的。 2. 在每一步中,生成相鄰的解,評估它們的品質,並選擇一個最佳的相鄰解。然而,禁忌搜索不總是選擇最佳解,而是優先考慮那些不在禁忌表中的解,以鼓勵多樣性。 3. 更新禁忌表,將新選擇的決策添加到禁忌表中,同時去除已經過時的決策。 4. 重複步驟2和步驟3,直到達到停止條件,例如達到一定的迭代次數或達到一個時間限制。 5. 返回搜索過程中找到的最佳解或高品質解。 ### 應用 禁忌搜索的效能取決於禁忌表的設置、相鄰解的生成方法、目標函數的定義等因素。這個算法常用於解決組合優化問題,如旅行商問題(TSP)、排程問題、集合覆蓋問題等,並且已在實際應用中取得了成功。禁忌搜索的靈活性和能力避免局部最優解使其成為一個有價值的優化工具。 ## Bit String(位元字串) * 表示方式:將問題的解表示為一個由0和1組成的位元字串,每個位元對應問題的一個參數或特徵。 * 突變操作:可以通過對位元的翻轉(0變為1,1變為0)來進行突變。 * 交叉操作:可以通過將兩個位元字串交叉來產生新的後代。 ## Integer Array(整數陣列) * 表示方式:將問題的解表示為一個整數陣列,每個元素對應問題的一個參數或特徵。 * 突變操作:可以通過改變陣列中的某個整數值來進行突變。 * 交叉操作:可以通過交換兩個整數陣列的部分來產生新的後代。 ## Real-Valued Array(實數陣列) * 表示方式:將問題的解表示為一個實數陣列,每個元素對應問題的一個參數或特徵。 * 突變操作:可以通過改變陣列中的某個實數值來進行突變。 * 交叉操作:可以通過交換兩個實數陣列的部分來產生新的後代。 ## Permutation(排列) * 表示方式:將問題的解表示為一個排列,即元素的順序。 * 突變操作:可以通過交換排列中的兩個元素來進行突變。 * 交叉操作:可以通過部分映射交叉等方法來產生新的排列。 ## Tree(樹狀結構) * 表示方式:將問題的解表示為一個樹狀結構,其中節點表示操作或值,邊表示操作的順序或關係。 * 突變操作:可以通過添加、刪除或修改樹的節點來進行突變。 * 交叉操作:可以通過交換兩個樹的子樹來產生新的樹。

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully