Giter VIP home page Giter VIP logo

ga's Introduction

[toc]

程序运行逻辑

graph TD

ga1[GA1 遗传算法类]
ga1out[GA1 的初始化方法]
bound[boundaryList 初始化种群的边界]
help[辅助类help 内含具体问题的适应度计算方法]
output[output,输出最终解方法]
generate[generate方法,决定了哪种GA]
update[updatePop,子代种群更新方法]
risk[Risk类,包含CPA计算方法]
ga1 --> ga1out
ga1 --> output
ga1 --> generate
generate --> update
ga1out --> bound
ga1out --> help
help --> risk
Loading

GA基本流程

  • 初始化种群
  • 评估适应度函数
  • 在达到结束条件之前
    • 选择一定量的种群作为下一代的父代(根据适应度函数)
    • 交叉操作
    • 变异操作
    • 更新种群
  • 输出结果

在本程序中,我采用的流程是:

  • 根据边界列表初始化种群
  • 在达到结束条件之前
    • 通过交叉操作产生部分子代
    • 通过变异操作产生部分子代
    • 根据适应度函数更新和选择算子更新种群,恢复种群数目
  • 输出结果

程序设计**

  • 尽量减少成员变量的数目,增加基类的可扩展性
  • 为每个个体设计结构体,提高程序可读性

NSGA-II 基本流程

  • 初始化种群
  • 评估适应度函数
  • 在达到结束条件之前
    • 非支配排序
    • 拥挤度计算
    • 选择操作
    • 交叉操作
    • 更新种群
  • 输出结果

在本程序中,我采用的流程是

  • 初始化种群,这里的种群结构体在基本结构体上增加了适应度列表,用于存放多目标适应度值,同时重写了计算适应度值的函数
    • 为了方便程序的扩展性这里创建一个用于船舶避碰轨迹优化的辅助类
    • 该扩展类包含了计算安全性,合规性以及经济性的适应度函数值的静态成员函数
  • 在到达终止条件之前,执行:
    • 交叉操作
    • 变异操作
    • 非支配排序
      • 需要增加个体结构体的被支配数和支配集合成员变量
    • 更新种群
      • 拥挤度计算

创建一个船舶类,用于辅助计算适应度函数

帕累托选择和拥挤度的设计

Risk 类设计思路

直接设计成静态的

ga's People

Contributors

wangyan1916 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.