



上述约束处理技术允许算法在优化的中间过程中存在不可行解,然而,对于一些约束相对简单的问题来说,也可以在解的生成阶段即满足约束,以保证种群中只存在可行解。
构建式启发式算法逐维度地构造问题解,每确定一个问题变量的取值,剩余未确定变量的约束条件就会相应地改变。因此,对于构建式启发式算法,只要每一步都不违反当前约束条件,那么构建得到的解便是可行解。以旅行商问题为例,其问题约束是每个城市只被访问一次,且起点城市和终点城市相同。记问题的解
x
=(
x
1
,
x
2
,…,
x
D
),所有城市的集合为
S
,假设我们按照变量的索引顺序逐变量地构造解,那么当前
k
个变量(
x
1
,
x
2
,…,
x
k
)已经确定时,对于第
k
+1个变量,其约束条件为
。由此可见,构建式启发式算法不需要同时考虑所有变量的约束满足条件。
修复技术是另一种常用的约束满足方法,常被用于生成式启发式算法。与构建式启发式算法不同,生成式启发式算法通过交叉、变异等遗传操作直接生成解向量,因此有可能生成不可行解。对于只涉及单一变量的约束条件,一个直接的思想是将其位于不可行域的变量取值修改为约束区间的边界;对于设计多个变量的约束条件,一些相关工作研究了如何将不可行解映射到可行域内的方法,例如,将不可行解投影到可行域内与之距离最近的解的位置。