算法---分支限定0/1背包--蚁群算法

用蚁群算法解决01背包问题。

我本以为就是完全的蛮力法,但百度后觉得应该是这个

(4)分支限界-优先队列(STL)

// #  分支限界优先队列法

//  队列中的节点类型

struct NodeType

{//  分支限界节点

int no;     //  节点编号

int i;     //  当前节点在搜索空间的层次

int w;     //  当前节点的总重量

int v;     //  当前节点的总价值

int x[MAXN];           //  当前节点包含的解向量

double ub;    // 上界

bool operator<(const NodeType& node) const

{//  优先队列按此方式排序

return ub < node.ub;         //  ub越大越优先出队

}

};

/*  主干

*  ->初始化根节点

*  ->计算根节点上界及进队

*  ->循环遍历队列,条件为非空:出一个节点,

计算左孩子节点剪枝条件,满足的左孩子计算上界及进队;

计算右孩子节点上界,符合上界条件的右孩子进队;

(根据容量剪去左孩子,根据上界条件剪去右孩子)

*

*/

void bfs();

//  进队----不是叶子节点就直接进队,是叶子节点则判断是否更优解,是的话则更新最优解

void EnQueue(NodeType e,priority_queue<NodeType> &qu);

//  计算边界 就是根据剩余容量的大小,计算剩下全部物品装入的价值和装入部分物品的价值

//  (部分物品按照单位容量内价值高低的顺序装入---这有点贪心的思想了)

void bound(NodeType &e);

// !#  分支限界优先队列法

版权声明:本文为CSDN博主「D丶酒舞」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010323330/article/details/80302227

原文地址:https://www.cnblogs.com/zlshy/p/11991521.html

时间: 2024-11-03 13:35:50

算法---分支限定0/1背包--蚁群算法的相关文章

蚁群算法和简要matlab来源

1 蚁群算法原理 从1991由意大利学者 M. Dorigo,V. Maniezzo 和 A. Colorni 通过模拟蚁群觅食行为提出了一种基于群体的模拟进化算法--蚁群优化.极大关注,蚁群算法的特点: ① 其原理是一种正反馈机制或称增强型学习系统; 它通过[最优路径上蚂蚁数量的添加→信息素强度添加→后来蚂蚁选择概率增大→最优路径上蚂蚁数量更大添加]达到终于收敛于最优路径上L ② 它是一种通用型随机优化方法, 它吸收了蚂蚁的行为特(内在搜索机制) , 它是使用人工蚂蚁仿真(也称蚂蚁系统) 来求

蚁群算法求解旅行商问题(附c和matlab源代码)

前几天写了个模拟退火算法的程序,然后又陆陆续续看了很多群智能算法,发现很多旅行商问题都采用蚁群算法来求解,于是开始写蚁群算法的模板.网上关于蚁群算法的理论很多就不再这里赘述了,下面直接上代码和进行简单的比较. c代码: 1 #ifndef _CITY_H 2 #define _CITY_H 3 struct CITY 4 { 5 int id; 6 double x, y; 7 }; 8 #endif // !_CITY_H CITY.h 1 #ifndef _OPTION_H 2 #defin

基于自适应蚁群算法的无人飞行器航迹规划

为求解无人飞行器航迹规划问题,提出自适应蚁群算法,区别于标准蚁群算法的全部搜索模式,该算法采用局部搜索模式.首先根据起始节点与目标节点的相对位置 关系选择相应的搜索模式,然后计算各个待选节点的转移概率,最后按照轮盘赌规则选择下一个节点.仿真结果表明,自适应蚁群算法具有搜寻节点数少.速度快等 优点,在降低了航迹代价的同时,减小了计算时间.此外,自适应蚁群算法可以避免奇异航迹段的出现,从而保证所获的航迹实际可飞,表明所提算法整体性能明显 较标准蚁群算法优异. 此资料( 基于自适应蚁群算法的无人飞行器

蚁群算法求解迷宫最优路径问题

本段程序的基本思想是利用蚁群算法中的蚁周模型,来对全局的迷宫图进行信息素的跟新 和为每一只蚂蚁选择下一个方格. 一共会进行RcMax = 2000轮模拟(理论上模拟的次数越多结果 会越接近真实值),而在每一轮中会排除 M = 10只蚂蚁进行探路.同时在算法的回溯思想上采用的 是栈的数据结构来实现的.当栈最终为空时则表示无解.但同时这段程序的一缺点就是:由于我没在 算法中对每一轮的每只探路蚂蚁采用多线程的模式,所以整体的运行效率还不是很高.如读者有好的 思想或建议,请留言. #include<io

基本蚁群算法

//=====================================================================//基本蚁群算法源代码//使用的城市数据是eil51.tsp//=====================================================================// AO.cpp : 定义控制台应用程序的入口点.#pragma once#include "stdafx.h"#include <ios

蚁群算法解决TSP问题

一.论述 1.算法来源 蚁群算法的基本原理来源于自然界蚂蚁觅食的最短路径原理,根据昆虫学家的观察,发现自然界的蚂蚁虽然视觉不发达,但它可以在没有任何提示的情况下找到从食物源到巢穴的最短路径,并且能在环境发生变化(如原有路径上有了障碍物)后,自适应地搜索新的最佳路径. 2.单个蚂蚁寻找路径 正反馈: 单个的蚂蚁为了避免自己迷路,它在爬行时,同时也会释放一种特殊的分泌物--信息素(Pheromone),而且它也能觉察到一定范围内的其它蚂蚁所分泌的信息素,并由此影响它自己的行为.当一条路上的信息素越来

蚁群算法求解TSP问题

蚁群算法的第一个算法就是蚂蚁系统,而蚂蚁系统有三种基本模型分别是 蚁周模型.蚁密模型.蚁量模型.三种模型的实现大致相同,主要区别是在信息素 的更新方式上.在用蚂蚁系统解决T SP问题时,蚁量模型和蚁密模型是蚂蚁在构建 一条合法路径的过程中进行信息素的更新的,当蚂蚁走过一条边之后,就对该边进 行信息素的更新,即为局部更新方式.而蚁周模型是在所有蚂蚁都构建了一条合 法路径之后才对各边进行信息素更新的,也即全局更新方式. 并且这三种模型中蚂蚁在自己所走过的路线上释放的信息素的量也是有所 不同的,在蚁密

ACS蚁群算法求解对称TSP旅行商问题的JavaScript实现

本来以为在了解蚁群算法的基础上实现这道奇怪的算法题并不难,结果实际上大相径庭啊.做了近三天时间,才改成现在这能勉强拿的出手的模样.由于公式都是图片,暂且以截图代替那部分内容吧,mark一记. 蚁群算法解TSP问题的javascript实现 目录(又是神奇的手动目录..) 1 蚁群算法 (1)        蚁群AS算法简介 (2)        蚁群AS算法过程 (3)        蚁群AS算法TSP问题应用 (4)        蚁群算法应用于TSP步骤 2 蚁群系统(Ant Colony

蚁群算法(AntColonyOptimization,ACO)与TSP问题

对于小规模数据的TSP问题,我们可以使用动态规划快速的求解. 对于大规模数据的TSP问题,可以使用蚁群算法,模拟退火等近似算法进行求解. 蚁群算法是一种用来在图中寻找优化路径的机率型算法,最早Marco Dorigo提出. 它的灵感来源于蚁群寻找食物的过程,因为往往一只蚂蚁并没有太多“智能”的表现,而蚁群往往有“智能”的动作,比如大部分都趋向于食物 这是因为它们在移动的路径上会留下“信息素”,它们会更大概率沿着信息素更浓的路径行走,而路径越短,信息素就会越浓. 在解决TSP问题时,蚁群算法的流程