在matlab中实现优先级队列,用分枝定界法求解优化问题

在matlab中实现优先级队列,用分枝定界法求解优化问题,matlab,priority-queue,Matlab,Priority Queue,我试图在MATLAB中编写优先级队列,我知道有用于优先级队列的SIMULINK工具箱,但我试图在MATLAB中编写它。我有一个伪代码,它使用优先级队列实现了一个名为“带分支和绑定的最佳优先搜索”的方法。分枝定界算法设计策略是一种状态空间树,用于解决优化问题。 我已经阅读了Richard Neapolitan和Kumarss Naimipour的第四版《算法的基础》一书的第5章:分支和装订,这本书是关于设计算法、算法复杂性分析和计算复杂性(问题分析)的,非常有趣,我遇到了以下伪代码: 我不

我试图在MATLAB中编写优先级队列,我知道有用于优先级队列的SIMULINK工具箱,但我试图在MATLAB中编写它。我有一个伪代码,它使用优先级队列实现了一个名为“带分支和绑定的最佳优先搜索”的方法。分枝定界算法设计策略是一种状态空间树,用于解决优化问题。 我已经阅读了Richard Neapolitan和Kumarss Naimipour的第四版《算法的基础》一书的第5章:分支和装订,这本书是关于设计算法、算法复杂性分析和计算复杂性(问题分析)的,非常有趣,我遇到了以下伪代码:





我不知道如何在matlab中进行编码,分支定界是一种有趣的通用算法,用于寻找各种优化问题的最优解,特别是在离散优化和组合优化中,而不是使用启发式来寻找最优解,因为分支定界减少了计算时间,更快地找到最优解

编辑:
在这里发布问题之前,我已经检查了所有地方是否已经实施了解决方案。我来这里是想了解如何开始实现这段代码,我已经在你的帖子中包含了这段代码,这样人们就可以更好地了解你对他们的期望。然而,“开始实现的想法”仍然没有“如何在matlab中编写代码”更具体

不过,我仍会尝试回答:

  • 制定代码的结构,编写基本循环,并用您想要做的事情的注释填充它们
  • 选择(最简单的或第一个)这些注释中的一个,看看是否可以在几行中实现它,您可以通过为该代码段生成一些虚拟输入来测试它
  • 继续重复步骤2,直到所有注释都具有所需的代码

  • 如果你陷入其中一个障碍,并且已经搜索了某个特定问题,但没有找到答案。那么,这不是一个好问题。

    我看不出有什么问题,除非你要求其他人为你实现一个算法。对于这个网站来说,这不是一个合适的问题。请自己尝试一下,如果你被困在某个地方,你可以问一些具体的问题。您可能还想通过谷歌查看解决方案是否已经实施。@Dennis Jaheruddin在来这里之前,我已经检查了所有地方是否已经实施了解决方案,但我找不到任何类似于我试图做的事情,来告诉我如何开始。我来这里是想知道如何开始,我不是要求任何人为我实现一个算法,如果这不是我最后一次尝试,我也不会来这里,因为时间紧迫,无论如何,感谢你花时间回答我的问题:)我已经有了我的代码结构,我需要弄清楚如何在matlab中生成优先级队列,我遇到过用C实现优先级队列然后使用matlab的代码,但我做不到,抱歉,这是最后一年的实习项目,所以我压力很大,我无意让人觉得我想要有人帮我实现。
    Void BeFS( state_space_tree T, number& best)
    
    {
    
    priority _queue-of_node PQ; 
    
    node(u,v); 
    
    initialize (PQ)   % initialize PQ to be empty
    
    u=root of T;
    
    best=value(v);
    
    insert(PQ,v)      insert(PQ,v) is a procedure that adds v to the priority queue PQ 
    
      while(!empty(PQ){   % remove node with best bound
    
         remove(PQ,v); 
    
    remove(PQ,v) is a procedure that removes the node with the best bound and it assigns    its value to v    
    
       if(bound(v) is better than best) % check if node is still promising
    
         for (each child of u of v){ 
    
         if (value (u) is better than best)
    
        (best=value(u);
    
         if (bound(u) is better than best)
    
        insert(PQ,u)
           }
          }
         }