2014-05-20 38 views
-1

我想在MATLAB中編寫一個優先級隊列,我知道有SIMULINK工具箱的優先級隊列,但我試圖編寫它在MATLAB中。我有一個僞代碼,它使用優先隊列來調用名爲BEST First Search with Branch and Bound的方法。分支定界算法設計策略是一種狀態空間樹,用於解決優化問題。 simple explanation of what is branch and bound 我已閱讀第5章:Branch and Bound,這本書是由Richard Neapolitan和Kumarss Naimipour撰寫的第4版,其內容是關於設計算法,算法複雜性分析和計算複雜性(分析在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) 
     } 
     } 
    } 
:問題),非常有趣的書,我碰到這個僞代碼來

我不知道如何將它在MATLAB代碼,並且分支限界是尋找各種優化問題的最佳解決方案,尤其是在離散和組合優化,而不是使用啓發式找到一個有趣的通用算法因爲分支和界限減少了計算時間並且更快地找到最佳解決方案。

編輯:

我已簽到處是否已經解決方案已經實現,在這裏張貼問題之前。我來這裏瞭解如何開始實施此代碼的想法

+0

我在這裏沒有看到問題,除非您要求其他人爲您實施算法。這對本網站來說不是一個合適的問題。請自己嘗試,如果你遇到困難,可以提出具體問題。您可能還想要谷歌來檢查解決方案是否已經實施。 –

+0

@ Dennis Jaheruddin在來到這裏之前,我已經檢查過每個地方是否已經實施了一個解決方案,但是我找不到與我正在嘗試做的事情類似的事情,以便給我一個關於如何開始的想法。我來這裏是爲了瞭解我如何開始,我沒有要求任何人爲我實施算法,如果不是我最後一次嘗試,我不會來到這裏,因爲我時間緊迫,無論如何感謝您採取行動我的問題的時間:) – Lylia

回答

0

我已經在您的文章中包含了這一點,以便人們可以更好地瞭解您對他們的期望。然而,「開始實施的想法」仍然沒有比'如何在matlab中編寫代碼'更具體。

不過,我還是會盡量回答:

  1. 使代碼的結構,編寫基本循環和與你想要做
  2. 匹克(最簡單的還是第一次有什麼意見填補他們這些意見的)一個,看你是否能使其在幾行發生,你可以通過生成一些虛擬輸入這段代碼
  3. 不斷重複步驟2,直到所有的意見都需要的代碼
測試

如果您遇到其中一個塊,並且已搜索但未找到具體問題的答案。那麼這不是一個不好的地方問。

+0

我已經有我的代碼的結構,我需要弄清楚如何在matlab中生成一個優先級隊列,我遇到了在C中實現優先級隊列的代碼,然後使用matlab,但我不能這樣做,抱歉,但這是最後一年的實習項目,所以我非常強調,並且不想聽起來像我想要某人爲我實施。 – Lylia