尽管受到了惩罚,但是在鲸鱼优化算法中没有达到平等约束

问题描述 投票:0回答:1

我正在使用Matlab和Whale Optimization Algorithm来优化我的维度11的系统。我需要保留一些相等的约束(即x(2)-x(1)-90,x(4)-x(3) = 60 ...)。我知道,对于这些类型的优化算法,必须使用惩罚函数来解决约束问题(根据同一链接中的论文)。

我的目标函数叫做House_cost,我在成本函数中添加了一个惩罚条件。

if((x(2)-x(1))~= 90)
C=inf;
end

其中C是我的成本,我也尝试将其设置为一个非常大的值。其余的边界和参数设置如下:

    dim = 11;
    Max_iteration =1000;
    SearchAgents_no = 30;
    lb = [1    1      1       1    2 1 50 3 19 1 1];
    ub = [1440  1440   1440   1440   5 3 80 10 24 3 200];
    fobj=@House_cost;
    Function_name='House_cost';

    tic;
    [Best_score,xbest,WOA_cg_curve]=WOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
    toc;

当我运行我的程序时,不满足约束,实际上x(2)-x(1)= - 73在我的最后一次尝试中。这个问题可能是什么原因?

matlab optimization
1个回答
1
投票

这些类型的随机搜索算法在处理等式约束方面不是很好。有时您可以替换变量:

X2-X1 = 90

手段

x2 = 90 + x1

所以你可以从模型中删除变量x2和约束x2-x1=90

否则使用其他可以更好地处理联立方程的技术,例如整数规划(分段线性),非线性规划等。

© www.soinside.com 2019 - 2024. All rights reserved.