数学建模 线性规划

一.概念
1.数学规划:

人们经常会遇到如何利用现有资源进行生产,以取得最大经济效益的问题.这类问题形成了运筹学的1个重要分支——数学规划,即研究如何在一定的资源和条件限制下,将某个目标最大或最小化

2.线性规划
(1)概念:

线性规划(Linear Programming;LP)是数学规划的1个重要分支,专门研究线性规划问题,即在1组线性约束条件的限制下,求1个线性目标函数的最大或最小值的问题

(2)一般形式:

一般线性规划问题的(数学)标准型为: m a x / m i n    z = ∑ j = 1 n c j x j ( 1.1 ) s . t . { b i 1 ≤ ∑ j = 1 n a i j x j ≤ b i 2   ( i = 1 , 2... m ) l ≤ x j ≤ u   ( j = 1 , 2... n ) ( 1.2 ) max/min\:\,z=\displaystyle\sum_{j=1}^nc_jx_j\qquad(1.1)\\s.t.\begin{cases}b_{i1}≤\displaystyle\sum_{j=1}^na_{ij}x_j≤b_{i2}\,(i=1,2...m)\\l≤x_j≤u\,(j=1,2...n)\end{cases}\qquad(1.2) max/minz=j=1ncjxj(1.1)s.t.bi1j=1naijxjbi2(i=1,2...m)lxju(j=1,2...n)(1.2)其中式(1.1)称为问题的目标函数;式(1.2)称为问题的约束条件,记为 s . t . s.t. s.t.(即subject to);称满足式(1.2)的解 x = [ x 1 , x 2 . . . x n ] T x=[x_1,x_2...x_n]^T x=[x1,x2...xn]T为线性规划问题的可行解,所有可行解构成的集合称为问题的可行域,记为 R R R;而使式(1.1)达到最大或最小值的可行解称为最优解

二.利用MATLAB求解
1.标准形式:

MATLAB规定线性规划问题的标准形式为: m i n x    f T x s . t . { A ⋅ x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b \mathop{min}\limits_{x}\:\,f^Tx\\s.t.\begin{cases}A·x≤b\\Aeq·x=beq\\lb≤x≤ub\end{cases} xminfTxs.t.AxbAeqx=beqlbxub其中 f , x , b , b e q , l b , u b f,x,b,beq,lb,ub f,x,b,beq,lb,ub为列向量. f f f称为价值向量, b b b称为资源向量; A , A e q A,Aeq A,Aeq为矩阵

2.求解:

MATLAB中使用linprog()求解线性规划问题(详情参见 MATLAB.函数 部分)

例如: m a x    z = 2 x 1 + 3 x 2 − 5 x 3 s . t . { x 1 + x 2 + x 3 = 7 2 x 1 − 5 x 2 + x 3 ≥ 10 x 1 + 3 x 2 + x 3 ≤ 12 x 1 , x 2 , x 3 ≤ 0 max\,\:z=2x_1+3x_2-5x_3\\s.t.\begin{cases}x_1+x_2+x_3=7\\2x_1-5x_2+x_3≥10\\x_1+3x_2+x_3≤12\\x_1,x_2,x_3≤0\end{cases} maxz=2x1+3x25x3s.t.x1+x2+x3=72x15x2+x310x1+3x2+x312x1,x2,x30的标准形式为: m i n    w = − 2 x 1 − 3 x 2 + 5 x 3 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 ] = 7 [ x 1 x 2 x 3 ] ≥ [ 0 0 0 ] min\,\:w=-2x_1-3x_2+5x_3\\s.t.\begin{cases}\left[\begin{matrix}-2&5&-1\\1&3&1\end{matrix}\right]\left[\begin{matrix}x_1\\x_2\\x_3\end{matrix}\right]≤\left[\begin{matrix}-10\\12\end{matrix}\right]\\\left[\begin{matrix}1&1&1\end{matrix}\right]\left[\begin{matrix}x_1\\x_2\\x_3\end{matrix}\right]=7\\\left[\begin{matrix}x_1\\x_2\\x_3\end{matrix}\right]≥\left[\begin{matrix}0\\0\\0\end{matrix}\right]\end{cases} minw=2x13x2+5x3s.t.[215311]x1x2x3[1012][111]x1x2x3=7x1x2x3000求解代码为:

>> 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,aeq,beq,zeros(3,1));

Optimal solution found.

>> x,-y

x =

    6.4286
    0.5714
         0


ans =

   14.5714

三.可转换为线性规划的问题
1.绝对值求和类:

现有数学规划问题: m i n    ∑ i = 1 n a i ∣   x i ∣ s . t . A x ≤ b min\,\:\displaystyle\sum_{i=1}^na_i|\,x_i|\\s.t.\quad Ax≤b mini=1naixis.t.Axb其中 x = [ x 1 , x 2 . . . x n ] T x=[x_1,x_2...x_n]^T x=[x1,x2...xn]T; A , b A,b A,b为相应维数的矩阵和向量.现在取 u i = x i + ∣ x i ∣ 2 , v i = ∣ x i ∣ − x i 2   ( i = 1 , 2... n ) u_i=\frac{x_i+|x_i|}{2},v_i=\frac{|x_i|-x_i}{2}\,(i=1,2...n) ui=2xi+xi,vi=2xixi(i=1,2...n)并记 u = [ u 1 , u 2 . . . u n ] T , v = [ v 1 , v 2 . . . v n ] T u=[u_1,u_2...u_n]^T,v=[v_1,v_2...v_n]^T u=[u1,u2...un]T,v=[v1,v2...vn]T,从而把上述问题转换为 m i n    ∑ i = 1 n a i ( u i + v i ) s . t . { A ( u − v ) ≤ b u , v ≥ 0 min\,\:\displaystyle\sum_{i=1}^na_i(u_i+v_i)\\s.t.\begin{cases}A(u-v)≤b\\u,v≥0\end{cases} mini=1nai(ui+vi)s.t.{A(uv)bu,v0再进一步改写为 m i n    ∑ i = 1 n a i ( u i + v i ) s . t . { [ A − A ] [ u v ] ≤ b u , v ≥ 0 min\,\:\displaystyle\sum_{i=1}^na_i(u_i+v_i)\\s.t.\begin{cases}\left[\begin{matrix}A&-A\end{matrix}\right]\left[\begin{matrix}u\\v\end{matrix}\right]≤b\\u,v≥0\end{cases} mini=1nai(ui+vi)s.t.[AA][uv]bu,v0

求解下述数学规划问题: m i n    z = ∣ x 1 ∣ + 2 ∣ x 2 ∣ + 3 ∣ x 3 ∣ + 4 ∣ x 4 ∣ s . t . { x 1 − x 2 − x 3 + x 4 ≤ − 2 x 1 − x 2 + x 3 − 3 x 4 ≤ − 1 x 1 − x 2 − 2 x 3 + 3 x 4 ≤ − 1 2 min\,\:z=|x_1|+2|x_2|+3|x_3|+4|x_4|\\s.t.\begin{cases}x_1-x_2-x_3+x_4≤-2\\x_1-x_2+x_3-3x_4≤-1\\x_1-x_2-2x_3+3x_4≤-\frac{1}{2}\end{cases} minz=x1+2x2+3x3+4x4s.t.x1x2x3+x42x1x2+x33x41x1x22x3+3x421做变量替换 u i = x i + ∣ x i ∣ 2 , v i = ∣ x i ∣ − x i 2   ( i = 1 , 2 , 3 , 4 ) u_i=\frac{x_i+|x_i|}{2},v_i=\frac{|x_i|-x_i}{2}\,(i=1,2,3,4) ui=2xi+xi,vi=2xixi(i=1,2,3,4),并把新变量重新排序成1维向量 y = [ u v ] T = [ u 1 . . . u 4 , v 1 . . . v 4 ] T y=\left[\begin{matrix}u&v\end{matrix}\right]^T=[u_1...u_4,v_1...v_4]^T y=[uv]T=[u1...u4,v1...v4]T,则 m i n    z = c T y s . t . { [ A − A ] [ u v ] ≤ b y ≥ 0 min\,\:z=c^Ty\\s.t.\begin{cases}\left[\begin{matrix}A&-A\end{matrix}\right]\left[\begin{matrix}u\\v\end{matrix}\right]≤b\\y≥0\end{cases} minz=cTys.t.[AA][uv]by0其中 c = [ 1 2 3 4 1 2 3 4 ] T b = [ − 2 − 1 − 1 2 ] T A = [ 1 − 1 − 1 1 1 − 1 1 − 3 1 − 1 − 2 3 ] c=\left[\begin{matrix}1&2&3&4&1&2&3&4\end{matrix}\right]^T\\b=\left[\begin{matrix}-2&-1&-\frac{1}{2}\end{matrix}\right]^T\\A=\left[\begin{matrix}1&-1&-1&1\\1&-1&1&-3\\1&-1&-2&3\end{matrix}\right] c=[12341234]Tb=[2121]TA=111111112133求解代码为:

>> c=1:4;
>> c=[c,c]';
>> a=[1,-1,-1,1;1,-1,1,-3;1,-1,-2,3];
>> a=[a,-a];
>> b=[-2,-1,-1/2]';
>> [y,z]=linprog(c,a,b,[],[],zeros(8,1))

Optimal solution found.


y =

     0
     0
     0
     0
     2
     0
     0
     0


z =

    2.0000

>> x=y(1:4)-y(5:end)

x =

    -2
     0
     0
     0

2.多重最值类:

现有数学规划问题: m i n x i { m a x y i ∣   ε i ∣ } \mathop{\mathbb{min}}\limits_{x_i}\{\mathop{\mathbb{max}}\limits_{y_i}|\,ε_i|\} ximin{yimaxεi}其中 ε i = x i − y i ε_i=x_i-y_i εi=xiyi.取 v = m a x y i ∣   ε i ∣ v=\mathop{\mathbb{max}}\limits_{y_i}|\,ε_i| v=yimaxεi,上述问题就转换为: m i n    v s . t . { x i − y i ≤ v y i − x i ≤ v min\,\:v\\s.t.\begin{cases}x_i-y_i≤v\\y_i-x_i≤v\end{cases} minvs.t.{xiyivyixiv

四.投资的风险和收益

假设市场上有 n n n种资产可供选择,分别记为 s i   ( i = 1 , 2... n ) s_i\,(i=1,2...n) si(i=1,2...n).现用数额为 M M M的相当大的资金进行投资,这 n n n种资产的平均收益率分别为 r i r_i ri,风险损失率为 q i q_i qi.投资越分散,总风险就越小,总风险可用投资的 s i s_i si中最大的1个风险来衡量.购买 s i s_i si时交易费的费率为 p i p_i pi,但当购买额不超过 u i u_i ui时,交易费均按购买 u i u_i ui计算.另外,同期银行存款(记为 s 0 s_0 s0)利率为 r 0 r_0 r0,没有交易费和风险(即 p 0 = q 0 = 0 p_0=q_0=0 p0=q0=0).设投资在 s i s_i si上的资金额为 x i x_i xi,各种资产间相互独立.要求设计1种投资组合方案,使净收益尽可能大,总风险尽可能小

总风险 A = m a x { q i x i   ∣   i = 1 , 2... n } A=max\{q_ix_i\,|\,i=1,2...n\} A=max{qixii=1,2...n}.用于 s i s_i si的交易费 P i = { p i x i   ( x i > u i ) p i u i   ( x i ≤ u i ) P_i=\begin{cases}p_ix_i\,(x_i>u_i)\\p_iu_i\,(x_i≤u_i)\end{cases} Pi={pixi(xi>ui)piui(xiui).由于 p i u i < u i < < M p_iu_i<u_i<<M piui<ui<<M, s i s_i si的净收益 R i ≈ ( r i − p i ) x i R_i≈(r_i-p_i)x_i Ri(ripi)xi
从而这是1个多目标规划模型 { m a x ∑ i = 0 n ( r i − p i ) x i m i n { m a x 1 ≤ i ≤ n { q i x i } } s . t . { ∑ i = 0 n ( 1 + p i ) x i = M x i ≥ 0     \begin{cases}max\displaystyle\sum_{i=0}^n(r_i-p_i)x_i\\min\{\mathop{\mathbb{max}}\limits_{1≤i≤n}\{q_ix_i\}\}\end{cases}\\s.t.\begin{cases}\displaystyle\sum_{i=0}^n(1+p_i)x_i=M\\x_i≥0\end{cases}\quad\:\:\: maxi=0n(ripi)ximin{1inmax{qixi}}s.t.i=0n(1+pi)xi=Mxi0

①若希望在单项投资的风险率 ( ( ( q i x i M ) \frac{q_ix_i}{M}) Mqixi)不超过 a a a的情况下获得最大收益,则模型简化为 m a x ∑ i = 0 n ( r i − p i ) x i s . t . { q i x i M ≤ a ∑ i = 0 n ( 1 + p i ) x i = M x i ≥ 0 max\displaystyle\sum_{i=0}^n(r_i-p_i)x_i\\s.t.\begin{cases}\frac{q_ix_i}{M}≤a\\\displaystyle\sum_{i=0}^n(1+p_i)x_i=M\\x_i≥0\end{cases} maxi=0n(ripi)xis.t.Mqixiai=0n(1+pi)xi=Mxi0②若希望在总盈利不少于 k k k的情况下使风险最小,则模型简化为 m i n { m a x 1 ≤ i ≤ n { q i x i } } s . t . { ∑ i = 0 n ( r i − p i ) x i ≥ k ∑ i = 0 n ( 1 + p i ) x i = M x i ≥ 0 min\{\mathop{\mathbb{max}}\limits_{1≤i≤n}\{q_ix_i\}\}\\s.t.\begin{cases}\displaystyle\sum_{i=0}^n(r_i-p_i)x_i≥k\\\displaystyle\sum_{i=0}^n(1+p_i)x_i=M\\x_i≥0\end{cases} min{1inmax{qixi}}s.t.i=0n(ripi)xiki=0n(1+pi)xi=Mxi0③若希望权衡风险和预期收益这2方面,且对风险,收益分别赋权为 0 < s ≤ 1 , 1 − s   ( s 0<s≤1,1-s\,(s 0<s1,1s(s称为投资偏好系数 ) ) ),则模型简化为 m i n    s { m a x 1 ≤ i ≤ n { q i x i } } − ( 1 − s ) ∑ i = 0 n ( r i − p i ) x i s . t . { ∑ i = 0 n ( 1 + p i ) x i = M x i ≥ 0 min\,\:s\{\mathop{\mathbb{max}}\limits_{1≤i≤n}\{q_ix_i\}\}-(1-s)\displaystyle\sum_{i=0}^n(r_i-p_i)x_i\\s.t.\begin{cases}\displaystyle\sum_{i=0}^n(1+p_i)x_i=M\\x_i≥0\end{cases} mins{1inmax{qixi}}(1s)i=0n(ripi)xis.t.i=0n(1+pi)xi=Mxi0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值