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

Nic*_*ick 5 genetic-algorithm

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

a1<a2<a3...an-1<an , 0<ai<90, n=number of variables.
Run Code Online (Sandbox Code Playgroud)

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

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

Int*_*ure 1

matlab 提供的默认约束不能满足您的需求。

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

goalfunction value = Inf if conditions are not fulfilled
Run Code Online (Sandbox Code Playgroud)

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

您也可以尝试翻译问题,而不是寻找您的价值观,只需找到以下内容:

b(1), b(2), ... b(n), where bi = a(i)-a(i-1) and b(i) > 0 for each i
Run Code Online (Sandbox Code Playgroud)

因此,您只会找到每个初始变量之间的距离,并且只要它们是正数,您就会发现单调递增序列,这就是您所需要的。告诉我它是否令您满意。

附言。优化中的约束是一件很需要解决的事情,但我们如何将每个现实世界的约束转化为并不总是那么简单aX > b:)