当前位置: 首页 > 程序语言 >遗传算法加入非线性约束后计算速度急剧下降

遗传算法加入非线性约束后计算速度急剧下降

作者 brucexmc
来源: 小木虫 150 3 举报帖子
+关注

各位大神,小弟在使用Matlab自带的遗传算法ga函数时,加入非线性约束之后计算速度急剧下降,迭代一次需要2个小时,而未加入非线性约束时迭代一次只需要2分钟。想请教各位大神问题出在什么地方?

以下是非线性约束函数的代码:
function [c,ceq]=mycon(x)
c=0.5097-(1-x(1))*x(2)-x(1)*(x(3)-x(5));
ceq=[];


以下是执行ga命令的代码:
LB=[0 0.22 0 0.1 0 0.1 0];
UB=[0.4 0.8 1 0.8 1 0.8 2];
options=gaoptimset('PopulationSize',30,'Generations',500,'PlotFcn',{@gaplotbestf,@gaplotbestindiv},'Display','iter');
[x,fval,exitflag,output,population,scores]=ga(@myfun,7,[],[],[],[],LB,UB,@mycon,options);


由于myfun函数较为复杂,故没有在此附上。在未加入非线性约束时,优化结果经过验证是正确的。 返回小木虫查看更多

今日热帖
  • 精华评论
  • brucexmc

    求大神帮忙解答!

  • TX灌水员

    试试直接用消元
    x1 = (0.5097 - x2) /(x5+x2-x3)
    或者用罚函数来处理约束

    计算速度下降猜测可能是大量的不可行随机解导致了不断的重新初始化,

  • Hubobit

    可以尝试打开并行计算,命令为'UseParallel', true

猜你喜欢
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓