MATLAB中的约束最小化

时间:2017-06-09 17:52:04

标签: matlab optimization constraints minimization

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

我理解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
    
  3. 我想编码的问题:

      

    min y1 w.r.t x1x2   
    y1<=w1

1 个答案:

答案 0 :(得分:2)

您可以按如下方式使用fmincon

std::map<std::string, std::string> interpolate_map;
interpolate_map.insert(std::make_pair("F", "a && b && c" ));
interpolate_map.insert(std::make_pair("H", "p ^ 2 + w" ));
interpolate_map.insert(std::make_pair("K", "H > 10 || e < 5" ));
interpolate_map.insert(std::make_pair("J", "F && !K" ));

for (const std::pair<const std::string, std::string> & i : interpolate_map)
/* ??? */

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_start Matlab使用的迭代求解器中x2_startx1的起始值。

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