【问题标题】:Constrained minimization in MATLABMATLAB 中的约束最小化
【发布时间】:2017-06-09 17:52:04
【问题描述】:

我想解决一个受约束的最小化问题,我正在寻求一些有关如何构建代码的帮助。

我知道fmincon 是我应该通过使用@mycon 参数来使用的,但我正在努力使其适应我的情况。任何建议将不胜感激。

这些是我的文件(ab 是预定义的参数):

  1. f1.m

    function [y1, y2, y3]=f1(x1, x2, a)
    ...
    end
    
  2. f2.m

    function w1=f2(x1, x2, y2, y3, b)
    ...
    end
    

我要编码的问题:

分钟 y1 w.r.t x1, x2
这样y1<=w1

【问题讨论】:

标签: matlab optimization constraints minimization


【解决方案1】:

您可以按如下方式使用fmincon

x = fmincon(@(x) f1(x(1), x(2), a), [x1_start x2_start], [], [], [], [], [], [], @(x) mycon(x(1), x(2), a, b));
x1 = x(1)
x2 = x(2)

mycon 定义为:

% C <= 0 and Ceq == 0
function [C, Ceq] = mycon(x1, x2, a, b)
    [y1, y2, y3] = f1(x1, x2, a);
    C = y1 - f2(x1, x2, y2, y3, b);
    Ceq = [];
end

x1_startx2_start 在Matlab 使用的迭代求解器中x1x2 的起始值。

请查看 matlab 文档和示例以获取更多信息。

【讨论】:

  • 谢谢!一个问题:Matlab 怎么知道,在编写fmincon(@(x) f1(x(1), x(2), a),...) 时,它必须将x(1), x(2) 的写入最小化只有f1 的第一个输出y1
  • 因为fmincon 只需要一个返回参数。如果您不需要额外的返回参数,Matlab 会自动丢弃它们,即y1 = f1(x1, x2, a) 确实会将第一个返回的参数存储到y1
猜你喜欢
  • 1970-01-01
  • 2013-12-03
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 2016-05-27
  • 1970-01-01
相关资源
最近更新 更多