2016-04-15 13 views
1

私の小さなモデルを構築することはできましたが、エラーは出ますが理由はわかりません。マイグレーションはカメのコンテキストでは使用できません。マイグレーションはオブザーバーのみです

Psが:私は血まみれの初心者

よエラーコードは次のとおりです。

migarte IA観察者という理由だけであなたは、亀のコンテキストで移行を使用することはできません。

どうすればいいですか?

ありがとうございました。 create(オブザーバー)、hatch(亀)とsprout(パッチ):

breed [fish a-fish] 
breed [boats boat] 
boats-own [profit] 

to setup 
    clear-all 
    ask patches [set pcolor blue] 

    set-default-shape fish "fish" 
    create-fish initial-number-fish 
    [ 
    set color grey 
    set size 1.0 
    setxy random-xcor random-ycor 
    ] 

    set-default-shape boats "boat" 
    create-boats initial-number-boats 
    [ 
    set color black 
    set size 1.5 
    set profit random (1 * profit-per-fish) 
    setxy random-xcor random-ycor 
    ] 
    reset-ticks 
end 

to go 
    if not any? turtles [stop] 
    ask fish 
    [ 
    move 
    fish-reproduce 
    ] 
    ask boats 
    [ 
    move-boats 
    catch-fish 
    death 
    reproduce-boats 
    migrate 
    ] 
    tick 
end 

to move 
    rt random 50 
    lt random 50 
    fd 1 
end 


to fish-reproduce 
    if random-float 100 < fish-growth 
    [hatch 1 [rt random-float 360 fd 1]] 
end 

to move-boats 
    rt random 50 
    lt random 50 
    fd 1 
    set profit profit - 0.1 
end 

to catch-fish 
    let prey one-of fish-here 
    if prey != nobody 
    [ask prey [die] 
    set profit profit + profit-per-fish] 
end 

to death 
    if profit < 0 [die] 
end 

to reproduce-boats 
    if profit > 1 
    [ 
    set profit (profit/2) 
    hatch 1 [rt random-float 360 fd 1]] 
end 


to migrate 
    if random-float 100 < random-spawn-rate 
    [create-turtles 2 [rt random-float 360 fd 1]] 
end 

答えて

2

NetLogoに新しいカメを作成するための3種類のプリミティブがあります。 それぞれは特定のコンテキストでのみ動作します。 これは、プロシージャを呼び出すコンテキストを意識する必要があることを意味します。

この例では、ask turtles(具体的にはask boats)コンテキスト内のcreate-turtlesプリミティブを呼び出しています。つまり、あなたはカメの状況であり、オブザーバーの状況ではないので、create-turtlesは使用できません。 (あなたが特定の品種に新しいエージェントを起動したい場合はhatch-fishのように、またはhatch-<breed>

はあなたの問題を解決するために、あなただけ hatchcreate-turtlesを交換する必要があります。

関連する問題