作家
登录

Go语言如何实现遗传算法

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

int) bool { return calculate3D(population[i].(Quad3D)) > calculate3D(population[j].(Quad3D)) 
  •    }) 
  •  
  • func quadratic3dMain(){ 
  •    settings := ga.GeneticAlgorithmSettings{ 
  •       PopulationSize: 25, 
  •       MutationRate: 10, 
  •       CrossoverRate: 100, 
  •       NumGenerations: 20, 
  •       KeepBestAcrossPopulation: true
  •    } 
  •  
  •    best, err := ga.Run(Quadratic3dGA{}, settings) 
  •    entry := best.(Quad3D) 
  •  
  •    if err != nil { 
  •       println(err) 
  •    }else
  •       fmt.Printf("Best: x: %f  y: %f  z: %f\n", entry.x, entry.y, calculate3D(entry)) 
  •    } 
  • 而不是到处都是float64s,任何处所都可以经由过程Quad3D的条目;每一个都有一个X和一个Y值。对于创建的每个条目,都应用contructor makeNewQuadEntry创建。Run()办法中的代码都没有更改。

    当它运行时,我们获得这个输出:

    1. Best: x: 3.891671 y: 4.554884 z: -12.787259 

    很接近了!

    哦,我忘了说走快了!在Java中履行此操作时,即使应用雷同的设置,也会有明显的等待时光。在一个相对较小典范围内求解二次方程并不是很复杂,但它对一小我来说是值得留意的。

    Go是本地编译的,比如C。当二进制履行时,它似乎马上就吐出一个谜底。这里有一个简单的办法来度量每次运行的履行时光:

    边注:我能说我很高兴我们是一个开辟者社区,让他们大年夜以前的缺点中走出来,并把综合的时光模块和包构建成一种说话吗?Java 8 +拥有它们,Python拥有它们,并拥有它们。这使我高兴。

    【编辑推荐】

    1. JetBrains 的 Go 集成开辟情况已肯定最终名称:GoLand
    2. 左耳朵耗子:Go说话,Docker和新技巧
    3. 可视化进修 Go并发编程
    4. Go开源宣布8周年,成2017年增长最快说话
    5. 为什么须要Go如许一个新编程说话?
    【义务编辑:未丽燕 TEL:(010)68476606】

    如今的输出:

    1. Best: x: 3.072833 y: -6.994695 
    2. 136,876 
    3. Best: x: 3.891671 y: 4.554884 z: -12.787259 
    4. 4,142,778 

    那“近乎刹时”的感到是我想要传达的,如今我们有了很难的数字。136,876看起来很大年夜,但要在纳秒内申报时光。

    重申一遍:纳秒。不是几毫秒,我们都习惯了在互联网时代或者其他像Python和Java如许的通用说话;纳秒。1/1,000,000毫秒。

    这意味着我们在不到一毫秒的时光里找到了一个应用遗传算法来搜刮谜底的二次方程的谜底。这句话,“该逝世的刹时”似乎很合适,不是吗?这包含打印到终端。

    Go也被用coroutines和信道的原生支撑编写,应用多个内菏攀来解决一个问题,比以前简零丁了,比拟于单核时代的其他说话来说,这是一个巨大年夜的优势。我想要加强这个算法来应用这些对象,但这也必须留给今后的工作。

    那么,要计算更密集的器械呢?在我展示一种寻找好的梦幻足球lineups的办法之前,我在Fanduel上应用。这包含大年夜电子表格中攫取数据,制造和过滤lineups,并进行更复杂的交叉和突变。强迫寻找最佳解决筹划可能须要跨越75,000年(至少应用我当时应用的Python)。

    我不须要再检查所有的细节,你可以本身去看代码,但我会在这里显示输出:

    1. Best: 121.409960:, $58100 
    2. QB: Aaron Rodgers - 23.777778 
    3. RB: Latavius Murray - 15.228571 
    4. RB: DeMarco Murray - 19.980000 
    5. WR: Kelvin Benjamin - 11.800000 
    6. WR: Stefon Diggs - 14.312500 
    7. WR: Alshon Jeffery - 9.888889 

        推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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