1、最优化问题建模方法与技巧,温罗生博士 2012年4月,内容提要,优化问题引例和基本结构 运输模型的例子线性和非线性规划 飞行管理问题复杂的约束 钻井布局问题整数变量的使用 确定性和随机性简单和复杂的例子 单目标和多目标风险投资组合问题 思考及练习,加工费: 4元/桶,安排生产计划,在满足需求的条件下使利润最大,1、优化问题引例(原油生产计划)和基本结构,决策变量:,目标:,约束:,总利润最大,需求限制; 原料限制;含量限制; 非负限制,含量限制,非负限制,原料限制,需求限制,约束,为一定的目的做一些事情,我们可能要考虑有哪些重要的因素,这些因素和要完成的目标之间有什么样的关系.也就是说,我们在
2、做一个决定时,会注意下面的三个要点:目的是什么?有哪些重要的因素?这些因素有什么样的关系?对应于前面的三个要点,便是建立最优化问题数学模型的三个要素:目标函数,决策变量,约束条件。 目标函数对应决策者而言,对其有利的程度必须定量的测度, 在商业应用中,有效性的测度经常是利润或者成本, 但对于政府,更经常的使用投入产出率来测度。表示有效性测度的经常称为目标函数.目标函数要表出测度的有效性, 必须说明测度和导致测度改变的变量之间的关系。 一般地,数学模型很少有能表达变量和有效性测度之间的精确关系的。实际上,运筹学分析者的任务就是找出对测度有最重要影响的变量,然后找出这些变量和测度之间的数学关系。这
3、个数学关系也就是目标函数。,决策变量和参数我们称对应决策者可控的量称为决策变量,决策变量的取值确定了系统的最终性能,也是决策者采用决策的依据。在系统中还有一些量,它不能由决策者所控制,而是由系统所处的环境所决定,我们称之为参数。在一些问题的建模过程中,确定变量经常是第一步的同时也可能是最困难的工作。 约束条件约束条件决定了决策变量和参数之间的关系。约束集界定决策变量可以取某些值而不能取其他的值。比如对应生产问题, 任何活动中,时间和物品不能为负数。当然,也有一些优化问题不带约束条件,我们称之为无约束优化问题。而在实际问题中,决策变量带有约束是普遍的。有时一些问题的约束可能非常复杂。,某公司有6
4、个建筑工地,位置坐标为(ai, bi) (单位:公里),水泥日用量di (单位:吨),假设:料场和工地之间有直线道路,2、运输模型的例子选址问题,用例中数据计算,最优解为,总吨公里数为136.2,线性规划模型,决策变量:ci j (料场j到工地i的运量)12维,选址问题:非线性规划问题,2)改建两个新料场,需要确定新料场位置(xj,yj)和运量cij ,在其它条件不变下使总吨公里数最小。,决策变量: ci j,(xj,yj)16维,非线性规划模型,一般的运输问题可以表述如下:,数学模型:,若其中各产地的总产量等于各销地的总销量,即,类似与将一般的线性规划问题转化为其标准,否则,称为不平衡的运输
5、问题,包括:,,则称该问题为平衡的运输问题.,总产量总销量 和 总产量总销量.,形式,我们总可以通过引入假想的销地或产地,,将不平衡的运输问题转化为平衡的运输问题. 从,而,我们的重点就是解决平衡运输问题的求解.,运输问题小结:对于运输问题,一般的使用运量作为决策变量,目标函数一般的使用运费或者顿公里数表示,约束条件通常包括产地约束和工地约束,还有常见的非负约束,有时可能还包括线路上的运量约束。这个方面的参考文献包括钢管订购问题以及铁矿石的运输问题。,3、飞行管理问题(1995A),在约10000米的高空某边长为160公里的正方形区域内,经常有若干架飞机作水平飞行。区域内每架飞机的位置和速度向
6、量均由计算机记录其数据,以便进行飞行管理。当一驾欲进入该区域的飞机到达区域边缘时,记录其数据后,要立即计算并判断是否会与区域内的飞机发生碰撞。如果会碰撞,则应计算如何调整各架(包括新进入的)飞机飞行的方向角,以避免碰撞。现假定条件如下: 1)不碰撞的标准为任意两架飞机的距离大于8公里; 2)飞机飞行方向角调整的幅度不应超过30度; 3)所有飞机飞行速度均为每小时800公里; 4)进入该区域的飞机在到达区域边缘时,与区域内飞机的距离应在60公里以上; 5)最多需考虑6架飞机;,6)不必考虑飞机离开此区域后的状况。 请你对这个避免碰撞的飞机管理问题建立数学模型,列出计算步骤,对以下数据进行计算(方
7、向角误差不超过0.01度),要求飞机飞行方向角调整的幅度尽量小。 设该区域内4个顶点的坐标为(0,0),(160,0),(160,160),(0,160)。 记录数据为:,问题分析:,对题目的分析可知本题是一个最优化问题,要求对每架飞机的飞行角度进行调整以便避免相撞,由于仅仅在平面区域中考虑,所以每架飞机的调整角度是一个实数。因此本问题的决策变量非常明确。目标的要求是使得调整的角度尽可能的小,所以,目标函数也可以非常简单的表达出来,即,问题的约束条件是本题的难点,题目的要求中和约束相关的(1)(3)(4),其中(4)由初始的条件决定,实际上和问题的解决无关。(3)容易用决策变量表达,为,最困难
8、的是条件(1),就是任意两架飞机的距离大于8公里。 记第i架飞机在t时刻的位置为,因此可以计算在t时刻任意两架飞机i和j之间的距离满足,因此,要两架飞机不碰撞,应该满足,因为题目要求仅仅在目标区域内考虑控制问题,即时间不需要在(0,+)上考虑,但是确定t的取值范围不是容易的事情,一个简单的处理办法是由于考虑的区域为160公里,而飞机的时速为800公里,因此,穿过对角线所用的时间约为0.282.因此上面的约束可以大致的表达为,所以,我们可以得到如下的最优化问题:,本问题的另一个解决的难点在于如何求解上面的问题。一般的方法是使用搜索的办法进行求解,即在6维的空间中搜索角度的组合,满足所有的条件同时
9、是的目标函数最小。部分队使用对问题的转化近似的转变成为一个线性规划问题加以求解,在计算上可以大量的节约时间。具体的分析参见文献。,4、钻井布局问题(1999B节选),勘探部门在某地区找矿,初步勘探时期已零散的在若干位置上钻井,取得了地质资料,进入系统勘探时期后,要在一个区域内按纵横等距的网格点来布置井位,进行“撒网式”全面钻探。由于钻一口井的费用很高,如果新设计的井位与原有井位重合(或相当接近),便可利用旧井的地质资料,不必打这口新井。因此,应该尽量利用,少打新井,以节约钻探费用。比如钻一口新井的费用是500万元,利用旧井资料的费用为10万元,则利用一口旧井就节约费用490万元。,设平面上有n
10、个点Pi ,其坐标为(ai,bi),i=1,2,3,n,表示已有的n个井位。新布置的井位是一个正方形网格的所有结点(所谓“正方形网格”是指每个格子都是正方形的网格;结点是指纵线和横线的交叉点)。假定每个格子的边长(井位的纵横间距)都是1单位(比如100米)。整个网格是可以在平面上任意移动的。若一个已知点Pi与某个网格结点的距离不超过给定误差(=0.05单位),则认为Pi处的旧井资料可以利用,不必在结点Xi处打新井。,为进行辅助决策,勘探部门要求我们研究以下问题: 假定网格的横向和纵向是固定的(比如东西向和南北向),并规定两点间的距离为横向距离(横坐标之差的绝对值)与纵向距离(纵坐标之差的绝对值
11、)的最大值,在平面上平行移动网格N,使可利用的旧井数尽可能大。试提供数值计算方法,并对下面的数值例子用计算机进行计算。,问题的分析与建模 思路一:对坐标作“去整运算” 根据题义,网格的方向是固定的,对于任意一点P,当网格纵横平移整数个单位时,P相对于最近的网格结点的距离是不变的,即当P在网格上纵横平移整数个单位时,P相对于网格结点的距离不变。于是,我们把所有的旧井点都纵横平移整数个单位,使他们都落在同一个网格单元(单位正方形)内。但考虑到函数x的周期性,该正方形的左边界与右边界是粘合的,上边界和下边界是粘合的。将正方形向外扩展一定程度,将粘合的边界摊开,,这里可以摊开成以(a,b)、(a+1+
12、,b+1+)为对角顶点的正方形,然后运用原来平面上的距离。要使尽可能多的网格结点与旧井点的距离不大于,等价于让尽可能多的旧井点落在以结点为中心的、以2为边长的正方形Q内。问题1)转化成移动Q使其盖住尽可能多的旧井点。,设旧井点P原来的坐标为(x,y),则按上述方法得到新坐标为(x,y): 如果单位正方形以(0,0)和(1,1)为对角顶点:x=x x,或者x=x x + 1;y=y y,或者y=y y+1。当旧井点Pi(xi,yi)可利用时记i =1,否则记i =0。设正方形Q的中心坐标为(x , y)于是可得如下最优化问题:,思路二:直接法不妨设ai,bi0(i=1,2,n),即所有井点Pi处
13、在原坐标系Oxy的第一象限。在网格N上取第一象限中离原点O最近的结点为(s,t),其中0s1,0t1。这个结点看作是网格N上一个参照点或新坐标系的原点,它可以在上述单位正方形Q内移动。于是N的任意结点可以表示为(s+p,t+q),其中p,qZ(这里Z表示整数集)。,对问题1)而言,当且仅当-邻域中存在结点,即不等式组有解时,Pi是可利用的。对给定的(s,t),上式有解的充要条件是Pi可利用时记i=1,否则i=0。这样一来,问题1)归结为如下的最优化问题:,这是一个非线性的混合整数规划。,5、确定性和随机性随机的例子1:报童的诀窍,问题,报童售报:a (零售价) b(购进价) c(退回价),售出
14、一份赚 a-b;退回一份赔 b-c,每天购进多少份可使收入最大?,分析,购进太多卖不完退回赔钱,购进太少不够销售赚钱少,应根据需求确定购进量,每天需求量是随机的,优化问题的目标函数应是长期的日平均收入,等于每天收入的期望,建模,设每天购进 n 份,日平均收入为 G(n),调查需求量的随机规律每天需求量为 r 的概率 f(r), r=0,1,2,准备,求 n 使 G(n) 最大,已知售出一份赚 a-b;退回一份赔 b-c,求解,将r视为连续变量,结果解释,取n使,a-b 售出一份赚的钱b-c 退回一份赔的钱,一道工序用自动化车床连续加工某种零件, 由于刀具损坏等原因该工序会出现故障, 其中刀具损
15、坏故障占 95% , 其它故障仅占 5%. 工序出现故障是完全随机的, 假定在生产任一零件时出现故障的机会均相同. 工作人员通过检查零件来确定工序是否出现故障. 现积累有 100 次刀具故障记录, 故障出现时该刀具完成的零件数如附表. 现计划在刀具加工一定件数后定期更换新刀具.已知生产工序的费用参数如下: 故障时产出的零件损失费用f = 200 元/件; 进行检查的费用 t= 10 元/次; 发现故障进行调节使恢复正常的平均费用d = 3000 元/次(包括刀具费) ; 未发现故障时更换一把新刀具的费用k= 1000 元/次. 1) 假定工序故障时产出的零件均为不合格品, 正常时产出的零件均为
16、合格品, 试对该工序设计效益最好的检查间隔(生产多少零件检查一次)和刀具更换策略.,随机的例子2:1999A自动化车床管理,(1)数据的预处理 本题给出的数据是100次的刀具故障记录,因此首先应该处理的问题是得到到家发生故障的概率密度函数f(x)。使用数据统计方法(同学们自己考虑如何进行),可以得到该函数。 (2)决策变量的确定 题目有非常明确的句子:“对该工序设计效益最好的检查间隔(生产多少零件检查一次)和刀具更换策略”。因此可以理解为要规划的有两个变量,一个是检查间隔Tc ,另一个是换刀间隔T。(为简单起见,可以将这两个变量看出连续变量) (3)目标函数的建立 对于随机优化问题,往往是同学
17、们的一个弱点。随机性的引入在大家概率基础不牢固时使问题复杂化。为此,在前面例题的基础上,我们进一步的帮助大家发现建立这类模型的一般办法。这个办法就是先将问题看出确定性问题。,问题分析和建模,也就是说将刀具发生故障发生在x时。这时,x可以分成两种情况:(a)x大于T。(b) x小于T。对于情况(a),也就是在换刀的之前刀具是完好的,所以加工出来的零件都是合格的。产生的费用包括检查费用和正常的换刀费用,为,生产的合格零件的数量为T个,因此生产一个合格零件的平均费用是,对于情况(b),也就是在换刀的之前刀具是已经损坏的,所以加工出来的零件有合格的,也有不合格的。产生的费用包括检查费用和非正常的换刀费
18、用,和生产的不合格零件的损失,为,生产的合格零件的数量为x个,因此生产一个合格零件的平均费用是,检查费,更换刀具费,不合格零件损失,现在考虑随机的因素,结合这两种情况,平均一个零件的损失为:,本题的目的是要求最小化平均损失,也就是,6、单目标和多目标,1998年建模竞赛A题 (投资的收益和风险) 市场上有n种资产(如股票、债券、)Si ( i=1,n) 供投资者选择,某公司有数额为M的一笔相当大的资金可用作一个时期的投资。公司财务分析人员对这n种资产进行了评估,估算出在这一时期内购买Si的平均收益率为ri,并预测出购买Si的风险损失率为qi。考虑到投资越分散,总的风险越小,公司确定,当用这笔资
19、金购买若干种资产时,总体风险可用所投资的Si中最大的一个风险来度量。,购买Si要付交易费,费率为pi,并且当购买额不超过给定值ui时,交易费按购买ui计算(不买当然无须付费)。另外,假定同期银行存款利率是r0, 且既无交易费又无风险。(r0=5%)已知n = 4时的相关数据右表:,问题分析: 对于有价证卷的投资问题,属于经济学中一个经典问题,决策变量是各种证卷的投资额(或者投资比例)。不妨假定可投资的证卷数为n+1种(包括银行存款),即S0,,Sn,而投资比例为x0,xn。而目标也是显然的,一个是收益最大化,另一个是风险最小化。 对收益,因为单位资金的回报率 。 这里使用单只股票的最大风险作为
20、投资的整体风险,则表征风险的目标函数 。 问题的约束条件包括非负性约束,也就是所有的决策变量xi非负,以及 。因此可以得到如下的多目标规划问题:,问题进一步的思考: (1)多目标问题的求解和转化,(2)多目标问题的求解,多目标规划问题一般的通过转化成为单目标问题进行求解,而其中最常用和最简单的方法是线性加权法,通过适当的确定权系数得到问题的解。这个解可能和权系数的不同取值而变化。在本问题中,不同的权系数代表了人们对收益和风险的偏好程度。其他的方法比如逐步宽容法的,比如在控制风险的情况下求收益最大的组合,或者相反。,(3)如何简化问题以便进行计算?,由于交易费函数是一个不连续函数,是的对问题的求
21、解增加了不少的困难,如何对问题进行简化是解决这类问题的一个关键。一个简单的处理办法是由于考虑到资金总量M非常大,所以而ui的值又很小,因此可以认为不会出现购买同时又没有达到ui限额的情况,这样问题就转化成为一个线性规划问题。当然对于一个给定的M,比如1,000,000,出现导致限额的可能性是存在的。这时可以采用限制一些变量取值的方法试着计算问题的最优解。另一种方法是引入0-1变量的方法,问题可以得到彻底解决,只是计算上难度增加,成为一个混合规划问题。解决方法可以参考前面钻井布局问题进行。,7、思考及练习,运输问题的不同类型,包括产销不平衡的例子,可以参考铁矿石的问题(2003)。 运输问题的另一种类型是2000B题,该题有什么特点? 飞行管理问题的线性规划模型的建立,参考相关的论文。 在钻井布局问题中体会整数变量的使用。进一步的思考整数变量在解决离散问题的重要作用。 随机规划问题的建立方法,初步思考这种问题的解法。另一个有趣的例子是1997A题。 多目标问题转化成单目标的方法有哪些?具体怎样实现? 写出证券投资组合问题中的混合规划模型。,谢谢大家!,