Matlab规划问题之 fmincon函数
常用来求解单决策函数的规划问题
语法:[X,FVAL] = fmincon(fun,x0,a,b,Aeq,Beq,LB,UB,nonlcon,options);
X 为最终解 , FVAL为最终解对应的函数值
注意:求最大值时,结果FVAL需要取反
fun 是定义的决策函数,通常通过M文件或者匿名函数进行定义。*注意:当所求为最大值时,系数需要取反*x0 为初始值a 为约束条件中不等式组的系数矩阵 ,a的列数等于f的列数*注意:当不等号为 > 或 ≥ 时,矩阵需要取反*b 为约束条件中不等式组右边的值*注意:当不等号为 > 或 ≥ 时,矩阵需要取反*Aeq 为约束条件中等式组的系数矩阵 ,Aeq的列数等于f的列数Beq 为约束条件中等式组右边的值LB、UB 是解的范围nonlcon 为定义的向量函数options 为优化参数
例题:
matlab求解代码:
clear
close all
clc
a = [-1 1 -11 1 1];
b = [0 20];
aeq = [-1 -1 20 1 2];
beq = [0 3];
fun = @(x) x(1)^2 + x(2)^2 + x(3)^2 +8;
[x1,g1] = fmincon(fun,zeros(3,1),a,b,aeq,beq,zeros(3,1));
结果为:
x1 = [0.4292 1.2854 0.8573];
g1 = 10.5714;
例题:
代码:
clear
close all
clc
a = [1 1 1 1];
b = [3 9];
aeq = [];
beq = [];
fun = @(x) 2*x(1)^2 - 4*x(1)*x(2) + 4*x(2)^2 - 6*x(1) - 3*x(2);
[x1,g1] = fmincon(fun,zeros(2,1),a,b,aeq,beq,zeros(2,1));
结果为:
x1 = [1.95 1.05];
g1 = -11.0250;