主要内容

packfcn

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

描述

实例

objconstr=packfcn(obj,nlconst)结合目标函数obj非线性约束函数nlconst转化为函数objconstr. 功能objconstr(x)返回适用于组合的结构代理选择目标和约束函数。有关在代理选择结构语法和其他解算器,请参见在代理选项形式和其他解算器形式之间转换非线性约束

例子

全部崩溃

结合示例中的目标和约束基于解算器求解约束非线性问题变成适合代理选择

将目标函数创建为匿名函数活性氧(x)

活性氧=@(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2;

创建非线性约束辅助函数单位盘,显示在本例结束.保存带有名称的helper函数unitdisk.m在当前文件夹中。

将目标约束函数和非线性约束函数组合为一个适用于代理选择

objconstr=packfcn(ros,@unitdisk);

指定边界并使用代理选择

lb=[-2-2];ub=-lb;[x,fval]=代理选项(objconstr,lb,ub)

Figure Optimization Plot函数包含一个轴对象。标题为“最佳功能值:0.0477844”的轴对象包含2个line类型的对象。这些对象表示最佳函数值(不可行)、最佳函数值。

代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。
x=1×20.7822 0.6100
fval=0.0478

此代码创建单位盘辅助函数。

作用[c,ceq]=unitdisk(x)c=x(1)^2+x(2)^2-1;ceq=[];终止

输入参数

全部崩溃

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

结果函数objconstr包含字段Fval

objconstr.Fval=obj

例子:@rastriginsfcn

数据类型:烧焦|一串|功能手柄

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

[c,ceq]=nlconst(x)

输出C是一个向量或数组,其条目表示不等式约束C(x) ≤ 0输出ceq是一个向量或数组,其条目表示不等式约束C(x) = 0.packfcn丢弃的ceq输出

结果函数objconstr包含字段Ineq

objconstr.Ineq=c

数据类型:烧焦|一串|功能手柄

输出参数

全部崩溃

组合目标和约束函数,作为函数句柄返回。功能objconstr(x)返回包含字段的结构FvalIneq

  • 对象约束Fval(x)目标函数是什么obj(x)

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

在R2020a中引入