演化算法有一个很容易被忽略的默认设定:被演化的是候选解,而生成候选解的方法本身保持不变。也就是说,传统演化算法通常保持搜索方法固定,只让候选解在迭代中变化——整轮搜索里“动”的是解,“不动”的是规则。本页要引出的正是这个设定之外的另一种视角:让求解方法自己也走进搜索与改进的过程。
默认范式:方法锁定,解在演化
在传统做法里,交叉方式、变异策略与超参数通常在运行前一次性选定,随后整轮搜索都不再改动。它们直接决定候选解的生成机制,也显著影响求解结果:任务表现好或坏,方法都停在原处。
- 解层在动:候选解 → 评估 → 选择 → 继承,一轮轮迭代。
- 方法层不动:变异策略、交叉方式、超参数被预设并锁定。
- 后果:仅靠预设和手工调参,求解方法本身不会随任务反馈持续演化,改进主要依赖人工经验与手工调参,调参速度往往跟不上任务变化。
算法演化:把方法也变成可搜索对象
算法演化的做法是:不再把交叉方式、变异策略、超参数当成固定配置,而是把它们作为可被候选、评估与替换的对象,与候选解一起接受求解表现的检验——也就是让求解算法自身进入搜索与改进过程,使“方法”也成为可演化对象。这样就在原有的解层迭代之外,多出第二条反馈回路——不仅解在改进,方法也在改进。
两条回路可以用一段平实的箭头语言概括:方法要素 → 生成候选解 → 求解表现评估 → 保留或替换 → 方法更新;与此同时,候选解内部仍然运行着“生成 → 评估 → 选择 → 继承”的常规迭代。前者改变“怎么找”,后者改变“找到了什么”。
关键转向
从“用固定算法求更好的解”,扩展到“让算法在求解过程中改进自己”。判断一个系统是否真的在做算法演化,就看方法要素有没有被纳入搜索、并由求解表现决定去留,而不是由人一次性写死。