求助:关于matlab遗传算法工具箱中约束的输入问题

2024-11-12 20:06:53
推荐回答(2个)
回答1:

遗传算法工具箱的函数GA基本调用格式如下:
X = GA(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub)
其中前两个参数分别是适应度函数和变量个数,第三、四个参数(A和b)即为线性不等式约束。

你现在需要做的是,增加几个线性约束条件:
x1 < x2
x2 < x3
x3 < x4
x4 < x5
不过,有个问题,遗传算法等优化工具对不等式约束的要求,都必须是闭集(带等号的不等式),也就是说,要的是类似下面这样的约束:
x1 <= x2
x2 <= x3
x3 <= x4
x4 <= x5
不知道你的问题是否允许把约束放宽到上面的形式,如果可以,就很简单了(如果不能放宽,我暂时还没想起怎么解决):
x1 - x2 <= 0
x2 - x3 <= 0
x3 - x4 <= 0
x4 - x5 <= 0
也就是调用函数时,线性约束的A和b分别为
A = [
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];

回答2:

保留 x1 x2 x3 x4 x5的上下界[1 1.3],
增加 约束 x1 x2 x3 x4