Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中的遗传算法-未按预期终止_Matlab_Genetic Algorithm - Fatal编程技术网

Matlab中的遗传算法-未按预期终止

Matlab中的遗传算法-未按预期终止,matlab,genetic-algorithm,Matlab,Genetic Algorithm,我正试图在Matlab中使用GA解决一个问题,优化正在通过设定的代数运行,并按预期减少函数值(如下图所示)。但不期望的是,它没有绘制生成me的百分比标准,例如,在下图中,它应该略低于40%完成,但事实并非如此。 这是我的密码: IntCon=[]; % Set integer variables vfun=@(x)objective(x, univ_names, univ_data, weight_names, weight_data, net_names, net_data, normali

我正试图在Matlab中使用GA解决一个问题,优化正在通过设定的代数运行,并按预期减少函数值(如下图所示)。但不期望的是,它没有绘制生成me的百分比标准,例如,在下图中,它应该略低于40%完成,但事实并非如此。

这是我的密码:

IntCon=[]; % Set integer variables
vfun=@(x)objective(x, univ_names, univ_data, weight_names, weight_data, net_names, net_data, normalized_name, normalized_data);
nonlcon=@(x)constraint(x,net_names, net_data);

 pop = 40;
 gen =50; 
 ini=rand(pop,nvars);
 time = inf; % time in (s)
 options = gaoptimset('TimeLimit', time, 'InitialPopulation',ini,'PopulationSize',pop,'Generations',gen,'PlotFcns',{@gaplotbestfun, @gaplotstopping});

[x,fval,exitflag,output] = ga(vfun,nvars,[],[],[],[],x_L,x_U,nonlcon,IntCon,options)
然后,如果我让它继续,它从一开始就重新开始(在一个更糟糕的函数值),在这一点上,它开始认为它已经满足了一些终止标准的百分比,即代数

然后让它完成后,我得到: 及

因此,它选择了一个比第一次运行时更糟糕的函数值!它为什么要做“第二次”和“第三次”呢

在另一个例子中,我包含了迭代信息,很明显,它没有包含从一代到下一代的最佳函数值。例如,图中显示,在经过50代之后,函数值几乎降低到425,如下图中底部三角形集所示:

但是它认为min是435.011?而这50代人只是一代。见下文: 生成f-计数f(x)约束生成 1 1060 435.011 0 0 2 2100 434.396 0 0 33140434.267000

但是,matlab终端中的输出认为,经过大约50代之后,图形是1代,并打印到屏幕上

然后,在终止优化后,它看起来像:


有什么想法吗?谢谢

问题在于,如果没有整数变量,则具有非线性约束的遗传算法的Matlab实现无法处理设计问题!我将may变量中的一个变量更改为整数变量,如下所示

IntCon=[1]; % Set integer variables
然后我运行相同的脚本和函数来获得

优化已终止:超过最大生成数

x=

fval=

3.5410e+03

出口滞后=

 0
输出=

  problemtype: 'integerconstraints'
     rngstate: [1x1 struct]
  generations: 50
    funccount: 2041
      message: 'Optimization terminated: maximum number of generations exceeded.'
maxconstraint: 0
 0
  problemtype: 'integerconstraints'
     rngstate: [1x1 struct]
  generations: 50
    funccount: 2041
      message: 'Optimization terminated: maximum number of generations exceeded.'
maxconstraint: 0