Dan pernyataan if di NetLogo

Saya mencoba membuat simulasi lebah menyebarkan serbuk sari, saya berharap bisa membuatnya sehingga ketika seekor lebah mengunjungi bunga, warnanya berubah menjadi biru dan 'lebah' penyu diberi nilai serbuk sari +1, lalu ketika sudah nilai serbuk sari +3 dan mengunjungi bunga yang warnanya berubah menjadi hijau.

Saya telah mencoba berbagai metode untuk melakukan hal ini, jika ada pernyataan dan if yang berguna, mis.

to pollenate 
ask turtles [
if pollen > 3
and if pcolor = yellow or blue [ 
set pcolor white
set pollen pollen - 3
]
]
end 

Saya tidak yakin apakah pernyataan dan ada.

jadi saya mencobanya ketika kura-kura memiliki jumlah serbuk sari lebih dari 3 mereka berubah warna, lalu mencoba kode di bawah ini tetapi tetap mendapatkan pesan kesalahan.

to pollenate
ask turtles with [ color = white ] [
if pcolor = blue
[set pcolor = green
set pollen pollen -3
]
]
end

Saya terus mendapatkan pesan kesalahan 'Setel 2 input yang diharapkan'

bantuan apa pun pada pendekatan mana pun akan sangat dihargai, atau jika saya melakukan semuanya dengan salah, harap beri tahu saya haha.


person Josh Finkill    schedule 27.11.2019    source sumber
comment
apakah mengubahnya menjadi set pollen pollen - 3, dengan spasi setelah tanda minus, memperbaikinya? jika Anda menulis -3 NetLogo akan mengira yang Anda maksud adalah angka negatif 3, bukan dikurangi 3   -  person Seth Tisue    schedule 28.11.2019
comment
sedangkan untuk bagian if ini, coba if pollen > 3 and (pcolor = yellow or pcolor = blue). or mengharapkan reporter yang lengkap dan mandiri di kedua sisi.   -  person Seth Tisue    schedule 28.11.2019


Jawaban (1)


Inilah jawaban atas dua pertanyaan Anda.

(1) "dan jika" dapat diselesaikan dengan menggunakan logika AND dalam pengujian. Saya HARUS menggunakan tanda kurung di sekitar tes warna yang dihubungkan dengan OR dan kemudian DAN itu ke tes serbuk sari> 3. Seperti dalam matematika, tanda kurung dalam dievaluasi terlebih dahulu. Saya lebih suka menggunakan tanda kurung di semua tes logika Seperti ( pollen > 3) -- ini tidak wajib tetapi menurut saya lebih mudah dibaca.

to pollenate 
ask turtles [
    if (pollen > 3) and ((pcolor  = yellow) or (pcolor = blue))
            [ 
               set pcolor white
               set pollen pollen - 3
           ]
]
end 

Anda bisa menggunakan tes untuk pcolor yang ditemukan dalam daftar warna juga, seperti ini;

to pollenate 
ask turtles [
    if (pollen > 3) and (member? pcolor [yellow blue] )
            [ 
               set pcolor white
               set pollen pollen - 3
           ]
]
end 

Mengenai pertanyaan kedua Anda, versi yang berfungsi adalah

o pollenate
ask turtles with [ color = white ] [
if pcolor = blue
[set pcolor = green
set pollen pollen - 3
]
]
end

Tidak melihat perbedaannya? Saya memberi spasi di kedua sisi tanda minus, jika tidak, Netlogo akan melihat tiga parameter: serbuk sari, serbuk sari, dan -3, bukan dua yang Anda inginkan, yaitu serbuk sari dan (serbuk sari - 3).

person Wade Schuette    schedule 28.11.2019