主要内容

packfcn

结合目标函数和非线性约束函数

描述

例子

objconstr= packfcn (objnlconst结合目标函数obj和非线性约束函数nlconst变成一个函数objconstr.这个函数objconstr (x)返回适合组合的结构surrogateopt目标和约束函数。的转换信息surrogateopt结构语法和其他求解器,请参见在代理选择形式和其他求解器形式之间转换非线性约束

例子

全部折叠

结合实例中的目标和约束使用优化实时编辑器任务或求解器的约束非线性问题变成适合的形式surrogateopt

将目标函数创建为匿名函数ros (x)

Ros = @(x)100*(x(2) - x(1)²)²+ (1 - x(1))²;

创建非线性约束助手函数unitdisk,它出现在此示例结束.保存带有名称的helper函数unitdisk.m在当前文件夹中。

将目标函数和非线性约束函数合并为一个适合的函数surrogateopt

Objconstr = packfcn(ros,@unitdisk);

指定边界并使用surrogateopt

Lb = [-2 -2];Ub = -lb;[x,fval] = objconstr,lb,ub)

{

surrogateopt停止,因为它超过了'options. maxfunctionevaluments '设置的函数求值限制。
x =1×20.7870 - 0.6177
Fval = 0.0456

此代码创建unitdiskhelper函数。

函数[c,ceq] = unitdisk(x) c = x(1)^2 + x(2)^2 - 1;Ceq = [];结束

输入参数

全部折叠

目标函数,指定为函数句柄或函数名。

得到的函数objconstr包含字段Fval

objconstr。Fval = obj

数据类型:字符|字符串|function_handle

非线性约束函数,指定为函数句柄或函数名。通常,非线性约束函数返回两个输出。

[c,ceq] = nlconst(x)

输出c是否一个向量或数组的条目表示不等式约束cx)≤0。输出量表信是否一个向量或数组的条目表示不等式约束cx) = 0。packfcn丢弃的量表信输出。

得到的函数objconstr包含字段Ineq

objconstr。Ineq = c

数据类型:字符|字符串|function_handle

输出参数

全部折叠

结合了目标和约束函数,作为函数句柄返回。这个函数objconstr (x)返回带有字段的结构Fval而且Ineq

  • objconstr.Fval (x)是目标函数obj (x)

  • objconstr.Ineq (x)是非线性不等式约束函数吗c (x)的第一个输出nlconst (x)

版本历史

在R2020a中引入

Baidu
map