如何设置Matlab遗传算法约束?

时间:2011-06-17 18:32:35

标签: genetic-algorithm

我在Matlab中构建遗传算法的约束矩阵存在问题。我想在GA函数中导入这些矩阵,以解决具有以下约束的问题:

a1<a2<a3...an-1<an , 0<ai<90, n=number of variables.

Matlab的文档对我没有帮助,因为它只涉及简单的方程而不是这种约束。

我是GA的新手,每一个帮助都是可以接受的!

2 个答案:

答案 0 :(得分:1)

matlab提供的默认约束不适合您的需求。

您可以尝试翻译您的约束并添加惩罚条件,如下所示:

goalfunction value = Inf if conditions are not fulfilled

但是这将无法找到最佳状态,那么我的解决方案是什么

您也可以尝试翻译问题,而不是找到您的值,只需找到:

b(1), b(2), ... b(n), where bi = a(i)-a(i-1) and b(i) > 0 for each i

因此,您只能找到每个初始变量之间的距离,并且如果它们是正数,您将找到单调的icreasing序列,这就是您所需要的。告诉我它是否满足你。

PS。优化中的约束是很好的解决方案,我们将每个现实约束转换为aX > b并不总是直截了当的:)

答案 1 :(得分:1)

也许您可以提供以下选项来定义5参数问题的不等式约束。

Aineq = [1 -1 0 0 0;  0 1 -1 0 0;  0 0 1 -1 0;  0 0 0 1 -1; ]

b = [0 0 0 0]

这将转化为以下约束:

a1<a2
a2<a3
a3<a4
a4<a5

相当于a1<a2<a3<a4<a5