Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB中的约束极小化_Matlab_Optimization_Constraints_Minimization - Fatal编程技术网

MATLAB中的约束极小化

MATLAB中的约束极小化,matlab,optimization,constraints,minimization,Matlab,Optimization,Constraints,Minimization,我想解决一个受约束的最小化问题,我想寻求一些关于如何构造代码的帮助 我理解通过使用参数@mycon我应该使用fmincon,但我正在努力使它适应我的情况。如有任何建议,将不胜感激 这些是我的文件(a和b是预定义的参数): f1.m function [y1, y2, y3]=f1(x1, x2, a) ... end f2.m function w1=f2(x1, x2, y2, y3, b) ... end 我要编写代码的问题: 最小y1w.r.tx1,x2 这样,y1您可以使用以下内

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

我理解通过使用参数
@mycon
我应该使用
fmincon
,但我正在努力使它适应我的情况。如有任何建议,将不胜感激

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

  • f1.m

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

    function w1=f2(x1, x2, y2, y3, b)
    ...
    end
    
  • 我要编写代码的问题:

    最小
    y1
    w.r.t
    x1
    x2

    这样,
    y1您可以使用以下内容:

    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
    

    %C一个简单的具体示例可能有助于使其可运行,请参见,谢谢!一个问题:Matlab如何知道,在编写
    fmincon(@(x)f1(x(1),x(2),a),…)
    时,它必须最小化wrto
    x(1),x(2)
    只需
    f1
    的第一个输出
    y1
    ,因为
    fmincon
    只需要一个返回参数。如果不需要额外的返回参数,Matlab会自动丢弃它们,即
    y1=f1(x1,x2,a)
    确实会将第一个返回的参数存储到
    y1