热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

概论组合最优化问题、计算复杂性和启发式算法概念(现代优化计算方法)

1.组合最优化问题定义:是通过数学方法的研究去寻找离散事件的最优编排、分组、次序或筛选等。描述:最优化问题的数学模型的一般描述是,x为决策

1.组合最优化问题


定义:



是通过数学方法的研究去寻找离散事件的最优编排、分组、次序或筛选等。

描述:

最优化问题的数学模型的一般描述是

x为决策变量,f ( x )为决策函数,R为可行解,R中的任何一个元素都是问题的一个可行解,满足f ( x* ) = min { f ( x ) | x∈R} 的可行解 x* 称为该问题的最优解,函数值f ( x* )称为问题的最优值。组合最优化问题特点在于它的可行域R是一个有限个点组成的集合,一般情况下其可行域R可表示为{ x | x∈D , g ( x ) >= 0 },说人话就是,在最优化问题的可行域上加了一个约束条件g ( x ) >= 0。它的一般形式是


一个组合最优化问题可以用三参数表示(D,R,f),D是x的定义域,R={ x | x∈D , g ( x ) >= 0 }是可行域,f表示目标参数

典型例子:



a.0-1背包问题(回溯,分支界限解空间子集树,时间复杂度下界2^n)



共i个物品,各物品价值为ci,重量为ai,求在背包容积b的大小限制下可装入的最大价值。其数学模型表示为:




b.旅行售货员问题(回溯,分支界限解空间排序树,时间复杂度下界n!)



城市i与城市j之间距离为dij,现要经过每一个城市,求最短距离。其数学模型表示为:


dij表示城市i,j之间的距离,约束条件为1)式三,恰好从城市i走出来1次,2)式四表示,恰好走入城市j1次,3)| S |表示集合S的元素个数,式五用来限制回路产生



猜测:



组合最优化问题属于NPC问题,故其解决方案与NPC问题解决方案相同


2.启发式算法


定义:



一个问题的最优算法求得该问题每一个实例的最优解,启发式算法是相对于最优算法提出的。它是一个基于直观或经验构造的算法,在可接受的代价内,给出待解决的最优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度不一定是事先可以估计的。

例子:贪心解0-1背包问题,对于有些实例来说,贪心给出的可行解就是该实例的最优解,但对于另外一些实例来说,贪心给出的可行解只是一个近似解,甚至这个近似解和最优解的偏离程度很大。

分类:



a.简单直观的算法



1)一步算法



算法特点:不在两个可行解之间比较,在未终止的迭代过程中,得到的中间解有可能不是一个可行解

例子:贪心解0-1背包,每一次迭代选一物品装包直到无法再装,该算法没有在两个可行解之间选择比较,算法结束时得到一解

2)改进算法



算法特点:迭代过程是从一个可行解到另一个可行解的交换

例子:旅行售货员问题

b.数学规划算法



主要包括分支界定启发式、割平面启发式、线性规划松弛再对解可行化、拉格朗日再对解可行化



c.现代优化算法



主要包括禁忌搜索算法、模拟退火算法、遗传算法、蚁群优化、人工神经网络算法等。他们的共性是基于客观世界中的一些自然现象,通过与组合最优化求解类比,找出它们的共性,建立相应的算法,这些算法的目标是希望求解NP难问题的全局最优解

d.其他算法



限制解空间、分解法、混合算法


3.NP,NP完全和NP难


参见已总结博文:http://blog.csdn.net/chinajane163/article/details/49074173


4.邻域


定义:




通俗的说就是:通过某种手段从可行域中取出一部分可行解来,所形成的集合

例子:

TSP问题解的一种表示方法为D = { x = (i1 , i2 , … , in ) |  i1 , i2 , … , in是1,2,…,n的排列},定义它的邻域映射为2-opt,即x中的两个元素进行对换,N(x)中共包含x的Cn2=n(n-1)/2(随机选两个互换位置)个邻居和x本身。
例如:x=(1,2,3,4),则C42=6,N(x)={(1,2,3,4), (2,1,3,4), (3,2,1,4), (4,2,3,1), (1,3,2,4), (1,4,3,2), (1,2,4,3)}

TSP问题解的邻域映射可由2-opt,推广到k-opt。

邻域概念的重要性:



邻域的构造依赖于决策变量的表示,邻域的结构在现代优化算法中起重要作用








推荐阅读
author-avatar
虚实人生轶事
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有