2014-03-26 85 views
1

我正在netLogo中的一個項目中工作,在該項目中,我有一個隨機網絡,其中每個鏈接都分配了一個帶寬。該算法自己選擇一個隨機的源和目標,之後必須選擇這兩者之間的最佳路徑。 我的問題是,我應該如何問一下我創建的特定代碼的海龜面對並移動其鄰居節點以探索圖(至少探索,如果它不能達到目的地) 幾個trtles必須在節點上行進除了「中繼節點」之外(中繼節點是最佳節點路徑,但我希望節點也探索其他節點)。 繼承人我的代碼部分:探索圖上的相鄰節點

to face-targets 
ask ants ;with [ target-node]; = node 4 ] ;nobody ] 
[ 

let d 0 

face (one-of nodes with [ label = "Relay Node" ]);target-node 
    ask current-node [ 
    set d distance (one-of nodes with [ label = "Relay Node" ]);target-node) 

    ] 
    set distance-to-go d 

    ] 
    end 

    to move-forward 
    face-targets 

    ask ants [ 
    while [ distance-gone < (distance-to-go )] 
    [ 


    fd 1 
    set distance-gone (distance-gone + 1) 
    ] 
    ] 
    ask ants [ 
     if distance-gone < distance-to-go 

     [ 
     set current-node target-node 
     setxy ([xcor] of current-node) ([ycor] of current-node) 
     set distance-gone 0 
     set distance-to-go 0 

     ] 
     ] 
     end 

回答

0

我想沒有人回答了這個又是因爲:

  • 的代碼是亂縮進並有大量的註釋掉的東西在裏面,所以它難以閱讀
  • 目前尚不清楚你的實際問題是什麼。你到目前爲止編寫的代碼是不是達不到你的目標......?

如果您解決了這兩件事(S.O.問題是可編輯的),您將有更多的機會從這裏的某個人處獲得有用的反饋。

有在的NetLogo的模型庫兩個相關的代碼示例,我建議你看看:

  • 鏈接行走海龜例
  • 邁向目標示例

在前者中,海龜一次移動到下一個節點;在後者中,他們逐漸進行。我不確定你在嘗試什麼?通常情況下,如果你在做網絡工作,你會採用前一種方法。從你的代碼看來,你似乎正在嘗試後者,但目前尚不清楚爲什麼。

請注意,您可以用move-to current-node替換setxy ([xcor] of current-node) ([ycor] of current-node)

1

這並不完全清楚你在問什麼。一般來說,您應該嘗試將問題縮小到您需要幫助的特定問題。

這就是說,我給你描述的一般方法將是這個樣子:

turtles-own [ current-node ] 

to go 
    ask ants [ 
    let next-node pick-next-node 
    face next-node ;; This is purely for visual reasons and is not necessary to the behavior of the model 
    move-to next-node 
    set current-node next-node 
    ] 
end 

to-report pick-next-node 
    ;; Whatever strategy you want your ants to use to pick their next node. For example, random: 
    report one-of [ link-neighbors ] of current-node 
end