1、 什么是多目标规划问题 在前面所述的最优化问题,无论是线性规划、整数规划还是非线性规划,其目标函数都只有一个。但在实际问题中,衡量一个设计方案的好坏往往不止一个标准,常常要考虑多个目标。例如研究生产过程时,人们既要提高生产效率,同时还要考虑产品质量,又要考虑成本以降低生产费用,可能还希望生产过程中的环保问题,即废渣、废水、废气造成的污染小。在设计导弹的过程中,既要射程远,又要燃料省,还要重量轻且打击精度高。在进行投资决策时,既希望回报高的同时又希望降低投资风险,如此等等。这就向我们提出了一个多指标最优化问题。我们把在这样的背景下建立起来的最优化称之为多目标规划问题。多目标规划问题的发展 多目标
2、规划法(Goal Programming,简称GP)也是最优化理论和方法中的一个重要分支,它是在线性规划的基础上,为解决多目标决策问题而发展起来的一种数学方法。其概念和数学模型是由A.Charnes和W.W.Cooper在1961年提出的,经过Ijiri,Sang.M.Lee等人的改进,并逐步发展和成熟,它在经济管理与规划、人力资源管理、政府管理、大型工程的最优化等重要问题上都有广泛的应用。例1 木梁设计问题 例2 工厂采购问题例3 生产计划问题 目标规范化 直观理解 绝对最优解 有效解与弱有效解 解集之间的关系有效点和弱有效点。约束法 评价函数法 功效系数法 原理 由于多目标规划中的求解涉及
3、到的方法非常多,故在MATLAB中可以利用不同的函数进行求解,例如在评价函数法中我们所得最后的评价函数为一线性函数,且约束条件也为线性函数,则我们可以利用MATLAB优化工具箱中提供的linprog函数进行求解,如果我们得到的评价函数为非线性函数,则可以利用MATLAB优化工具箱中提供的fmincon函数进行求解,如果我们采用最大最小法进行求解,则可以利用MATLAB优化工具箱中提供的fminimax函数进行求解。下面我们就结合前面各小节中所分析的几种方法,讲解一下典型多目标规划问题的MATLAB求解方法。线性目标规划也是解决多目标数学规划的一种方法,它是在线性规划基础上发展起来的这种方法的基
4、本思想是:对每一个目标函数,预先给定一个期望值,在现有的约束条件下,这组期望值也许能够达到,也许达不到。决策者的任务是求出尽可能接近这组预定期望值的解。为了讨论目标规划的概念,必需对线性规划比较熟悉,故先复习一下线性规划。下面看一个例子 线性规划的不足之处 上述使用的线性规划方法虽然是最优化理论与方法中发展得最完善、应用面最广的方法,但存在着一些不足,例如线性规划难以妥善处理多目标问题。线性规划在处理多目标问题时通常采用给各个目标赋予不同权重的办法,但如何将决策者定性的判断转化为定量的权重则是一个十分困难的问题,即便是可以求出各个目标的权重,但当各个目标的量纲不同时(例如不同的目标会分别用金额
5、、人数、时间等来表示),也难以用赋予权重的办法将它们归并到一个目标函数中。其次是线性规划在求解的过程中缺乏必要的灵活性。当线性规划中的某个约束无法满足时,线性规划无解,例如在例子中,如果将产品甲的合同约束改为40吨,产品乙的合同约束改为15吨,则问题无解。然而,线性目标规划的约束条件却有较大的灵活性。这是因为可以在线性目标规划的每个约束条件中引入一对正负偏差变量,通过偏差变量可以表达条件是否可以被满足。是过紧还是过松,差多少或多剩余多少。线性目标规划的优势 首先,在每个约束条件中引入正、负偏差变量,使硬约束变成软约束,大大增加了求得可行解的机会 再者,将距各个目标值的偏差总和最小作为目标函数,
6、便于处理多目标问题。在上述目标函数设定的基础上,线性目标规划用划分优先级的方法来处理多个目标的相对重要性、能更好地适应决策者的判断 线性目标规划通过变量定界的方法来解决多解问题,在线性目标规划中设计变量的数目往往大大超过目标的数目,也常大于约束条件的数目,这样在求解时就容易产生多解问题。线性目标规划可要求决策者对偏差变量定界,即定出允许其变动的范围,从而可以通过灵敏度分析来解决多解问题。多目标决策就是要在这些目标中建立优先次序,分清主次轻重,使得只有在较高级目标被满足或不能再改进之后,才考虑较低级目标。当然,如果决策者能够决定这些目标的优先次序,而且所有的目标和约束都是线性的,这样的多目标决策
7、就能用目标规划解决 为了说明线性目标规划的上述特点,同时让读者对目标规划有一个直观的认识,我们可将上例中的问题修改为另一种形式 线性目标规划的序列法 线性目标规划的多阶段法 线性目标规划的单纯形法 线性目标规划序列(序子)算法的基本思想是依达成函数中各目标的优先级别,顺序将目标规划模型分解为一系列的单一的线性规划模型,用传统的单纯形方法逐一完成其求解过程。在求解过程中进基变量、出基变量及枢点元素的选择原则与线性规划的单纯形法相同,不同的是要以不影响较高级目标的达成值为前提选择较低级目标的达成值,如此反复迭代,直至进行到最低级目标的达成函数达最优为止。具体计算步骤 输入参数和输出参数 输出参数中包含了attainfactor、exitflag、lambda和output 控制参数设置 用户可以同optimset来设置fgoalattain函数在求解多目标规划问题时使用的优化控制参数,其主要参数的设置方法如表所示 命令详解 (1)多目标问题的建模方法,这是本章的重点;(2)多目标规划问题中解集和象集的概念,这是在单目标规划问题中所没有的;(3)处理多目标规划问题的约束法、评价函数法和功效系数法的原理及其MATLAB实现;(4)线性目标规划的建模方法;(5)多目标规划的MATLAB的求解函数fgoalattain的使用方法。