资源描述
-. z.-资源分配问题的求解方法【摘要】资源分配问题就是将一种或几种资源原材料、资金、机器设备等以最优的方式分配给假设干个使用者,以获得最大的效益。它可以是静态规划问题,也可以通过构造动态规划模型求解。本文通过用单纯形法求解线性规划问题,用隐枚举法、LINGO软件求解 0-1 规划问题,以及用逆序递推算法求解动态规划问题。这几种算法的最终目的都是用来求解资源分配的最优值问题。【关键词】资源分配;线性规划;0-1规划;动态规划The Method of Solving the Resource Allocation Problem【Abstract】Resource allocation problem is one or several resources( raw materials, machinery, equipment, etc.)assigned to several users by best way to get ma*imum benefit. It is a static planning problem, and can alsothrough structural dynamic programming model to solve.This paper solves linear programming problem by using simple* method, 0-1 programming problemby using the implicit enumeration method, LINGO software method, anddynamic programming problemby using reverse recursive algorithm. The ultimate goal of this several algorithms is to solve the optimal value problem of the resources allocation.【Key Word】Resource allocation; Linear Programming;0-1 programming;Dynamic programming目录 1 引言12 线性规划12.1 模型的建立12.2 求解方法22.3 实例 133 0-1规划53.1 模型的建立53.2 求解方法63.3 实例 284 动态规划104.1 模型的建立104.2 求解方法104.3 实例 3125 结论14参考文献15附录16致谢18. z.-1 引言人们奋斗所争取的一切,都同他们的利益有关。资源分配问题关系着人们的利益能否实现,因而一直是政治经济学研究的中心课题之一。在近几年,随着社会经济的开展,资源分配问题已经广泛存在于社会各个领域,并且已经成为制约我国改革、开展、稳定的焦点问题。如何在满足各使用者的根底上,将有限资源进展最正确分配,使得生产本钱最低、投资最省、产量最高、利润最大,以最大限度地提高效益,是资源分配问题中亟待解决的难题,所以资源分配的求解方法就给解决这种问题带来了很大的方便。线性规划是运筹学中研究较早,理论和算法比较成熟的分支之一,它主要研究在线性等式或不等式的限制条件下,使*一线性目标函数取得最大值或最小值的问题,并且求解有统一而简单的方法即单纯形法。但在许多问题中,决策变量必须为整数,例如当决策变量是分配的人数、购置的设备数、投入的车辆数时,它们一般必须为非负整数时才有意义。在这种情况下,常需要应用整数规划进展优化。0-1整数规划是整数规划的特殊情况,也是最广泛的整数规划,用0-1整数规划求解时有时会更容易。有时源分配问题上也可以使用动态规划求解,动态规划是解决多阶段决策过程最优化问题的一种方法,这种方法就是把它看成一个时间轴,在时间的推移过程中,在每个时间阶段选择适当的决策,以使整个系统到达最优。本文不仅介绍了线性规划、0-1规划、和动态规划几种求解资源分配的方法,还介绍了求解线性规划的方法单纯形法、求解0-1规划的方法隐枚举法和LINGO软件法、以及求解动态规划的方法逆序递推法等几种算法的模型、求解的具体步骤和所对应的实例。通过对本文的这几种求解方法的介绍,根本上就可以使不同的资源分配问题得到更好更快的解答。2 线性规划2.1 模型的建立线性规划是运筹学中最根本且范围最广的分支,它最主要是应用于合理的进展各种资源的分配,以取得最正确的效果。对于这类需要种不同的原材料生产种不同的产品的资源分配问题,一般是每种原材料的库存量,每种产品所需的各种原材料的分量,以及生产每种产品能获得多少利益1。这类资源分配问题只要运用线性规划就可以解决。表1 产品原材料产品库存量原材料利润这种线性规划问题的数学模型为:这里为由目标函数的系数组成的向量, 和 分别为不等式约束条件的系数矩阵和右端向量, 和 分别为等式约束条件的系数矩阵和右端向量,当约束条件没有等式时, 和 就用空矩阵 表示, 和分别是变量的下界和上界约束。满足全部约束条件的一组决策变量,称为此线性问题的可行解,而使目标函数到达问题要求的最优值(或)的可行解称为线性规划问题的最优解。2.2求解方法单纯形法是求解线性规划问题的通用方法。单纯形法的根本思想是:先找出一个根本可行解,对它进展鉴别,看是否是最优解;假设不是,则按照一定法则转换到另一改进的更好的根本可行解,再鉴别;假设仍不是,则再转换,按此重复进展,经过反复迭代,直到目标函数值到达最大值或最小值,就得到了最优解。可以用图形表示为:单纯形法的思路最优解核心是:变量迭代找出一个初始根本可行解是否最优转移到另一个根本可行解是否循环完毕 图1单纯形法的一般解题步骤可归纳如下2: (1) 把线性规划问题的约束方程组表达成典式方程组,找一个初始的可行基;(2) 求出对应的典式及检验数向量; (3) 求; (4) 假设,停顿,已找到最优解(5) 假设,停顿,原问题无界;(6) 求;(7) 以代替得到新的基,转第2步;用单纯形法解题时,可通过单纯形表求得最优解。2.3实例1*工厂可生产甲、乙两种产品,需消耗煤、电、油三种资源。现将有关数据列表如下:表2 产品资源甲乙资源限量煤 9 4 360 电 4 5 200油 3 10 300单位产品价格 7 12 试拟订使总收入最大的生产方案方案。解:决策变量:甲、乙产品的方案产量,记为,;目标函数:总收入,记为,则;为表达对其求极大化,在的前面冠以极大号;约束条件:分别来自资源煤、电、油限量的约束和产量非负的约束,表示为:其标准形式为其中,为松弛变量。用单纯形表解题:表3 7 12 00 0 94 1 0 0 36090 4 5 0 1 0 200 40 3 10 0 0 1 30030 0 0 0 0 1 0 240 0 0 1 5020 1 0 0 301000 00 0 0 1 84 1 0 0 20 0 1 0 24由单纯形表求得的最优解为;所以最优解为。3 01规划3.1 模型的建立整数规划指的是决策变量为非负整数值的一类线性规划,在实际问题的应用中,整数规划模型对应着大量的生产方案或活动安排等决策问题,整数规划的解法主要有分枝定界解法及割平面解法。0-1整数规划是整数规划的特例,其数学模型的目标函数、约束条件与线性规划一样,所不同的是如果整数线性规划问题的所有决策变量仅限于取0或1两个值,则称此问题为0-1整数规划,简称为0-1规划,把只能取0或1值的变量称为0-1变量。其一般的数学模型为3 :其中为0-1变量,也称二进制变量、逻辑变量。仅取值0或1这个条件可由下述约束条件所代替。,为整数,它和一般整数线性规划的约束条件形式是一致的。另一种形式为4:引进0-1变量:及资源单位数向量:则可建立与实际相应数学模型: 这两种是常见的0-1规划模型,可用隐枚举法求解,有时为了求解更加快捷、方便则通常用LINGO软件求解。3.2 求解方法(1) 隐枚举法求解 解0-1型整数规划最容易想到的方法,和一般整数规划的情形一样,就是穷举法,根本上此法可以从所有变量等于零出发初始点,然后依次指定一些变量取值为1,直到获得一个可行解,于是把第一个可行解记作迄今为止最好的可行解,再重复,依次检查变量为0,1的各种组合,对迄今为止最好的可行解加以改进,直到获得最优解。这就需要检查变量取值的个组合。对于变量个数较大例如,这几乎是不可能的。而隐枚举法就是在此根底上改进的,通过参加一定的过滤条件,使运算次数减少,从而较快的求得最优解。因此常设计一些方法,只检查变量取值的组合的一局部,就能求到问题的最优解,这样的方法称为隐枚举法。其解题关键是寻找可行解,产生过滤条件满足目标函数值优于计算过的可行解目标函数值的约束条件。一般步骤为:1)、用试探法求出一个可行解,以它的目标值作为当前最好的值;2)、增加过滤条件;3)、将 按由小大排列。最小化问题反之。(2) 用LINGO求解5LINGO:Linear Interactive and General Optimizer 即交互式的线性和通用优化求解器,它是一种专门用于求解最优化问题的软件。1程序语言说明: LINGO程序以MODEL开场,以END完毕,它们之间由语句组成,并且每个语句都是以分号;结尾。 在LINGO中语句顺序不重要,程序中不区分大小写,变量必须以字母开头,以开头的都是函数的调用。 LINGO已假定所有变量非负,可用限定变量取值范围的函数BIN*限定*为0或1、GIN*限定*为整数、FREE*取消对*的符号限制、BNDL,*,U限制改变变量的非负假定。2逻辑运算符:*AND*与,*OR*或,*NOT*非,*EQ*(等于)、*NE*(不等于)、*GT*(大于)、*GE*(大于等于)、*LT*(小于)、*LE*(小于等于)。3利用 LINGO 对上面第二种模型进展编程求解,其局部程序语句如下(省略号处表示有局部程序语句省略): 模型的设置局部,定义模型中所定义的数据构造。sets:row/1.m/:z;建立行号集合;arrange/1.n/;建立列号集合;link(row,arrange):*, y;建立双下标集合,派生出效益集合*以及0-1变量集合Y; 模型的主体局部。ma*=sum(link(i,j):*(i,j)*y(i,j);目标函数;for(arrange (i):sum(link(j,k)|k *eq*1:y(j,k)=1); 每个部门只取一个效益值;for(link(i,j):y(i,j)*z(i)=M;);限制条件:资源总数为;for(link(i,j):BIN(y(i,j););定义Y为0-1变量;模型的数据局部。data:*=*(i,j);Z=z(i);enddata3.3实例2(1) 用隐枚举法求解实例*部门在今后五年中可用于投资的资金总额为万元,有 个可以考虑的投资工程,假定每个工程最多投资一次,第个工程所需的资金为万元,将会获得的利润为万元。问应如何选择投资工程,才能使获得的总利润最大2。解这类问题时设投资决策变量为设获得的总利润为,则上述问题列出的数学模型为:例如:1、通过试探性求一个可行解,易看出满足约束条件,故为一个可行解,且相应的目标函数值为。2、因为是求极大值问题,故求最优解时,但凡目标值的解不必检验是否满足约束条件即可删除,因它肯定不是最优解,于是应增加一个约束条件目标值下界:称该条件为过滤条件。从而原问题等价于:用隐枚举法求解:表4目标值约束条件过滤条件a b c d e052738510从而得最优解,最优值。在计算过程中,假设遇到值已超过条件(a)右边的值,应改变条件(a),使右边为迄今为止最大者,然后继续作。例如,当检查点0,0,1时因,所以应将条件(a)换成。(2) 用LINGO软件求解实例现有*种设备共有五台,准备分给用户1、2、3 三个工厂,各工厂利用这些设备获得的盈利各不一样,问如何分配这五台设备,可以使总盈利为最大5.表5设备台数各工厂产生的效益值123000015542151526340404048060455907050解:引进0-1变量用LINGO软件求解的程序代码见附录1,求解的结果见附录2。由结果可知,即分配5台给用户1,获得最大盈利为。4动态规划4.1 模型的建立动态规划所研究的对象是多阶段决策问题,所谓多阶段决策问题是指一类活动过程,它可以分为假设干个相互联系的阶段,在每个阶段都需要做出决策。这个决策不仅决定这一阶段的效益,而且决定下一阶段的初始状态,每个阶段的决策确定以后,就得到一个决策序列,称为策略。多阶段决策问题就是求一个策略,使各阶段的效益的总和到达最优。设有*种资源,总数量为,用于生产种产品;假设分配数量用于生产第种产品,其收益为。问应如何分配,可使总收益最大6.这种资源分配问题可建立的动态规划模型为:4.2 求解方法17根本思路:把寻求最优策略看作连续递推的过程,从最终阶段开场,逆着实际过程的进展方向逐段求解,在每一段求解中都要利用刚求解完那段的结果,直到初始阶段求出结果,返回始点为止,这种求解方法叫做逆序递推求解。gn(*n)12S1=a*1*2g1(*1)g2(*2)s2s3n nn*nsn. 图2(1)明确问题,确定阶段的划分和阶段变量。根据多阶段决策问题的特点,将其划分为假设干个相互独立又相互联系的局部,每一个局部为一个阶段,划分出的每一个阶段通常就是需要做出一个决策的子问题。阶段通常是按决策进展的时间或空间上的先后顺序划分的,阶段变量用表示,表示把资源分配给第种产品的过程。(2)确定状态、状态变量。在多阶段决策过程中,状态是描述每个阶段所必须的信息,表示每个阶段开场时所处的自然状况或客观条件。一个阶段有假设干个状态,过程的状态用一个或一组变量来描述,状态变量必须包含在给定的阶段上确定全部允许决策所需要的信息,用表示第个阶段的状态变量,=表示在给第种产品分配之前还剩有的资源量。(3)定义决策变量。决策的实质是关于状态的选择,是决策者从给定阶段状态出发对下一阶段状态做出的选择。决策变量用表示,表示分配给第种产品的资源量。(4)正确写出状态转移方程。状态转移方程,如果给定第个阶段的状态变量,则该阶段的决策变量一经确定,第阶段的状态变量的值也就可以确定。(5)确定阶段指标函数。每阶段选定决策后所产生的效益,记。(6)确定过程指标函数目标函数。用表示第子过程的指标函数。(7)写出动态规划函数根本方程:4.3 实例3 *公司拟将*种高效设备5台分配给所属甲、乙、丙3厂。各厂获此设备后可产生的效益如下表。问应如何分配,可使所产生的总效益最大表 6工厂效益设备台数甲 乙 丙0 0 0 01 3 5 42 7 10 63 9 11 114 12 11 125 13 11 12建立动态规划模型,并按逆序递推法逐段求解:1、阶段依次表示把设备分配给甲、乙、丙厂的过程;2、状态表示给第个分厂分配时尚未分配出去的台数;3、决策表示给第个分厂分配的台数;4、状态转移;5、阶段指标表示每阶段选定决策后所产生的效益;6、指标函数;7、预计创立额为;8、根本方程用列表解:表7k 3012345012345 0+0 4+0 6+011+012+012+0046111212 0 4 6111212012345k 2 0 0 0 0+0 0 00 1 0 0 0+4 5 10 1 5 5+0 0 0 0+6 2 1 5 5+4 10 20 2 10 10+0 0 0 0+11 3 1 5 5+6 14 21 2 10 10+4 3 11 11+0 0 0 0+12 1 5 5+11 4 2 10 10+6 16 13 3 11 11+4 22 4 11 11+0 0 0 0+12 1 5 5+12 5 2 10 10+11 21 23 3 11 11+6 4 11 11+4 5 11 11+0k 15012345 0+21 3+16 7+149+1012+513+003791213 21023221最优策略:为0-2-3或2-2-1, 即分给甲厂0台、分给乙厂2台、分给丙厂3台, 或分给甲厂2台、分给乙厂2台、分给丙厂1台。最优值:=21。5 结论本文从三个方面介绍了求解资源分配问题的方法,主要是线性规划、0-1规划和动态规划。用单纯形法求解简单的线性规划问题,用隐枚举法和LINGO软件求解0-1规划问题,用逆序递推法求解动态规划问题。动态规划与静态规划研究的对象本质上都是在假设干约束条件下的函数极值问题,两种规划在很多情况下原则上是可以相互转换的,但在解决简单的问题时常用线性规划求解,在解决整数问题时常用0-1规划求解,在解决多阶段决策问题和离散性问题时常用动态规划求解,因为在解决这种问题时用动态规划求解比用线性规划或非线性规划更加有效,并且解决时效率更高,同时易于实现。但是使用动态规划方法也有一定的限制,如没有统一的标准模型,也会使问题变得复杂化,并且只适用于一些维数相当低的问题等。所以在解决资源分配问题时可以根据问题的不同类型采用不同的解题方法,对具体问题进展具体分析,这样就可以使问题得到更好地解决。参考文献1*玉娟.资源分配问题的求解D.*.*理工大学理学院.2021.12.2刁在筠,*桂真等.运筹学M.:高等教育,2007:29.3熊义杰.运筹学教程M.(2).:国防工业.2007:85.4黄政龙.资源分配问题的优化模型转换及其算法J.中南林业科技大学学报.第27卷:第2期.2007.4.5卢向南.应用运筹学M.*:*大学.2005:30-33.6赵则民.运筹学M.*:*大学.2002:137.7吴庆丰.资源分配问题的动态求解方法J.*煤炭师范学院学报.第29卷:第2期.2021.6.附录(用LINGO软件求解的代码和结果)附录1:sets:R/1.6/:z;!建立行号集合,派生出设备台数集合;L/1.3/;!建立列号集合;c(R,L):*,y;!建立双下标集合(i,j),派生出效益集合*以及0-1变量集合Y;endsetsdata:*=0 0 0 5 5 4 15 15 26 40 40 40 80 60 45 90 70 50;z=0 1 2 3 4 5;enddatama*=sum(c(i,j):*(i,j)*y(i,j);!目标函数;for(l(i):sum(c(j,k)|k*eq*1:y(j,k)=1);!每个工厂只取一个效益值;sum(c(i,j):y(i,j)*z(i)=5;!设备总台数为5;for(c(i,j):BIN (y(i,j);!为0-1变量;end附录2:Global optimal solution found.Objective value: 90.00000E*tended solver steps: 0Total solver iterations: 0Variable Value Reduced CostZ ( 1)0.000000 0.000000 Z ( 2)1.000000 0.000000 Z ( 3)2.000000 0.000000Z ( 4)3.000000 0.000000Z ( 5)4.000000 0.000000Z ( 6)5.000000 0.000000* ( 1, 1) 0.000000 0.000000* ( 1, 2) 0.000000 0.000000* ( 1, 3) 0.000000 0.000000* ( 2, 1) 5.000000 0.000000* ( 2, 2) 5.000000 0.000000* ( 2, 3) 4.000000 0.000000* ( 3, 1) 15.00000 0.000000* ( 3, 2) 15.00000 0.000000* ( 3, 3) 26.00000 0.000000* ( 4, 1) 40.00000 0.000000* ( 4, 2) 40.00000 0.000000* ( 4, 3) 40.00000 0.000000* ( 5, 1) 80.00000 0.000000* ( 5, 2) 60.00000 0.000000* ( 5, 3) 45.00000 0.000000* ( 6, 1) 90.00000 0.000000* ( 6, 2) 70.00000 0.000000* ( 6, 3) 50.00000 0.000000Y ( 1, 1) 0.000000 0.000000Y ( 1, 2) 0.000000 0.000000Y ( 1, 3) 0.000000 0.000000Y ( 2, 1) 0.000000 -5.000000Y ( 2, 2) 0.000000 -5.000000Y ( 2, 3) 0.000000 -4.000000Y ( 3, 1) 0.000000 -15.00000Y ( 3, 2) 0.000000 -15.00000Y ( 3, 3) 0.000000 -26.00000Y ( 4, 1) 0.000000 -40.00000Y ( 4, 2) 0.000000 -40.00000Y ( 4, 3) 0.000000 -40.00000Y ( 5, 1) 0.000000 -80.00000Y ( 5, 2) 0.000000 -60.00000Y ( 5, 3) 0.000000 -45.00000Y ( 6, 1) 1.000000 -90.00000Y ( 6, 2) 0.000000 -70.00000Y ( 6, 3) 0.000000 -50.00000 Row Slack or Surplus Dual Price 1 90.00000 1.000000 2 0.000000 0.000000 3 0.000000 0.000000 4 0.000000 0.000000 5 0.000000 0.000000致谢本论文设计是在赵建华教师的指导下完成的,毕业设计期间赵教师从开场选题到中期修正,再到最终定稿都给予了悉心的指导和热心的帮助。赵教师在百忙之中仍抽出珍贵的时间,并且倾注了大量的心血。她的热心教导和孜孜不倦的精神感染了我,给了我很大的鼓励和信心。她渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪,并且严谨的治学态度,使我受益匪浅。我衷心感谢赵教师,在这次论文撰写的过程中,正是有了赵教师给予的帮助,才使得我能顺利完成这篇论文的写作。同时在这里也对关心、帮助过我的教师和同学们表示衷心地感谢。. z.
展开阅读全文