我在Matlab中构建遗传算法的约束矩阵存在问题。我想在GA函数中导入这些矩阵,以解决具有以下约束的问题:
a1<a2<a3...an-1<an , 0<ai<90, n=number of variables.
Matlab的文档对我没有帮助,因为它只涉及简单的方程而不是这种约束。
我是GA的新手,每一个帮助都是可以接受的!
答案 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