线性规划问题的模型建立与求解

线性规划问题

       线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题,一般用于求解最优化问题。因为其目标函数及约束条件均为线性函数,所以被称为线性规划问题。线性规划所研究的对象属于最优化的范畴,本质上是一个极值问题。
       基本要素:1.决策变量:线性规划问题中要确定的未知量,可有决策者决定和控制。
                        2.目标函数:是决策变量的函数,反应决策者对于线性规划问题结果的要求。
                        3.约束条件:指决策变量取值时受到的各种资源条件的限制,通常表达为含决策变量的等式或不等式。
       特征:目标函数和约束条件中的函数都是决策变量的线性函数,并且约束条件是必不可少的。

线性规划问题的模型建立

       数学模型的一般形式:1.列出约束条件及目标函数;
                                         2.画出约束条件所表示的可行域;
                                         3.在可行域内求目标函数的最优解及最优值。
       数学模型的建立:从实际问题中建立数学模型一般有以下三个步骤:
                                    1.根据影响所要达到目的的因素找到决策变量;
                                    2.由决策变量和所在达到目的之间的函数关系确定目标函数;
                                    3.由决策变量所受的限制条件确定决策变量所要满足的约束条件。
       标准形式在这里插入图片描述

线性规划问题的模型求解

1.Lingo求解

       Lingo是Linear Interactive and General Optimizer的缩写,即“交互式的线性和通用优化求解器”,可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。Lingo 是使建立和求解线性、非线性和整数最佳化模型更快更简单更有效率的综合工具,它提供强大的语言和快速的求解引擎来阐述和求解最佳化模型。
       一般地,使用Lingo求解运筹学问题可以分为以下两个步骤来完成:
              1)根据实际问题,建立数学模型,即使用数学建模的方法建立优化模型;
              2)根据优化模型,利用Lingo 来求解模型。主要是根据Lingo软件,把数学模型转译成计算机语言,借助于计算机来求解。
       例如:求解下列线性规划问题在这里插入图片描述                   应用Lingo来求解该模型,只需要在Lingo窗口中输入以下信息:
                                              m a x = 5 ∗ x 1 + 3 ∗ x 2 + 6 ∗ x 3 ; max=5*x1 +3*x2 +6*x3; max=5x1+3x2+6x3;
                                              x 1 + 2 ∗ x 2 + x 3 < = 18 ; x1 +2*x2 + x3 <=18 ; x1+2x2+x3<=18;
                                              2 ∗ x 1 + x 2 + 3 ∗ x 3 = 16 ; 2*x1 + x2+3*x3 =16 ; 2x1+x2+3x3=16;
                                              x 1 + x 2 + x 3 = 10 ; x1 + x2 + x3 =10 ; x1+x2+x3=10;
                                              @ f r e e ( x 3 ) ; @free(x3); @free(x3);
                   然后按运行按钮,得到模型最优解,具体如下:
                                              O b j e c t i v e     v a l u e : 46.00000 Objective\ _{}\ _{}value: 46.00000 Objective  value:46.00000
                                              V a r i a b l e             V a l u e                           R e d u c e d     C o s t Variable\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}Value\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}Reduced\ _{}\ _{}Cost Variable      Value             Reduced  Cost
                                                x 1                               14.00000                     0.000000 \ _{}x1\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}14.00000\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}0.000000  x1               14.00000          0.000000
                                                x 2                               0.000000                     1.000000 \ _{}x2\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}0.000000\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}1.000000  x2               0.000000          1.000000
                                                x 3                       − 4.000000                     0.000000 \ _{}x3\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{} -4 .000000\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}0.000000  x3           4.000000          0.000000
                   由此可知,当 x 1 = 14 , x 2 = 0 , x 3 = − 4 x1 =14,x2 =0,x3 =-4 x1=14,x2=0,x3=4 时,模型得到最优值,最优值为 46 46 46

2.MATLAB求解

       使用Matlab进行模型求解时需调用linporg()函数,linprog函数是用来求解线性规划问题的。
       在 MATLAB中线性规划问题的标准格式:在这里插入图片描述若是目标函数是求解最大值的话,则取-C形式: 在这里插入图片描述       MATLAB语句: [ X , f v a l 1 ] = l i n p r o g ( f , A , b , A e q , b e q ) ; [X,fval1] = linprog(f,A,b,Aeq,beq); [X,fval1]=linprog(f,A,b,Aeq,beq);则可以得到最优解 f v a l 1 = f ′ ∗ X fval1 = f '*X fval1=fX
       例如:求解下列线性规划问题在这里插入图片描述                   程序: c = [ 2 ; 3 ; − 5 ] ; c = [2;3;-5]; c=[2;3;5];
                              a = [ − 2 , 5 , − 1 ; 1 , 3 , 1 ] ; a = [-2,5,-1;1,3,1]; a=[2,5,1;1,3,1];
                              b = [ − 10 , 12 ] ; b = [-10,12]; b=[10,12];
                              a e q = [ 1 , 1 , 1 ] ; aeq = [1,1,1]; aeq=[1,1,1];
                              b e q = 7 ; beq = 7; beq=7;
                              [ x , f v a l 1 ] = l i n p r o g ( − c , a , b , a e q , b e q , z e r o s ( 3 , 1 ) ) [x,fval1 ]= linprog(-c,a,b,aeq,beq,zeros(3,1)) [x,fval1]=linprog(c,a,b,aeq,beq,zeros(3,1))
                   结果: x = x = x=
                               6.428571428255824 6.428571428255824 6.428571428255824
                               0.571428570655132 0.571428570655132 0.571428570655132
                               0.000000001089048 0.000000001089048 0.000000001089048

                               f v a l 1 = fval1 = fval1=
                               − 14.571428563031805 -14.571428563031805 14.571428563031805
                   由此可知,当 x 1 = 6.428571428255824 , x 2 = 0.571428570655132 , x 3 = 0.000000001089048 x1 =6.428571428255824,x2 =0.571428570655132,x3 =0.000000001089048 x1=6.428571428255824,x2=0.571428570655132,x3=0.000000001089048 时,模型得到最优值,最优值为 − 14.571428563031805 -14.571428563031805 14.571428563031805

  • 10
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值