数学建模学习笔记-算法(线性规划模型)-上

目录

线性规划问题

线性规划的matlab标准形式

解析

目标函数

约束条件

使用matlab的linprog函数来进行求解


线性规划问题

数学规划:安排现有资源安排生产,以取得最大效益的问题。

线性规划:目标函数和约束条件均为线性函数

                  在一组线性约束条件的限制下,求线性目标函数最大或最小的问题。

可行解:满足约束条件的解就是可行解

最优解:使目标函数达到最值的可行解

可行域:所有可行解构成的集合,记为R

线性规划的matlab标准形式

数学建模学习笔记-算法(线性规划模型)-上_第1张图片

解析

\large \underset{x}{min}C^{T}x为目标函数

数学建模学习笔记-算法(线性规划模型)-上_第2张图片

为约束条件

目标函数

\large \underset{x}{min}C^{T}x

 c 为目标函数系数,列向量

目标函数:minz=2*x1+3*x2+5*x3

minz是所求最小值

c就是[2,3,5]

如果求最大值需要把系数取负值

目标函数:maxz=2*x1+3*x2+5*x3

maxz是所求最大值

但matlab的标准形式为求最小值,所以求最大值时需要取负数

c就是[-2,-3,-5]

在matlab中表示成

c=[-2,-3,-5]

约束条件

数学建模学习笔记-算法(线性规划模型)-上_第3张图片

 1.“s.t.”,指 subject to,受限制于...,所以s.t.所包含的就是他的约束条件

数学建模学习笔记-算法(线性规划模型)-上_第4张图片

2.A为小于等于的系数矩阵,b为小于等于值列向量

 那么小于等于的约束条件是

2*x1-5*x2+x3>=10

x1+3*x2+x3<=12

但matlab的标准形式为小于等于,所以第一个式子要两边取负数,变成小于等于就变成了

-2*x1+5*x2-x3<=-10

x1+3*x2+x3<=12

那么显而易见系数矩阵A就是

\large \begin{bmatrix} -2 &5 &-1\\ 1&3&1 \\ \end{bmatrix}

同理它所对应的值列向量b

 \large \begin{bmatrix} -10\\ 12 \end{bmatrix}

 那么在matlab中表示成 

A=[-2,5,-1;1,3,1]
b=[-10,12]

3.Aeq为等于的系数矩阵的系数矩阵

Beq为等于的值列向量

 那么等于的约束条件是

x1+x2+x3=7

 那么显而易见系数矩阵Aeq就是

\large \begin{bmatrix} 1&1 &1\\ \end{bmatrix}

同理它所对应的值列向量Beq

7

 那么在matlab中表示成 

Aeq=[1,1,1]
Beq=5

4.LB为x i 的下界,UB为上界

那么等于的约束条件是

x1,x2,x3>=0

没有上界所以 不需要ub

而下界lb则为3个0

 那么在matlab中表示成 

lb = [0;0;0]

使用matlab的linprog函数来进行求解

 [x,fval]=lingrog(c,A,b,Aeq,Beq,lb,ub)

将其一个个带入

数学建模学习笔记-算法(线性规划模型)-上_第5张图片

就可以写出

c = [-2;-3;5];
A = [-2 5 -1];
b = -10;
Aeq = [1 1 1];
beq = 7;
LB = [0;0;0];
[x,fval] = linprog(c,A,b,Aeq,beq,LB);

x 为最优解,

求最小值时

fval 为最优的目标函数值

求最大值时

-fval 为最优的目标函数值

总结

x 为最优解, fval 为最优的目标函数值
c 为目标函数系数,列向量
A为小于等于的系数矩阵,b为小于等于值列向量
Aeq,Beq为等于约束,含义同上
LB为x i xi x i 的下界,UB为上界,列向量
注意后面的参数可以省略,中间如果有条件用不到,需要用[]占位

将以上字母按照matlab标准形式带入[x,fval]=lingrog(c,A,b,Aeq,Beq,lb,ub)

注:遇到非典型的线性规划可以用数学知识,尝试转化为线性规划问题

你可能感兴趣的:(笔记,算法,学习)