您的位置:首页 > 编程语言 > MATLAB

matlab学习笔记之求解线性规划问题和二次型问题

2016-07-08 11:38 671 查看
一、线性规划问题

  已知目标函数和约束条件均为线性函数,求目标函数的最小值(最优值)问题。

1.求解方式:用linprog函数求解

2.linprog函数使用形式:

  x=linprog(f,A,b)

  x=linprog(f,A,b,Aeq,beq)

  x=linprog(f,A,b,Aeq,beq,lb,ub)

  x=linprog(f,A,b,Aeq,beq,lb,ub,x0)

  x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)

  [x,fval]=linprog(…)

  [x, fval, exitflag]=linprog(…)

  [x, fval, exitflag, output]=linprog(…)

  [x, fval, exitflag, output, lambda]=linprog(…)

3.介绍一种最常用的:

  [x,fval,exitflag,output,lambda] = linprog(f,A,b,Aep,beq,lb,ub);

其中,f是目标函数系数矩阵;A和b是不等式约束条件的参数;Aeq和beq是等式约束条件的参数;lb和ub为x取值的取值范围。

  lambda.ineqlin—不等式约束A,b

  lambda.eqlin—等式约束Aep,bep

  lambda.upper—上界条件ub

  lambda.lower—下界条件lb

4.实例:

目标函数:f(x) = –5x1 – 4x2 –6x3,

约束条件:

  x1 – x2 + x3 ≤ 20

  3x1 + 2x2 + 4x3 ≤ 42

  3x1 + 2x2 ≤ 30

  0 ≤ x1, 0 ≤ x2, 0 ≤ x3

Matlab程序:

>> f = [-5; -4; -6]; A = [1 -1 1; 3 2 4; 3 2 0]; b = [20; 42; 30]; lb = zeros(3,1);
>> [x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb);
>> x
x =
0.0000
15.0000
3.0000

>> fval
fval =
-78.0000


二、二次型规划问题

  理解完线性规划问题再来学习二次型规划问题就简单得多了,可以相似类比。

1.求解方式:用quadprog函数来求解

2.quadprog函数使用形式:

  x = quadprog(H,f)

  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 = quadprog(problem)

  [x,fval] = quadprog(H,f,...)

  [x,fval,exitflag] = quadprog(H,f,...)

  [x,fval,exitflag,output] = quadprog(H,f,...)

  [x,fval,exitflag,output,lambda] = quadprog(H,f,...)

3.实例:



Matlab程序:

>> H = [4 -4;-4 8];f = [-6;-3];A = [1 1;4 1];b = [3;9];lb = ones(2,1);
>> [x,fval,exitflag,output,lambda] = quadprog(H,f,A,b,[],[],lb);
>> x
x =
1.9500

1.0500

>> fval
fval =
-11.0250


注:若求解的是最大值问题亦可转化为求最优化问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: