Mundarija:

(Juda oddiy) Kasalliklarni modellashtirish (Scratch yordamida): 5 qadam
(Juda oddiy) Kasalliklarni modellashtirish (Scratch yordamida): 5 qadam

Video: (Juda oddiy) Kasalliklarni modellashtirish (Scratch yordamida): 5 qadam

Video: (Juda oddiy) Kasalliklarni modellashtirish (Scratch yordamida): 5 qadam
Video: 99% АЁЛЛАР ВАЗЕЛИННИ ҚАНДАЙ ИШЛАТИШНИ БИЛИШМАЙДИ! АФСУС.... 2024, Iyul
Anonim
(Juda oddiy) Kasalliklarni modellashtirish (Scratch yordamida)
(Juda oddiy) Kasalliklarni modellashtirish (Scratch yordamida)

Bugun biz kasallikning simulyatsiyasi bo'lamiz, bu har qanday kasallik emas, balki COVID-19. Bu simulyatsiya men havola qiladigan 3blue1brown videosidan ilhomlangan. Bu tortish va tushirish bo'lgani uchun, biz JS yoki Python bilan iloji boricha ko'proq ish qila olmaymiz, lekin chizishdan foydalanishning afzalliklari bor, shuning uchun agar siz JS bilan epidemiyani qanday modellashtirishni ko'rishni istasangiz, mening Men bu erda kasalliklarning tarqalishini modellashtirish haqida yozgan maqola. Endi, boshlaylik!

Eslatma: yuqoridagi rasm kvant9innovatsiyaning simulyatsiyasidan olingan (Instructables foydalanuvchisi emas), bu erda ko'rishingiz mumkin.

Ta'minot:

Sizga kerak bo'ladi:

  • Scratch hisobi (bu erda ro'yxatdan o'tishingiz mumkin
  • Sudrab tashlash haqidagi asosiy bilimlar (lekin men hali ham kodni o'taman)
  • Siz dasturlashtira oladigan kompyuter yoki qurilma (ehtimol sizda, chunki siz buni o'qiyapsiz)
  • Majburiy emas - 3b1b videoni tomosha qiling, bu sizga nima dasturlashimiz haqida tushuncha beradi.

1 -qadam: Asosiy sozlash

Asosiy sozlash
Asosiy sozlash

Birinchidan, loyiha tuzamiz, xohlagan narsangizga nom beramiz va keyin tuvaldagi mavjud sprite -ni o'chirib tashlaymiz. Buni spritdagi axlat tugmasini bosish orqali qilishingiz mumkin. Endi bizda bo'sh tuval bor va siz fon rangini xohlaganingizga o'zgartirishingiz mumkin.

Keyin, yangi sprite yarating va mavjud sprite -ni ishlatishning o'rniga, o'zingiznikini bo'yang. Buni ko'k nuqta qiling. Bu sprite jamoaning sezgir aholisini ifodalaydi, shuningdek bizda tiklangan/olib tashlangan va yuqtirgan populyatsiya bo'ladi, bu erda SIR (sezgir, yuqtirgan, tiklangan/olib tashlangan) modelining nomi kelib chiqadi. Spritni "yuqmagan" deb nomlaganingizga ishonch hosil qiling.

Endi yangi sprite yarating (yana) va uni sprite1 deb nomlang, biz ham o'zimizni bo'yab olamiz. Unga "Sprite1" deb nom bering va ikkita kostyum yarating, biri qizil nuqta, ikkinchisi kulrang nuqta bo'lishi kerak. Ularni mos ravishda kostyum1 va kostyum2 qiling. Bu ikkalasi yuqtirgan (qizil nuqta) va tiklangan/olib tashlangan (kulrang nuqta) populyatsiyalarni ifodalaydi.

2 -qadam: Xavfli aholi uchun kodni o'rnatish

Xavfli aholi uchun kodni o'rnatish
Xavfli aholi uchun kodni o'rnatish

Endi biz sezgir aholi kodini o'rnatdik. Biz birinchi navbatda ikkita o'zgaruvchini yaratamiz: odamlar va yuqtirganlar. "Odamlar" o'zgaruvchisi aholi sonini ifodalaydi va biz simulyatsiyamizda qancha odam bo'lishini xohlaganimizga qarab o'zgartirilishi mumkin va simulyatsiya shunga mos ravishda o'zgaradi. Biz, shuningdek, yuqtirgan o'zgaruvchini yaratamiz va bu kasallikka chalingan aholini ko'rsatadi. Bu ikkala o'zgaruvchi ham global o'zgaruvchilar bo'lishi kerak, ya'ni ularni barcha spritlarda ishlatish mumkin.

Keyin yuqoridagi kodni infektsiyalanmagan spritga nusxalash. Keling, u nima qilayotganini ko'rib chiqaylik. Dastur boshlanganda, sprite yashiringan va shuning uchun biz klonlar uchun bir xil kodni spritga kiritmasligimiz kerak, bu yordam beradi. Keyin, biz ikkita o'zgaruvchini (yuqtirganlar va odamlar) o'zimiz xohlagan darajaga qo'yamiz, bu holda biz yuqtirganlarni 1 va odamlarni 100 ga qo'yamiz. Bu shuni anglatadiki, biz infektsiyani bitta odamdan boshlaymiz va jami 100 kishi, yuqtirgan odamni hisobga olmaganda. Biz loopni ishga tushiramiz, bu odamlarning o'zgaruvchisiga teng bo'lgan miqdorni bajaradi, bu holda 100. Biz tasodifiy pozitsiyaga o'tamiz va keyin sprite klonini yaratamiz. Biz tasodifiy pozitsiyaga boramiz, chunki bizda bir yo'nalishda harakatlanadigan nuqta chizig'i yo'q va uning o'rniga tasodifiy joylashuvlar paydo bo'ladi.

3 -qadam: yuqtirgan va o'chirilgan Sprite uchun kodni o'rnatish

Infektsiyali va olib tashlangan Sprite uchun kodni o'rnatish
Infektsiyali va olib tashlangan Sprite uchun kodni o'rnatish

Endi "Sprite1" sprite -ga o'ting va yuqoridagi kodni nusxa ko'chiring. Keling, buni ko'rib chiqaylik. Dastur ishga tushganda, sprite yashiriladi, so'ngra zararlangan miqdor uchun pastadir ishlaydi. U tasodifiy pozitsiyaga o'tadi va o'z klonini yaratadi.

4 -qadam: Aholining sezgir kodeksini to'ldirish

Aholining sezgir kodeksini to'ldirish
Aholining sezgir kodeksini to'ldirish

Keling, nima qilishimiz kerakligini ko'rib chiqaylik:

  • Infektsiya
  • Ko'chirish

Infektsiyalanmagan sprite -ga o'ting, yuqoridagi kodni nusxa ko'chiring va uning infektsiya va harakatni qanday yakunlaganini ko'rib chiqamiz. Birinchidan, bu bitta kostyumga to'g'ri keladi va bu haqiqatan ham kerak emas, lekin bizda u bor, shuning uchun agar biz qo'shimcha qo'shishga qaror qilsak, biz kostyumlarni yangilariga almashtirishdan xavotirlanmasligimiz kerak. Keyinchalik, u o'zini ko'rsatadi. Agar eslasangiz, biz asl spritni yashirdik, shuning uchun klonlar ham yashiriladi, biz xohlamaymiz. Keyin biz abadiy tsiklni ishga tushiramiz, u butun dasturni kimdir to'xtatish belgisini bosmaguncha ishlaydi. Biz tasodifiy pozitsiyani 1 soniya davomida siljitamiz va keyin chekkada ekanligimizni tekshiramiz, bu holda biz undan sakrab chiqamiz. Agar biz qizil rangga tegmoqchi bo'lsak, biz Sprite1 -ni (zararlangan/olib tashlangan populyatsiyani) klonlaymiz va zararlangan o'zgaruvchini 1 ga ko'paytiramiz, so'ngra bizning sprite -ni o'chirib tashlaymiz.

5 -qadam: zararlangan/o'chirilgan kodni to'ldirish

Infektsiyalangan/o'chirilgan kodni to'ldirish
Infektsiyalangan/o'chirilgan kodni to'ldirish

Sprite1 -ga o'tib, biz yangi ro'yxat tuzamiz, taymer. Bu ro'yxat nuqta qancha vaqt zararlanganligini kuzatib boradi va ma'lum vaqtdan so'ng u o'ladi yoki tiklanadi, olib tashlangan/tiklangan populyatsiyaning bir qismiga aylanadi va kulrang nuqta bilan ifodalanadi, uni qayta infektsiyalash mumkin emas.

Yuqoridagi kodni nusxa ko'chiring va o'taylik. Biz klon sifatida boshlaganimizda, biz taymerlar ro'yxatiga dastur ishlagan soniyalar sonini kiritamiz va biz uni tekshiramiz, u qancha vaqt davomida zararlanganligini va shunga mos ravishda tiklanishini o'zgartiramiz. Biz taymerlar ro'yxatini yashiramiz, shundan keyingina klon kostyumini zararlangan kostyumga o'tkazamiz va keyin spreyimizni ko'rsatamiz. Biz hozirda abadiy tsiklni ishga tushiramiz, unda bir nechta narsalar sodir bo'ladi: biz klonga har soniyada tasodifiy holatga o'tishni aytamiz, zararlangan o'zgaruvchining populyatsiyadan kattaroqligini tekshiramiz, bu holda biz uni populyatsiyaga o'rnatamiz va Nihoyat, biz boramiz va taymerlar ro'yxatining birinchi bandini 5 soniyadan ko'proq vaqt o'tganini tekshiramiz va agar rost bo'lsa, biz kostyumni tiklangan kostyumga o'tkazamiz, shuning uchun yuqtirolmaymiz va taymerdan elementni o'chirib tashlaymiz.

Tavsiya: