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

Posted zlshy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法---分支限定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

以上是关于算法---分支限定0/1背包--蚁群算法的主要内容,如果未能解决你的问题,请参考以下文章

蚁群算法maltab代码及参数讨论,tsp问题0-1背包问题代码

蚁群算法maltab代码及参数讨论,tsp问题0-1背包问题代码

背包问题基于matlab带权重的贪心萤火虫算法求解0-1背包问题含Matlab源码 045期

背包问题基于matlab带权重的贪心萤火虫算法求解0-1背包问题含Matlab源码 045期

算法蚁群算法和蚁群系统的区别

matlab 蚁群算法