其实建立框架只是一次算法作业的“副产物”,我在尝试实现并优化SA(模拟退火算法)时发现,为了在不同问题中使用SA,我需要为了问题的变化而重新实现从初始化到结束条件的完整控制流,明明核心的想法和流程是类似的,我却需要为了每一个问题去重复写相似的代码,岂不是太浪费了?我又发现,为了比较不同扰动策略的性能,我又需要重写代码,于是,为了解决这些问题,模块化优化算法(MOA)诞生了。
结构上,框架采取模块化设计,将算法的流程拆解成几个步骤(如初始化,搜索,结束等),并且允许在这些步骤自由选择策略。
在信息流方面,为了防止传入参数过于面面俱到导致的性能问题和接口冗余,框架决定使用“最少信息原则”,即只传入能表达状态的最少信息,而其他信息则由组件自己获取(如当前迭代次数由调用次数隐性传入)。
理念上,MOA秉持着“允许所有可能性存在”的原则,允许用户尽可能地自由组装自己的算法,保证既能方便地组装传统实现,也不遏制反直觉形式的存在。
这里是MOA,一个“叛逆”的模块化算法框架。
Github仓库地址
网硕互联帮助中心




评论前必须登录!
注册