备战建模——线性规划问题

问题引入

某机床厂生产甲、乙两种机床,每台销售后的利润分别为 4000 元与 3000 元。生产甲机床需用A、B机器加工,加工时间分别为每合 2h 和1h;生产乙机床需用 A、B、C三种机器加工,加工时间为每台各1h。 若每天可用于加工的机器时数分别为A机器10h B机器8h 和C机器7h,问该厂应生产甲、己机床各儿台,才能便总利润最大?

上述问题的数学模型:设该厂生产x1台甲机床和x2台机床时总利润最大
max ⁡ z = 4 x 1 + 3 x 2 \max z=4x1+3x2 maxz=4x1+3x2
s . t { 2 x 1 + x 2 ≤ 10 x 1 + x 2 ≤ 8 x 2 ≤ 7 x 1 , x 2 ≥ 0 s.t\left\{ \begin{aligned} 2x1+x2≤10 \\ x1+x2≤8 \\ x2≤7\\x1,x2≥0 \end{aligned} \right. s.t2x1+x210x1+x28x27x1,x20
线性规划问题是在一组线性约束条件的限制下,求线性目标函数的最大或者最小问题
min ⁡ x f T x \min_xf^Tx minxfTx

s . t { A ⋅ x ≤ b A e q ⋅ x ≤ b e q l b ≤ x ≤ u b s.t\left\{ \begin{aligned} A·x≤b \\ Aeq·x≤beq \\ lb≤x≤ub \end{aligned} \right. s.tAxbAeqxbeqlbxub
式中:f,x,b,beq,lb,ub为列向量,f为价值向量,b为资源向量;A,Aeq为矩阵
MATLAB中对应的命令为:
[ x , f v a l ] = l i n p r o g ( f , A , b ) [x,fval]=linprog(f,A,b) [x,fval]=linprog(f,A,b)
[ x , f v a l ] = l i n p r o g ( f , A , b , A e q ) [x,fval]=linprog(f,A,b,Aeq) [x,fval]=linprog(f,A,b,Aeq)
[ x , f v a l ] = l i n p r o g ( f , A , b , A e q , l b , u b ) [x,fval]=linprog(f,A,b,Aeq,lb,ub) [x,fval]=linprog(f,A,b,Aeq,lb,ub)
式中:x返回决策向量的取值;fval返回目标函数的最优值;f为价值向量;A
和b对应线性不等式约束;Aeq和 beg对应线性等式约束;lb和ub分别对应决策向量的下界向量和上界向量。
注:max和≥应该转换成min和≤
以下例子为例:
max ⁡ z = 2 x 1 + 3 x 2 − 5 x 3 \max z=2x1+3x2-5x3 maxz=2x1+3x25x3
x 1 + x 2 + x 3 = 7 x1+x2+x3=7 x1+x2+x3=7
s . t { 2 x 1 − 5 x 2 + x 3 ≥ 10 x 1 + 3 x 2 + x 3 ≤ 12 x 1 , x 2 , x 3 ≥ 0 s.t\left\{ \begin{aligned} 2x1-5x2+x3≥10 \\x1+3x2+x3≤12 \\ x1,x2,x3≥0 \end{aligned} \right. s.t2x15x2+x310x1+3x2+x312x1,x2,x30

化为标准型,即
min ⁡ w = − 2 x 1 − 3 x 2 + 5 x 3 \min w=-2x1-3x2+5x3 minw=2x13x2+5x3

s . t { [ − 2 5 − 1 1 3 1 ] [ x 1 x 2 x 3 ] ≤ [ − 10 12 ] [ 1 1 1 ] [ x 1 x 2 x 3 ] T = 7 [ x 1 x 2 x 3 ] T ≥ [ 0 0 0 ] T s.t\left\{ \begin{aligned} \begin{bmatrix} -2&5&-1\\ 1&3&1\end{bmatrix}\begin{bmatrix} x1\\ x2\\x3\end{bmatrix}≤\begin{bmatrix} -10\\ 12\end{bmatrix} \\ \begin{bmatrix} 1&1&1\end{bmatrix}\begin{bmatrix} x1&x2&x3\end{bmatrix}^T=7 \\ \begin{bmatrix} x1&x2&x3\end{bmatrix}^T≥\begin{bmatrix} 0&0&0\end{bmatrix}^T \end{aligned}\right. s.t[215311]x1x2x3[1012][111][x1x2x3]T=7[x1x2x3]T[000]T
对应的MATLAB代码为:
f = [ 2 ; − 3 ; 5 ] ; a = [ − 2 , 5 , − 1 ; 1 , 3 , 1 ] ; b = [ − 10 , 12 ] ; a e q = [ 1 , 1 , 1 ] ; b e q = 7 ; [ x , y ] = l i n p r o g ( f , a , b , b e q , z e r o s ( 3 , 1 ) ) x , y = − y f=[2;-3;5];\\ a=[-2,5,-1;1,3,1];\\b=[-10,12]; aeq=[1,1,1];\\ beq=7;\\ [x,y]=linprog(f,a,b,beq,zeros(3,1))\\ x,y=-y f=[2;3;5];a=[2,5,1;1,3,1];b=[10,12];aeq=[1,1,1];beq=7;[x,y]=linprog(f,a,b,beq,zeros(3,1))x,y=y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风月ac

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>