热门标签 | 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。

邻域概念的重要性:



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








推荐阅读
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文档旨在帮助开发者回顾游戏开发中的人工智能技术,涵盖移动算法、群聚行为、路径规划、脚本AI、有限状态机、模糊逻辑、规则式AI、概率论与贝叶斯技术、神经网络及遗传算法等内容。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 智能车间调度研究进展
    本文综述了基于强化学习的智能车间调度策略,探讨了车间调度问题在资源有限条件下的优化方法。通过数学规划、智能算法和强化学习等手段,解决了作业车间、流水车间和加工车间中的静态与动态调度挑战。重点讨论了不同场景下的求解方法及其应用前景。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 本文详细介绍了如何在BackTrack 5中配置和启动SSH服务,确保其正常运行,并通过Windows系统成功连接。涵盖了必要的密钥生成步骤及常见问题解决方法。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
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社区 版权所有