作家
登录

Go语言如何实现遗传算法

作者: 来源: 2017-11-16 17:01:24 阅读 我要评论

  •   sort.Slice(population, func(i, j int) bool { 
  •     return calculate(population[i].(float64)) > calculate(population[j].(float64)) 
  •   }) 
  • 更奇怪的是,我大年夜来没有提到过这些办法的接口。请记住,因为没有对象,也没有持续。QuadraticGA构造体是一个空白对象,隐式地作为GeneticAlgorithmRunner。每个必须的办法都在括号中绑定到该构造体,就像Java中的“@ override”。如今,构造体和设置须要传递给运行该算法的模块。

    1. settings := ga.GeneticAlgorithmSettings{ 
    2.    PopulationSize: 5, 
    3.    MutationRate: 10, 
    4.    CrossoverRate: 100, 
    5.    NumGenerations: 20, 
    6.    KeepBestAcrossPopulation: true
    7.  
    8. best, err := ga.Run(QuadraticGA{}, settings) 
    9.  
    10. if err != nil { 
    11.    println(err) 
    12. }else
    13.    fmt.Printf("Best: x: %f  y: %f\n", best, calculate(best.(float64))) 
    1. Best: x: 3.072833 y: -6.994695 

    很简单,对吧?“QuadraticGA {}”只是简单地创建了该构造的一个新实例,其余的则由Run()办法完成。该办法返回搜刮结不雅和产生的任何缺点,因为Go不信赖try / catch——另一场战斗作者采取了严格的设计立场。

    1. func makeNewEntry() float64 { 
    2.    return highRange * rand.Float64() 
    3.  
    4. func calculate(x float64) float64 { 
    5.    return  math.Pow(x, 2) - 6*x + 2 // minimum should be at x=3 
    1. func Run(geneticAlgoRunner GeneticAlgorithmRunner, settings GeneticAlgorithmSettings) (interface{}, error){ 
    2.  
    3.    population := geneticAlgoRunner.GenerateInitialPopulation(settings.PopulationSize) 
    4.  
    5.    geneticAlgoRunner.Sort(population) 
    6.  
    7.    bestSoFar := population[len(population) - 1] 
    8.  
    9.    for i:= 0; i < settings.NumGenerations; i++ { 
    10.  
    11.       newPopulation := make([]interface{}, 0, settings.PopulationSize) 
    12.  
    13.       if settings.KeepBestAcrossPopulation { 
    14.          newPopulation = append(newPopulation, bestSoFar) 
    15.       } 
    16.  
    17.       // perform crossovers with random selection 
    18.       probabilisticListOfPerformers := createStochasticProbableListOfIndividuals(population) 
    19.  
    20.       newPopIndex := 0 

        推荐阅读

        主流浏览器之战:Edge惨遭微软“抛弃”,IE开始逆袭

      Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 10 月浏览器市场份额数据显示,Chrome 市场份额持续晋升,下个月有望冲破 60% 。Edge 浏览器的份额出现下>>>详细阅读


      本文标题:Go语言如何实现遗传算法

      地址:http://www.17bianji.com/lsqh/38942.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)