达芬奇不喝芬达 2022-03-23 20:38 采纳率: 0%
浏览 28

请问含有双边不等式的函数约束怎么写?(matlab语言)

#图上这种 ‘‘某个数<=自变量<=某个数’’ 的束条件怎么写呀?。图中的 ti (i=A:M)是自变量。

img

  • 写回答

1条回答 默认 最新

  • 技术专家团-Joel 2022-03-23 21:37
    关注

    像这种就先写目标函数

    function f=f1(t)
    C = num2cell(t(:)');
    [tA, tB, tC, tD, tE, tF, tG, tH, tI, tJ, tK, tL, tM] = C{:};
    M = [
    min([tA, tB, tC,tF,tG,tH,tI,tJ,tL,tM])
    min([tA, tB, tC,tF,tG,tH,tI,tK,tM])
    min([tA, tB, tD, tG, tH, tI, tJ, tL, tM])
    min([tA, tB, tD, tG, tH, tI, tK, tM])
    min([tA, tB, tE, tG, tH, tI, tJ, tL, tM])
    min([tA, tB, tE, tG, tH, tI, tK, tM])
    ];
    f = max(M);
    end
    

    然后写约束

    function [c, ceq] = nonlcon(t)
    C = num2cell(t(:)');
    [tA, tB, tC, tD, tE, tF, tG, tH, tI, tJ, tK, tL, tM] = C{:};
    M = [
    min([tA, tB, tC,tF,tG,tH,tI,tJ,tL,tM])
    min([tA, tB, tC,tF,tG,tH,tI,tK,tM])
    min([tA, tB, tD, tG, tH, tI, tJ, tL, tM])
    min([tA, tB, tD, tG, tH, tI, tK, tM])
    min([tA, tB, tE, tG, tH, tI, tJ, tL, tM])
    min([tA, tB, tE, tG, tH, tI, tK, tM])
    ];
    c=M-60; % 这就是非线性约束
    end
    

    最后写求解命令

    t0 = rand(13,1);
    lb = [2;1;1;3;1;1;10;10;10;3;2;9];
    ub = [7;3;25;3;3;16;26;19;6;5;15;3];
    t = fmincon(@f1, t0, [],[],[],[],lb,ub,@nonlcon)
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月23日