第2章 适应度函数

演进式架构的机制涵盖了开发人员和架构师用以构建可演进系统的工具和技巧。这个系统的一个重要部件就是防护机制,我们称为适应度函数,等同于应用程序领域部分的单元测试的架构。本章将给出适应度函数的定义并阐明这个重要基石的分类和用法。

演进式软件架构支持跨多个维度的引导式、增量式变更。

如定义所述,引导式一词暗示有目标的存在,且架构应该体现目标或者向目标靠拢。我们借用了演进计算里的一个叫作适应度函数的概念,遗传算法用其来定义成功。

演进计算包含了一系列的机制,允许通过突变逐渐演进出解决方案——即每代软件中只有小型变更。演进计算世界定义了一系列突变类型。例如,一种被称为轮盘突变的变体:如果算法使用了常量,那么突变会像赌场里的轮盘一样来抽选新的数字。例如,开发人员在设计一个遗传算法来解决旅行商问题(Traveling Salesman Problem,TSP)(https://oreil.ly/jtqHZ),即寻找一系列城市之间的最短路径。如果开发人员发现通过轮盘突变选出的小一点的数字可以得到更好的结果,那么他们可能会创建一个适应度函数在变异中来保护这个“决策”。因此,适应度函数用来评估方案和理想之间的距离。