主要内容

packfcn.

结合客观和非线性约束函数

描述

例子

objconstr.= packfcn(obj.nlconst.结合目标函数obj.和非线性约束函数nlconst.进入一个功能objconstr.。功能objconstr(x)返回适合组合的结构代理人孔目标和约束函数。有关转换之间的信息代理人孔结构语法和其他求解器,见转换Trustogateopt表单和其他求解器表格之间的非线性约束

例子

全部收缩

将目标和限制组合在示例中解决约束的非线性问题,基于求解器进入适合的形式代理人孔

创建目标函数作为匿名功能ROS(x)

ROS = @(x)100 *(x(2) -  x(1)^ 2)^ 2 +(1  -  x(1))^ 2;

创建非线性约束辅助功能UnitDisk.,它出现在此示例的结尾。使用名称保存帮助函数UnitDisk.m.在当前文件夹中。

将目标和非线性约束函数结合在一个适用于的功能中代理人孔

objconstr = packfcn(ROS,@ UnitDisk);

指定边界并使用问题解决问题代理人孔

lb = [-2 -2];UB = -LB;[x,fval] = trustogateopt(objconstr,lb,Ub)

图优化绘图功能包含轴。标题最佳功能值的轴:0.0457939包含2个类型的2个对象。这些对象代表最佳功能值(不可行),最佳函数值。

Trustogateopt停止,因为它超出了“选项”QuaxFunctioneValuations'设置的函数评估限制。
X =1×20.7860 0.6176
FVAL = 0.0458.

此代码创建UnitDisk.帮手功能。

功能[C,CEQ] = UnitDisk(x)c = x(1)^ 2 + x(2)^ 2  -  1;CEQ = [];结尾

输入参数

全部收缩

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

由此产生的功能objconstr.包含该字段fval.

objconstr.fval = obj.

例子:@restriginsfcn.

数据类型:char|细绳|function_handle.

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

[c,ceq] = nlconst(x)

输出C是一个矢量或数组,其条目表示不等式约束CX)≤0CEQ.是一个矢量或数组,其条目表示不等式约束CX)= 0。packfcn.丢弃CEQ.输出。

由此产生的功能objconstr.包含该字段Ineq.

objconstr.ineq = C.

数据类型:char|细绳|function_handle.

输出参数

全部收缩

组合目标和约束函数,作为函数手柄返回。功能objconstr(x)使用字段返回一个结构fval.Ineq.

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

  • objconstr.ineq(x)是非线性不等式约束函数C(x),第一个输出nlconst(x)

在R2020A中介​​绍