Matlab求解规划问题之 fmincon函数

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 -1
      1 1 1];
b = [0 20];
aeq = [-1 -1 2
        0 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;

版权声明:本文为qq_39643955原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。