調(diào)用格式:
X=quadPRog(H,f,A,b) X=quadprog(H,f,A,b,Aeq,beq)X=quadprog(H,f,A,b,Aeq,beq,lb,ub)X=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)X=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options) [x,fval]=quadprog(…) [x,fval,exitflag,output]=quadprog(…) [x,fval,exitflag,output,lambda]=quadprog(…)說明:輸入?yún)?shù)中,x0為初始點(diǎn);若無等式約束或無不等式約束,就將相應(yīng)的矩陣和向量設(shè)置為空;options為指定優(yōu)化參數(shù)。輸出參數(shù)中,x是返回最優(yōu)解;fval是返回解所對(duì)應(yīng)的目標(biāo)函數(shù)值;exitflag是描述搜索是否收斂;output是返回包含優(yōu)化信息的結(jié)構(gòu)。Lambda是返回解x入包含拉格朗日乘子的參數(shù)。
下面代碼操作流程: 利用hessian 函數(shù)計(jì)算hessian矩陣H,然后利用collect獲取一次項(xiàng)的系數(shù)F:
clear all,close all;syms x y ;% 求解該函數(shù)的最小值f = (x - 2)^2 + (y - 3)^2 + 5; % s.t. 1 <= x <= 3,2 <= y <= 4%lb = [1 2]';ub = [3 4]'; % lb = [-inf -inf]' ub = [inf inf]'lb = zeros(2,1);ub = zeros(2,1);lb(:) = -inf;ub(:) = inf;%% 求解海森矩陣 HH = hessian(f,[x,y]);% convert to double typeH = double(H);%% 求解一次項(xiàng)系數(shù) F% fexp = expand(f);fcol = collect(f,{'x','y'}); % x^2 - 4*x + y^2 - 6*y + 18disp(fcol);% get F = [-4 -6]'F = [-4 -6]';% method : interior-point-convex ,trust-region-reflective ,active-setoptions = optimoptions('quadprog','Algorithm','interior-point-convex');[x,fval,exitflag,output] = quadprog(H,F,[],[],[],[],lb,ub,[],options);
|
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注