主要内容

写约束

咨询优化工具箱文档

许多全局优化工具箱函数接受范围、线性约束或非线性约束。如何将这些约束纳入你的问题,看看写约束。试着咨询这些相关的部分:

请注意

surrogateopt解算器使用不同的语法比其他解决非线性约束,并要求所有组件上的有限范围。详情,请参见页面和功能参考surrogateopt之间转换非线性约束形式和其他形式的解算器

设置范围

更重要的是为解决全球范围比当地的解决者。在各种方式解决全球使用范围:

  • GlobalSearch需要界限scatter-search点生成。如果你不提供,GlobalSearch下面的每个组件-9999年及以上的10001年。然而,这些界限可以很容易地不合适。

  • 如果你不提供边界和不提供定制的开始点,MultiStart下面的每个组件-1000年及以上的1000年。然而,这些界限可以很容易地不合适。

  • 遗传算法使用范围和线性约束的初始种群生成。对于无限问题,遗传算法使用一个默认的0下界和1作为初始点每个维度的上界的一代。为有界问题,线性约束问题,遗传算法使用范围和约束,使初始种群。

  • simulannealbndpatternsearch不需要界限,尽管他们可以使用范围。

确保ga选项保持可行性

遗传算法解算器通常严格可行性界限和线性约束。这意味着,在每一个迭代中,所有成员的人口满足范围和线性约束。

然而,您可以设置的选项,导致这个可行性失败。例如,如果你设置MutationFcn@mutationgaussian@mutationuniform、变异函数不尊重约束和人口会变得不可行。同样,一些交叉功能会导致人口不可行,尽管默认gacreationlinearfeasible并尊重界限和线性约束。同时,遗传算法可以使用自定义时不可行点突变或交叉功能。

为了确保可行性,使用默认的交叉和变异函数遗传算法。特别注意,任何定制函数保持可行性界限和线性约束。

请注意

当一个问题整数约束,遗传算法确保所有操作符(变异、交叉和创建)返回可行的人群范围,在每个迭代线性约束和整数约束。这个可行性坚持小公差之内。

梯度和麻布

如果你使用GlobalSearchMultiStartfmincon,你的非线性约束函数可以返回衍生品(梯度或麻绳)。有关详细信息,请参见梯度和麻布

矢量化的约束

遗传算法patternsearch解决可计算的非线性约束函数向量的集合在一个函数调用。该方法可以花更少的时间比串行计算向量的目标函数。这种方法被称为矢量函数调用。

为解决计算矢量化的方式,你必须vectorize客观(健身)函数和非线性约束函数。有关详细信息,请参见Vectorize目标和约束函数

作为一个例子,假设你为一个三维非线性约束问题

x 1 2 4 + x 2 2 9 + x 3 2 25 6 x 3 cosh ( x 1 + x 2 ) x 1 x 2 x 3 = 2。

下面的代码提供了这些非线性约束矢量化的方式,假设输入矩阵的行x你的人口或输入向量:

测查函数[c] = nlinconst c (x) (: 1) = x (: 1)。^ 2/4 + x (:, 2)。^ 2/9 + x (: 3)。^ 2/25 - 6;c (: 2) = cosh (x (: 1) + (2):,) - x (:, 3);测查= x (: 1)。* x (:, 2)。* x (:, 3) - 2;

例如,最小化矢量化的二次函数

函数y = vfun (x) y = - x (: 1)。^ 2 - x (:, 2)。^ 2 - x (:, 3) ^ 2;

在该地区与约束nlinconst使用patternsearch:

选择= optimoptions (‘patternsearch’,‘UseCompletePoll’,真的,UseVectorized, true);[x fval] = patternsearch (@vfun [1, 2], [], [], [], [], [], [],…@nlinconst选项)优化终止:网格大小小于选项。MeshTolerance和约束违反小于options.ConstraintTolerance。x = 0.2191 0.7500 12.1712 fval = -148.7480

使用遗传算法:

选择= optimoptions(“遗传算法”,“UseVectorized”,真正的);[x fval] = ga (@vfun 3 []、[] [], [], [], [], @nlinconst,选项)优化终止:超过了一代又一代的最大数目。x = -1.4098 -0.1216 11.6664 fval = -138.1066

这个问题patternsearch更快速、准确地计算解决方案。

相关的话题