第九章 最优化方法
- 格式:doc
- 大小:267.50 KB
- 文档页数:18
最优化方法1. 简介最优化方法是一种通过调整变量值以最小化或最大化某个目标函数来优化系统性能的数学方法。
最优化方法广泛应用于各个领域,包括经济学、工程学、计算机科学等。
本文将介绍最优化方法的基本概念、常用算法以及其在实际问题中的应用。
2. 最优化问题最优化问题可以分为无约束最优化和约束最优化问题。
无约束最优化问题是在没有任何限制条件的情况下,寻找使目标函数值最小或最大的变量值。
约束最优化问题则在一定的约束条件下寻找最优解。
在最优化问题中,目标函数通常是一个多元函数,而变量则是目标函数的输入参数。
最优化的目标可以是最小化或最大化目标函数的值。
常见的优化问题包括线性规划、非线性规划、整数规划等。
3. 常用最优化算法3.1 梯度下降法梯度下降法是最常用的最优化算法之一。
它通过计算目标函数相对于变量的梯度(即偏导数),以负梯度方向更新变量值,逐步接近最优解。
梯度下降法的优点是简单易实现,但可能收敛速度较慢,且容易陷入局部最优解。
3.2 牛顿法牛顿法是一种基于目标函数的二阶导数(即海森矩阵)信息进行更新的最优化算法。
相较于梯度下降法,牛顿法的收敛速度更快,并且对于某些非凸优化问题更具优势。
然而,牛顿法的计算复杂度较高,且可能遇到数值不稳定的问题。
3.3 共轭梯度法共轭梯度法是一种用于解决线性方程组的最优化算法。
它利用共轭方向上的信息以减少最优化问题的迭代次数。
共轭梯度法适用于大规模线性方程组的求解,并且在非线性优化问题中也得到了广泛应用。
3.4 遗传算法遗传算法是一种通过模拟生物进化过程寻找最优解的优化算法。
它通过交叉、变异等操作生成新的解,并通过适应度评估筛选出优秀的解。
遗传算法适用于搜索空间较大、复杂度较高的优化问题。
4. 最优化方法的应用最优化方法在各个领域都有广泛的应用。
在经济学领域,最优化方法可以用于优化生产资源的配置、最小化成本或最大化利润等问题。
它可以帮助决策者制定最优的决策方案,提高效益。
第九章经典最优化方法9.1 最优化的基本概念最优化方法是一门古老而又年青的学科。
这门学科的源头可以追溯到17世纪法国数学家拉格朗日关于一个函数在一组等式约束条件下的极值问题(求解多元函数极值的Lagrange乘数法)。
19世纪柯西引入了最速下降法求解非线性规划问题。
直到20世纪三、四十年代最优化理论的研究才出现了重大进展,1939年前苏联的康托洛维奇提出了解决产品下料和运输问题的线性规划方法;1947年美国的丹奇格提出了求解线性规划的单纯形法,极大地推动了线性规划理论的发展。
非线性规划理论的开创性工作是在1951年由库恩和塔克完成的,他们给出了非线性规划的最优性条件。
随着计算机技术的发展,各种最优化算法应运而生。
比较著名的有DFP和BFGS无约束变尺度法、HP广义乘子法和WHP约束变尺度法。
最优化问题本质是一个求极值问题,几乎所有类型的优化问题都可概括为如下模型:给定一个集合(可行集)和该集合上的一个函数(目标函数),要计算此函数在集合上的极值。
通常,人们按照可行集的性质对优化问题分类:如果可行集中的元素是有限的,则归结为“组合优化”或“网络规划”,如图论中最短路、最小费用最大流等;如果可行集是有限维空间中的一个连续子集,则归结为“线性或非线性规划”;如果可行集中的元素是依赖时间的决策序列,则归结为“动态规划”;如果可行集是无穷维空间中的连续子集,则归结为“最优控制”。
线性规划与非线性规划是最优化方法中最基本、最重要的两类问题。
一般来说,各优化分支有其相应的应用领域。
线性规划、网络规划、动态规划通常用于管理与决策科学;最优控制常用于控制工程;非线性规划更多地用于工程优化设计。
前面提到的算法是最优化的基本方法,它们简单易行,对于性态优良的一般函数,优化效果较好。
但这些经典的方法是以传统微积分为基础的,不可避免地带有某种局限性,主要表现为:①大多数传统优化方法仅能计算目标函数的局部最优点,不能保证找到全局最优解。
第九章经典最优化方法9.1 最优化的基本概念最优化方法是一门古老而又年青的学科。
这门学科的源头可以追溯到17世纪法国数学家拉格朗日关于一个函数在一组等式约束条件下的极值问题(求解多元函数极值的Lagrange乘数法)。
19世纪柯西引入了最速下降法求解非线性规划问题。
直到20世纪三、四十年代最优化理论的研究才出现了重大进展,1939年前苏联的康托洛维奇提出了解决产品下料和运输问题的线性规划方法;1947年美国的丹奇格提出了求解线性规划的单纯形法,极大地推动了线性规划理论的发展。
非线性规划理论的开创性工作是在1951年由库恩和塔克完成的,他们给出了非线性规划的最优性条件。
随着计算机技术的发展,各种最优化算法应运而生。
比较著名的有DFP和BFGS无约束变尺度法、HP广义乘子法和WHP约束变尺度法。
最优化问题本质是一个求极值问题,几乎所有类型的优化问题都可概括为如下模型:给定一个集合(可行集)和该集合上的一个函数(目标函数),要计算此函数在集合上的极值。
通常,人们按照可行集的性质对优化问题分类:如果可行集中的元素是有限的,则归结为“组合优化”或“网络规划”,如图论中最短路、最小费用最大流等;如果可行集是有限维空间中的一个连续子集,则归结为“线性或非线性规划”;如果可行集中的元素是依赖时间的决策序列,则归结为“动态规划”;如果可行集是无穷维空间中的连续子集,则归结为“最优控制”。
线性规划与非线性规划是最优化方法中最基本、最重要的两类问题。
一般来说,各优化分支有其相应的应用领域。
线性规划、网络规划、动态规划通常用于管理与决策科学;最优控制常用于控制工程;非线性规划更多地用于工程优化设计。
前面提到的算法是最优化的基本方法,它们简单易行,对于性态优良的一般函数,优化效果较好。
但这些经典的方法是以传统微积分为基础的,不可避免地带有某种局限性,主要表现为:①大多数传统优化方法仅能计算目标函数的局部最优点,不能保证找到全局最优解。
第九章最优化方法的Matlab实现在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。
最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。
由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。
用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容:1)建立数学模型即用数学语言来描述最优化问题。
模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。
b5E2RGbCAP 2)数学求解数学模型建好以后,选择合理的最优化方法进行求解。
最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。
p1EanqFDPw9.1 概述利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。
具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程<组)的求解,线性、非线性的最小二乘问题。
另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。
DXDiTa9E3d9.1.1 优化工具箱中的函数优化工具箱中的函数包括下面几类:1.最小化函数表9-1 最小化函数表2.方程求解函数表9-2 方程求解函数表3.最小二乘<曲线拟合)函数表9-3 最小二乘函数表4.实用函数表9-4 实用函数表5.大型方法的演示函数表9-5 大型方法的演示函数表6.中型方法的演示函数表9-6 中型方法的演示函数表9.1.3 参数设置利用optimset函数,可以创建和编辑参数结构;利用optimget函数,可以获得options优化参数。
优选法即“最优化理论”及解决方法始于第二次世界大战。
20世纪40年代初期,西方国家出于军事上的需要,提出一些不能用古典的微分法和变分法解决的最优化问题,从而产生了新的数学方法,并已成为应用数学上不可忽视的一个分支。
解决最优化问题的方法分两种:一种是间接最优化(或称解析最优化)方法,另一种是直接最优化(或称试验最优化)方法。
所谓间接最优化方法,就是要求把所研究的对象(如物理或化学过程)用数学方程描述出来,然后再用数学解析方法求出其最优解。
但是在很多情况下,研究对象本身机理不很清楚,无法用标准数学方程描述。
对于这种情形,可以构造一种函数来逼近这些试验数据,然后再从函数求最优解,并通过试验来验证。
然而也有很多实际问题可以不经过中间阶段,而直接通过少量试验,根据试验,结果的比较而迅速求得最优解——这就是“直接最优化方法”。
如爬山法、均分法、来回调试法、平分法、等这些安排科学试验的基本原则,早已应用,只是没有系统整理、提高为理论而已。
自从1953年美国的基弗(Kiefer)提出的分数法和.0618法后,从单因素方法扩展到多因素法、降维法等多种方法,在设计数字滤波器、变压器、微波网络及空间技术中确定最优弹道、空间交汇、拦截时间等方面都有广泛应用。
艾略特在1939年提出的波浪理论已经自觉不自觉地在应用“直接最优化方法”来判断和预测日后的走势。
如“主升浪是初升浪的1.618倍”等,他没有用“间接最优化法”先把初升浪和主升浪的数学方程函数求出来,而是直接求各种可能的结果。
但由于历史条件的限制,即受牛顿绝对时空观的束缚及最优化方法理论还不够完善情况的制约,艾略特只能把时间当常量,单就空间论空间,使得他不得不采用概率理论中的“把所有可能结果组成的集合样本空间”都罗列出来,让应用者自己去取舍。
譬如在经初升浪、主升浪后的收尾阶段——末升浪阶段,只能把末升浪推测为“与初升浪相等、失败或延长浪”。
即把A={与初升浪相等}、B={是初升浪的失败浪}、C={是初升浪的延长浪}三个事件的概率函数P(A)、P(B)、P(C)用语言表示法都罗列了出来了,却没有列出概率函数P(.)的具体计算公式。
最优化方法为了使系统达到最优的目标所提出的各种求解方法称为最优化方法。
在经济管理学上就是在一定人力、物力和财力资源条件下,使经济效果(如产值、利润等)达到最大,并使投入的人力和物力达到以最小的系统科学方法。
常用的优化方法有线性规划法、非线性规划法、动态规划法、极大值法等。
最优化方法是在第二次世界大战前后,在军事领域中对导弹、雷达控制的研究中逐渐发展起来的。
它对促进运筹学、管理科学、控制论和系统工程等新兴学科的发展起到了重要的作用。
最优化方法解决问题一般可以分为以下几个步骤:(1)提出需要进行最优化的问题,开始收集有关资料和数据;(2)建立求解最优化问题的有关数学模型,确定变量,列出目标函数和有关约束条件;(3)分析模型,选择合适的最优化方法;(4)求解方程。
一般通过编制程序在电子计算机上求得最优解;(5)最优解的验证和实施。
通过上述五个相互独立和互相渗透的步骤,最终求得系统的最优解。
我国数学家华罗庚在生产企业中推广最优化方法时采用"优选法"一说,推广优选法的目的是帮助工厂合理安排试验,以较少的试验次数找到合理的配方、下料和工艺条件。
随着系统科学的发展和各个领域的需求,最优化方法不断地应用于经济、自然、军事和社会研究的各个领域。
最优化方法在实践中的应用可以分为最优设计、最优计划、最优管理和最优控制等四个方面。
最优设计:在飞机、造船、机械、建筑设计等工程技术界的最优化方法,并与计算机辅助设计相结合,进行设计参数的优选和优化设计问题的求解。
最优计划:在编制国民经济和部门经济的计划和农业、交通、能源、环境、生态规划中,在编制企业发展规划和年度生产计划,领导人的决策方案设计等领域中应用最优化方法的过程称之为最优计划。
最优管理:是指一般在企业日常生产计划的制订、生产经营的高度和运行中,通过计算机管理住处系统和决策支持系统等辅助工具,运用最优化方法进行经营管理的过程。
最优控制:主要是指在各种控制系统和导弹系统、卫星系统、航天飞机系统、电力系统等高度复杂系统中运用最优化方法的过程。
中提到的最优化方法包括:
1. 模型选择:在训练数据上进行多个不同的机器学习算法测试,以找出最佳的预测性能。
2. 超参数调优:使用交叉验证来对超参数进行自动化调优。
3. 正则化:正则化是一种常用的方法来避免过度拟合问题。
它通过惩罚高度相关特征之
间的大量参数来减少冗余信息并保留必要信息。
4. 集成学习:集成学习是一种将多个弱学习器集成在一起形成强大学习器的方法。
它能
够显著减少单独弱学习器之间差异性带来的风险。
5. 加快特征工程步骤:特征工程是一个耗时耗力、重要而又困难的任务。
因此应该尝试
使用新方法加快特征工程步骤从而减少时间并改善性能。
第九章 最优化方法本章主要介绍线性规划、0-1规划、非线性规划等问题的MATLAB 求解。
9.1 线性规划(Linear Programming ,简写为LP )问题线性规划问题就是求多变量线性函数在线性约束条件下的最优值。
满足约束条件的解称为可行解,所有可行解构成的集合称为可行域,满足目标式的可行解称为最优解。
MATLAB 解决的线性规划问题的标准形式为:min z f x ¢=? ..A x b s t Aeq x beq lb x ubì祝ïïï?íïï#ïïî 其中,,,,,f x b beq lb ub 为列向量,,A Aeq 为矩阵。
其它形式的线性规划问题都可经过适当变换化为此标准形式。
在MATLAB 中求解线性规划问题函数为linprog ,其使用格式为:[x, fval, exitflag, output, lambda] = linprog(f, A, b, Aeq, beq, lb, ub) 输入部分:其中各符号对应线性规划问题标准形式中的向量和矩阵,如果约束条件中有缺少,则其相应位置用空矩阵[]代替。
输出部分:其中x 为最优解,用列向量表示;fval 为最优值;exitflag 为退出标志,若exitflag=1表示函数有最优解,若exitflag=0表示超过设定的迭代最大次数,若exitflag=-2,表示约束区域不可行,若exitflag=-3,表示问题无解,若exitflag=-4,表示执行迭代算法时遇到NaN ,若exitflag=-5,表示原问题和对偶问题均不可行,若exitflag=-7,表示搜索方向太小,不能继续前进;output 表明算法和迭代情况;lambda 表示存储情况。
例1 用linprog 函数求下面的线性规划问题12312312312123min 54620324423230.. 0,00x x x x x x x x x x x s t x x x ---ì-+?ïïïï++?ïïï+?ïïíï£ïïï£ïïïï£ïî 输入如下: >> f = [-5, -4,-6]; A = [1 -1 1; 3 2 4; 3 2 0]; b = [20; 42; 30]; lb = zeros(3,1);[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)注意:由于该问题没有等式约束,所以输入格式中相应的位置用[]代替,变量没有上限约束,所以ub 也用[]代替,但由于其在最后,可以不写。
输出结果如下: Optimization terminated. x = % 最优解 0.0000 15.0000 3.0000 fval = %最优值 -78.0000exitflag = %函数收敛于解 1 output = iterations: 6algorithm: 'large-scale: interior point' cgiterations: 0message: 'Optimization terminated.' lambda =ineqlin: [3x1 double] eqlin: [0x1 double] upper: [3x1 double] lower: [3x1 double]例2 一家家具公司生产桌子和椅子,用于生产的全部劳动力共计450个工时,原料是400个单位的木材。
每张桌子使用15个工时的劳动力,20个单位的木材,售价为80元。
每张椅子使用10个工时,用料5个单位,售价45元。
问为达到最大效益,应如何安排生产?解 设生产桌子x 个,椅子y 个,建立如下模型:max 80452054001510450.. 00x yx y x y s t x y +ì+?ïïïï+?ïíï³ïïï³ïî 输入如下: >> f = [-80,-45]; A = [20, 5; 15, 10]; b = [400, 450]; lb = zeros(2,1);[x, fval, exitflag] = linprog(f,A,b,[],[],lb) 结果如下:Optimization terminated. x = 14.0000 24.0000 fval = -2.2000e+003 exitflag = 1注意:由于linprog 是求目标函数的最小值,如求目标函数f 的最大值,可先求出f -的最小值fval ,则-fval 就是f 的最大值。
本例只输出最优解、最优值和退出标志,可见生产14个桌子,24个椅子,可获得最大利润2200元。
9.2 0-1规划0-1规划是一种特殊形式的整数规划,它的决策变量仅取值0或1.一般用0表示放弃,1表示选取,故0-1规划可以用来处理选址问题、指派问题、装箱问题、项目评价、资金分配、生产计划安排等问题。
在MATALB 中求解0-1规划问题函数为bintprog ,其针对下述0-1规划:min z f x ¢=? .. 0/1,1,2,,i A x b s t Aeq x beq x i nL ì祝ïïï?íïï==ïïî其中,,,f x b beq 为列向量,,A Aeq 为矩阵。
使用格式为:[x, fval, exitflag, output] = bintprog(f, A, b, Aeq, beq)输入部分:其中各符号对应0-1规划问题标准形式中的向量和矩阵,如果约束条件中有缺少,则其相应位置用空矩阵[]代替。
输出部分:其中x 为最优解,用列向量表示;fval 为最优值;exitflag 为退出标志,若exitflag=1表示函数有最优解,若exitflag=-1表示超过设定的迭代最大次数,若exitflag=-2,表示问题不可行,若exitflag=-4,表示搜索节点数超过了设定的搜索节点最大个数,若exitflag=-5,表示搜索时间超过了设定的指令运行的最大秒数,若exitflag=-6,表示LP 求解器在某节点处求解LP 松弛问题时的迭代次数超过了设定的迭代次数;output 包含使用算法、迭代次数、搜索过的节点数、算法执行时间、算法终止原因。
例3 求解下述0-1规划问题。
123451234512345max 22643225.. 2422501(1,2,,5)i z x x x x x x x x x x s t x x x x x x i =++--+-++≤⎧⎪+---≤⎨⎪==⎩L 或 利用bintprog 函数求解如下: >> f=-[1;2;2;-6;-4];A=[3,2,-1,4,2; 2,4, -2,-1,-2]; b=[5;5] ;[x,fval,exit,output]=bintprog(f,A,b) 输出结果:Optimization terminated. x = 1 1 1 0 0 fval = -5 exit = 1 output =iterations: 4 nodes: 1 time: 0.0781algorithm: 'LP-based branch-and-bound' branchStrategy: 'maximum integer infeasibility' nodeSrchStrategy: 'best node search' message: 'Optimization terminated.这表明,当123451,1,1,0,0x x x x x =====时,目标函数取最大值5。
例4 资金分配问题,某企业在今后3年内有5个工程考虑开工,每项工程的期望收入和年度费用如表所示。
假定每一项已经批准的工程要在整3年内完成。
企业应如何选择工程,使企业总收入最大?解 设决策变量为12345,,,,x x x x x :其中01i x =或,0i x =表示放弃第i 项工程,1i x =表示选择第i 项工程。
该问题的数学模型为:12345123451234512345max 20402015305437825794625.. 8102102510(i=1,2,3,4,5)=++++++++≤⎧⎪++++≤⎪⎨++++≤⎪⎪=⎩或i z x x x x x x x x x x x x x x x s t x x x x x x利用bintprog 函数求解如下: f=-[20;40;20;15;30];A=[5,4,3,7,8;1,7,9,4,6;8,10,2,1,10]; b=[25;25;25];[x,fv,exit]=bintprog(f,A,b) 输出结果如下: Optimization terminated. x = 1 1 1 1 0 fv = -95 exit = 1上述结果表明,该企业选择第1,第2,第3,第4项工程,可以获得最大利润95千元。
指派问题:设有n 项工作分配给n 个人去做,每人做一项,由于个人的工作效率不同,因而完成同一工作所需时间也不同,设人员i 完成工作j 所需时间为ij C (称为效率矩阵),问如何分配工作,使得完成所有工作所用的总时间最少?这类问题称为指派问题(Assignment Problem ),也称最优匹配问题,它是一类典型的0-1规划问题。
例5 有4个工人被分派做4项工作,每项工作只能一人做,每人只能做一项工作。
现设每个工人做每项工作的耗时如表所示,求总耗时最少的分配方案。
表1时间表 时间单位:小时解 设决策变量为(,1,2,3,4)ij x i j =,只取0或1。
1ij x =表示工人i 完成工作j ;0ij x =表示工人i 不做工作j 。
于是,上述问题的数学模型如下:11121314212223243132333441424344min 15182124192322182617161919212317z x x x x x x x x x x x x x x x x =+++++++++++++++111,1,2,3,4.. 1,1,2,3,4nij j nij i x i s t x j ==⎧==⎪⎪⎨⎪==⎪⎩∑∑ 下面给出Matlab 计算程序。