【问题标题】:Matlab: syntax of the fmincon with active-set method and only inequality constraints?Matlab:具有活动集方法且只有不等式约束的 fmincon 的语法?
【发布时间】:2013-10-25 21:56:12
【问题描述】:

我正在尝试使用主动集方法设置 fmincon,以解决线性约束最小化问题,其中最小化目标函数 @fun 使得

但历史上出现更多奇怪错误的试验。

试用 1

[x,fval]=fmincon(@fun, Guess, A, b)

试用 2

options = optimoptions('fmincon','Algorithm','active-set');
[x,fval]=fmincon(@fun, Guess, A, b, options)

【问题讨论】:

  • 什么是exampleRHR?你没有在任何地方定义它。
  • 你能定义函数DijIIIi吗?
  • @Masi 无关,DijIIIi 和其他目标函数的格式由 fmincon 手册确定,函数可以是任何东西。在理解了手册的语法后,我能够让它工作。需要使用 user2816823 指示的空占位符。

标签: matlab math syntax warnings constraints


【解决方案1】:

您使用了错误的算法选项。 MATLAB 会查看您提供的参数并使用使用这些参数的算法。它会引发警告,因为不同的算法可能会产生不同的结果(你永远不应该忽略这些)'trust-region-reflective' 是 fmincon 的默认算法。来自文档:

'trust-region-reflective' 要求您提供渐变,并且 只允许边界或线性等式约束,但不能两者兼有。

您致电 fmincon 的文档说:

x = fmincon(fun,x0,A,b) 从 x0 开始并尝试找到一个最小化器 fun 中描述的函数的 x 服从 线性不等式 A*x ≤ b。 x0 可以是标量、向量或矩阵。

你可能打算使用

x = fmincon(fun,x0,A,b,Aeq,beq)

您将拥有 A = []、b = [],并且 Aeq 和 beq 与您之前拥有的 A 和 b 相同(如果您想使用 trust-region-reflective)。

您的第二次试用没有成功,因为您实际上是在呼叫x = fmincon(fun,x0,A,b,Aeq,beq)。相反,您尝试传递一个选项结构。

This page explains how to set options

编辑:如果要传递选项,则必须指定所有可选参数:

[x,fval] = fmincon(@DijIIii,x0, A , b,[], [], [], [],@nonlcon,options);

【讨论】:

  • 我已经编辑了我的答案。如果您有不等式约束,只需将选项更改为 active-set 并将其传递给我写的 fmincon 调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多