2016-07-07 16 views
0

私はカメに番号順に移動するように指示しています。以前の投稿と一般的な遊びを使って、カメの順位リストを作成しましたが、今ではそのリスト内の相対的な位置に基づいてカメに番号を割り当てたいと考えています。netlogoにランクされたナンバーを割り当てます。

例: 現在のリスト:[(カメ8)(カメ1)(カメ9)(カメ0)] 所望カメ指定:亀8 = 1、亀1 = 2、カメ9 = 3、等

これまでのところ私は達した:

globals [rank_list] 
turtles-own [var. 
      rank] 
set rank_list sort-on [var.] turtles 

create-turtles (50) 
[setxy (random-float max-pxcor) (random-float max-pycor) 
set var. random-normal 0.5 0.175 
    if var. > 1 [set sociability 0.99999999] 
    if var. < 0 [set sociability 0.00000001] 
foreach rank_list ask ? [set rank ...  ;this is where I get stumped 

to go 
ask turtles [foreach rank [ask ? [move]]] 
end 

リストにランク順に基づいて値を割り当てるための任意のヒントは非常に高く評価されるだろう!

答えて

0

上記のニコラスの答えを使用して、私は目標を達成しました。それは私が作業している2000カメのためにまだ処理力が多少ありますが、少なくとも実行します!

turtles-own [var] 

to ranking 
let rank-list sort-on [var] turtles 
let ranks n-values length rank-list [ ? ] 
    (foreach rank-list ranks [ask ?1 [set var ?2] ]) 
end 

to make_turtles 
    create-turtles (5) 
    [set var random-normal 0.5 0.2 
     set color scale-color blue var 0 1 
     set size 3] 
    ranking 
    ask turtles [set label var] 

    end 

to move 
let rank-list sort-on [var] turtles 
ask turtles [foreach rank-list [ask ? [ forward random 9]]] 
end 

to setup 
    clear-all 
    make_turtles 

end 
to go 
    move 
end 
+0

現在、あなたのカメはすべての目盛りで並べ替えています。処理能力を節約したい場合は、ランクリストをグローバル変数に格納します。 –

+0

私はこの答えを見てから約5分ほど前にそれをしました。あなたは正しい、今すぐ完璧に動作する:-) – Jesse001

2

あなたは同時にrank-listと順位の両方をループにランクとforeachの可変引数バージョンを生成するためにn-valuesを使用することができます。

turtles-own [ var rank ] 

to setup 
    clear-all 
    create-turtles 50 [ 
    setxy random-pxcor random-pycor 
    set var random-normal 0.5 0.175 
    ] 
    let rank-list sort-on [ var ] turtles 
    let ranks n-values length rank-list [ ? ] 
    (foreach rank-list ranks [ ask ?1 [ set rank ?2 ] ]) 
end 

しかし、問題は次のとおりです。あなたは本当にrankが必要です変数? var

foreach rank-lisk [ ask ? [ move ] ] 

あるいは単にソートあなたのカメたびに:なぜrank-list直接には使用しない

foreach (sort-on [ var ] turtles) [ ask ? [ move ] ] 

後者が最も効率的ではありませんが、唯一の50カメを持っており、これを行う場合1回のティックにつき1回だけ、あなたはその違いに気付かないでしょう。

+0

ありがとうニコラス。私は今あなたの提案を組み込むことに取り組んでいます。しかし、あなたの最後のポイントには、私は2000カメと実行することができる必要があり、各カメは効率が重要なので、各ダニは、さまざまな長い決定プロセスに従事している。私は元々これを行う方法を見つけることができましたが、私は完全な人口で実行する処理能力を持っていませんでした。私はランクリストの提案がうまくいくと思っています。一度コードを更新すると、それが動作するようになります。 – Jesse001

+0

私はちょうど答えのニコラスに基づいている下のコードの欠陥に気づいた。何らかの理由でカメは階級に従って移動するだけでなく、実際の番号を入力する代わりに入力ボックスを使用すると、世界でもカメの数と同じ回数移動します。私は完全にこの...任意のアイデアに困惑していますか? – Jesse001

+0

回答を参照してください。http://stackoverflow.com/q/38337266/487946 –

関連する問題