算法基础
娃娃救葫芦爷
学习编程ing
展开
-
TSP-贪心启发式算法求解
1、贪心算法(1)概念贪心算法(贪婪算法),是求解最优化问题常见的简单、迅速的算法,它只是做出在当前看来最好的选择,而不可考虑整体(2)思路第一步:描述问题和建立数学模型第二步:把原问题分解成若干个子问题第三步:对每个子问题进行求解,得到子问题的局部最优解第四步:把子问题的局部最优解合并成原问题的解(3)缺点求的的解可能与原问题的最优解相差较大2、贪心算法求解TSP本文用的算...原创 2019-08-20 16:15:33 · 3276 阅读 · 0 评论 -
分支定界算法求解TSP
其实精确算法也好,启发式算法也好,都是独立的算法,可以不依赖求解器进行代码实现的,只要过程符合算法框架即可。只不过平常看到的大部分是精确算法在各种整数规划模型上的应用,为此难免脱离不了cplex等求解器。下面我们用分支定界算法求解TSP问题的代码实现,完全脱离求解器。代码框架如下Timer类:计时用package tspsolver;public class Timer{ pri...原创 2019-09-05 10:12:10 · 2084 阅读 · 1 评论 -
分支定界算法
1、概念:分支定界算法(Branch and bound,简称为 BB、B&B, or BnB)始终围绕着一颗搜索树进行的,我们将原问题看作搜索树的根节点,从这里出发,分支的含义就是将大的问题分割成小的问题。大问题可以看成是搜索树的父节点,那么从大问题分割出来的小问题就是父节点的子节点了。分支的过程就是不断给树增加子节点的过程。而定界就是在分支的过程中检查子问题的上下界,如果子问题不能产...原创 2019-09-05 09:43:12 · 35903 阅读 · 7 评论 -
动态规划算法-求解01背包问题
1.问题描述问题描述参鉴https://blog.csdn.net/liufeng_king/article/details/86831362.求解package com.chb.DP;public class Pack01 { int[]value;//物品价值 int[]weight;//物品重量 int c;//背包容量 int[][]m; int[]x;//放入为1,不...原创 2019-09-04 18:14:07 · 349 阅读 · 0 评论 -
动态规划算法-求解流水作业调度问题
1、问题介绍问题介绍参鉴https://blog.csdn.net/liufeng_king/article/details/86783162、求解package com.chb.DP;import java.util.Arrays;public class Johnson { int[]a; int[]b; int[]c; public Johnson(int[] a, i...原创 2019-09-04 17:43:04 · 1346 阅读 · 0 评论 -
动态规划算法-求解电路布线问题
1、动态规划算法动态规划算法(Dynamic Programming,简称DP)通常用于求解具有某种最优性质的问题,其基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后由这些子问题的解再得到原问题的解。动态规划是精确求解问题的算法,当问题规模较大时,所需要的时间和内存非常巨大2、电路布线问题1)问题描述2)最优子结构性质记N(i,j) = {t|(t, π(t)) ∈ Ne...原创 2019-09-04 17:06:01 · 3088 阅读 · 0 评论 -
变邻域搜索算法(Variable Neighborhood Search)
定义:变邻域搜索算法(VNS)就是一种改进型的局部搜索算法。它利用不同的动作构成的邻域结构进行交替搜索,在集中性和疏散性之间达到很好的平衡。其思想可以概括为“变则通”。变邻域搜索算法依赖于以下事实:1)一个邻域结构的局部最优解不一定是另一个邻域结构的局部最优解。2)全局最优解是所有可能邻域的局部最优解。变邻域搜索算法主要由以下两个部分组成:VARIABLE NEIGHBORHOOD D...原创 2019-09-02 10:58:32 · 7789 阅读 · 0 评论 -
迭代局部搜索算法(Iterated local search)
1、局部搜索算法定义:局部搜索算法是从爬山法改进而来的。简单来说,局部搜索算法是一种简单的贪心搜索算法,该算法每次从当前解的邻域解空间中选择一个最好邻居作为下次迭代的当前解,直到达到一个局部最优解(local optimal solution)。思想:局部搜索会先从一个初始解开始,通过邻域动作。产生初始解的邻居解,然后根据某种策略选择邻居解。一直重复以上过程,直到达到终止条件。不同局部搜索算...原创 2019-09-02 10:40:39 · 1969 阅读 · 0 评论 -
回溯算法求解N皇后问题
1、回溯算法(1)定义回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。(2)基本思想从一条路往前走,能进则进,不能进则退回来,换一条路再试。在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根节点出发深度探索解空间树。(3)步...原创 2019-09-02 10:00:24 · 579 阅读 · 0 评论 -
TSP-遗传算法求解
1、遗传算法(1)概念遗传算法(Genetic Algorithm,简称GA)起源于对生物系统所进行的计算机模拟研究,是一种随机全局寻优化方法,它模拟了自然选择和遗传中发生的复制、交叉(crossover)和变异(mutation)等现象,从任一初始种群(Population)出发,通过随机选择、交叉和变异操作,产生一群更适合环境的个体,使群体进化到搜索空间中越来越好的区域,这样一代一代不断繁...原创 2019-08-22 15:47:40 · 1348 阅读 · 0 评论 -
TSP-粒子群算法求解
1、粒子群算法(1)起源该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。(2)概念粒子群算法,也称粒子群优化算法或鸟群觅食算法(Particle Swarm Optimization),缩写为 PSO,是一种全局优化算法。鸟群在整个搜寻的过程中,通过相互传递各自的信息,让其他的鸟知道自己的位置,通过这样的协作,来判断自己找到的是不是最优解,同时也将最优解的信息...原创 2019-08-22 09:42:52 · 3485 阅读 · 2 评论 -
TSP-蚁群算法求解
1、蚁群算法(1)概念蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法,本质上是进化算法中的一种启发式全局优化算法(2)原理假如蚁群中所有蚂蚁的数量为m,所有城市之间的信息素用矩阵pheromone表示,最短路径为bestLength,最佳路径为bestTour。每只蚂蚁都有自己的内存,内存中用一个**禁忌表(Ta...原创 2019-08-21 11:06:17 · 714 阅读 · 0 评论 -
TSP-模拟退火算法求解
1、模拟退火算法(1)概念是局部搜索算法的拓展。它与局部搜索算法的不同之处在于:它以一定的概率选择邻域中目标函数值差的状态。(2)思路(3)伪代码(4)图解模拟退火算法在搜索到局部最优解B后,会以一定的概率接受向右的移动。也许经过几次这样的不是局部最优的移动后会到达BC之间的峰点D,这样一来便跳出了局部最优解B,继续往右移动就有可能获得全局最优解C2、求解TSP同样是求解at...原创 2019-08-20 22:52:46 · 767 阅读 · 0 评论 -
TSP-禁忌搜索算法求解
1、禁忌搜索算法(1)概念禁忌搜索(Tabu Search或Taboo Search,简称TS)是对局部领域搜索的一种扩展,是一种全局寻优算法,其特点是采用禁忌技术,即用一个禁忌表记录下已经到达过的局部最优点,在下一次搜索中,利用禁忌表中的信息不再或有选择地搜索这些点,以此来跳出局部最优点。该算法可以克服爬山算法全局搜索能力不强的弱点。(2)思路(3)相关术语评价函数:评价函数是用来评...原创 2019-08-20 19:23:09 · 8649 阅读 · 4 评论 -
TSP-爬山算法求解
1、爬山算法(1)概念:一种简单的贪心搜索算法,也可以被称为局部搜索算法(local search algorithm)一种局部择优的方法,是对深度优先搜索的一种改进,它利用反馈信息帮助生成解的决策。 该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解(2)思路:(3)缺点:陷入局部最优(4)图解假设A是当前解,爬山算法往前继续搜索,当搜索到B这个局部...原创 2019-08-20 17:14:06 · 1992 阅读 · 0 评论