Můj život aneb jak poznat tu pravou (NetLogo)
WORK IN PROGRESS
V následujícím textu se můžete setkat s dávkou nadsázky, sarkazmu a upřímnosti. Pokud se vás něco dotkne, něco vás urazí nebo povzbudí, je mi to jedno.
Contents
Základní údaje
Název simulace: Můj život aneb jak poznat tu pravou
Předmět: 4IT495 Simulace systémů (LS 2017/2018)
Autor: Bc. Mai Duc Anh
Email: mai@spaceflow.io
Typ modelu: Multiagentní model
Modelovací nástroj: NetLogo
Definice problému
Ženský.
Jmenuji se ducan. Jsem hyperaktivní dítě (seriózně) ve věku 24 let původem z jihovýchodní Asie, programátor, nosím zlatočerné dioptrické ray bany (šestky na obou čočkách a lehký astigmatizmus) a od září pravidelně obcházím techno akce s příchutí MDMA. Pustili mě i do berlínského Berghainu, tolik polonahých gayů jsem v zivotě pohromadě neviděl. Momentálně hledám pěknou babu, resp. ženu svých snů.
Pokusím se proto co nejvěrohodněji nasimulovat jeden z mých nedávných týdnů. Den po dni, hodinu po hodině. To jest, part-time (life time) v proptech startupu Spaceflow, navštěvování státního edukativního institutu pro nabytí vědomostí a svatého papíru (doporučuju 4 dohody od Duška), lekce boxu, půlnoční strahovské procházky s partou kamarádů, rave party v Ankali, komunitní (rasově diskriminační) srazy mladých vietnamců v Žitné ulici, posilování lýtek ve fitku a další systematické, nahodilé, ale i nesmyslné činnosti. Bude to 5 let co si zapisuju veškerou svojí denní aktivitu, s přesností na hodiny. Tímto zdravím pana kalendar z Gůgla, díky.
K věci. Během svých “dospělých” let jsem strávil dávku svého času s více či méně atraktivními/energickými/vášnivými/vyspělými zenami. Vytvořil jsem si nedávno i excel tabulku, kde jsem si je všechny ohodnotil v 15 kritériích na škále 0 do 100. Nakonec jsem si hodnoty zprůměroval a maximální skóre bylo osmdesát šest. Ano, vietnamský narcista co bere extázi a chce ovládnout celou galaxii, těší mě.
V posledních 3 měsících se mi nedaří žádný vhodný objekt potkat (ženu), tudíž mi nezbýva nic jiného, než svůj život zmapovat, nasimulovat a zjistit, jak co nejideálněji tweaknout svůj denní režim tak, abych zvýšil své šance potkat tu pravou. Na světě někde je, takže už stačí být jen ve správnou dobu na správném místě.
UPDATE, v období mezi napsáním zadání a finalizace této práce se už i nějaké zajímavé bytosti objevily. Vesmíre, simulace, funguje to :).
Cíl
Cílem simulace je zjistit, kolik možných budoucích chotí lze během jednoho týdne potkat. :-)
Přístup k řešení
Simulace mého týdne
Týdenní režim
- Můj týdenní režim (hrubý, permutovaný, ilustrativní nástin, stalkeři, máte smůlu)
Pondělí - 20 minut hygiena ve společných koupelnách na Strahově - 7 hodin programování ve Spaceflow ve foru karlín - 1 hodina oběd v Karlíně s náhodnou duší - 2 hodiny boxu - 1 hodina procházka s partou na petříně - 1 hodina přesun/doprava v MHD
Úterý - 20 minut hygiena - 20 minut skype s mámou a tátou (jsou ve Vietnamu) - šest hodin na VŠE - 1 hodina oběd se spoluzáky - 1 hodina přesun v MHD - 3 hodiny vývojářský meetup v STRV
Pátek - 20 minut hygiena - 1 hodina oběd se spoluzackou - šest hodin na VŠE - 1 hodina posilování - 1 hodina přesun v MHD - 7 hodin taneční akce v Ankali
Data pro simulaci
- Počet obyvatel v konkrétních lokalitách - dle městských částí Prahy, ČSÚ [1]
- Atraktivita (fyzická / duševní) - Gaussovo rozdělení (cíl je nad 87 percentil)
- Počasí - průměrné údaje za posledních 5 let v prvním týdnu května.
- Aktuální stav (svobodný, zadaný) - ČSÚ
- Věk (dle stromu zivota v ČR) [2]
- Sexuální orientace (ČSÚ)
Ženy
Model
Grafické rozhraní
Přehled agentů
Já | Žlutý vlk o velikosti 3 |
---|---|
Lidé | Barevné šipky, vel. 1 |
Lokality | Zelená pole za mapou (skryté) |
Vstupní parametry
day | Monday |
---|---|
time | 0:00 |
weather | medium |
my-energy | 2 |
my-mood | 5 |
work | 30% |
school | 20% |
sleep | 30% |
socialize | 15% |
shopping | 3% |
girls-matched | 0 |
girls-potential | 0 |
Průběh simulace je ovlivněn nastavitelnými parametry. Cílem simulace je nalézt optimální nastavení vstupních parametrů pro zvýšení šance potkat vyhovující a potencionální dívku.
- Počasí
- weather - předpověď počasí (tropical, sunny, medium, cloudy, rainy)
- Život (podíl zastoupení činností)
- work - práce ve startupu ve Foru Karlín
- school - přednášky a cvičení na VŠE
- sleep - spaní na Strahovských kolejích
- socialize - společenské vyžití (např. kyvadlo, meetupy)
- shopping - rozjímání na Andělu
Ovládání
Ovládat simulaci lze pomocí kláves.
- | S | SETUP- připravení modelu ke spuštění s aktuálně nastavenými parametry
- | G | SIMULATE- spuštění simulace, ta běží od Pondělí 0:00 do Neděle 23:59
Sledované ukazatele
- my-energy - vývoj úrovně mé energie, která se odvíjí od činností, událostí, počasí ..
- my-mood - vývoj nálady opět na základě vnějších faktorů
- girls-matched - počet vyhovujících dívek
- girls-potential - počet potencionálních dívek
- day - den (pondělí až neděle)
- time - čas (0 až 24)
Principy simulace
Kapitola zahrnuje přehled a popis některých procedur, které v modelu najdete.
Nastavení prostředí
- setup
- - nastavení interních parametrů moddelu
- - zahrnuje procedury setup-weather, setup-map, setup-people, setup-me, recalculate-globals
- setup-weather
- - nastavení počasí, které má vliv na aktivitu lidí (projeví se i graficky na mapě)
- setup-map
- - nastaví souřadnice důležitých lokací a jejich okolí na mapě (práce, škola ..)
- - zahrnuje následující procedury
setup-globals setup-places setup-places-area
- setup-people
- - nastavení počtu obyvatel jednotlivých částí v Praze, iniciální nastavení umístění a atributů lidí (atraktivita, rodinný stav ..) - dle údajů z ČSÚ (viz Data pro simulaci)
- - zahrnuje následující procedury
setup-area-coords setup-people-count setup-people-strahov setup-people-karlin setup-people-holesovice setup-people-zizkov setup-people-vrsovice setup-people-other
- setup-me
- - nastavení mé iniciální lokace, barvy kůže, avataru, nálady, energie ... (začínám na Strahově, spánkem).
to setup-me create-myselfs 1 ask myselfs [ setxy dormitory-x dormitory-y set size 3 set label "ducan" set label-color yellow set color yellow set shape "wolf" ] set my-mood 5 set my-energy 2 end
Aktivity, pohyb
V následujícím kódu jsou aktivity spát a jít do školy. V prvním případě mi roste energie a malinko i nálada a zůstávám na místě. V druhém mi energie klesá, nálada je nahoru/dolu (v praxi vzhledem ke vztahu k předmětu, v simulaci to není :D) a moje postavička skotačí na území VŠE.
to go-to-bed set my-energy my-energy + 0.05 set my-mood my-mood + 0.005 set my-state "sleeping" ask myselfs [ set label "sleeping" ] end to go-to-school ask myselfs [ facexy school-x school-y jump random-normal 1 0.2 ] set my-energy my-energy - 0.03 set my-mood my-mood + ( -1 + random 3 ) / 100 set my-state "at school" ask myselfs [ set label "at school" ] end
Výpočet chemie mezi mužem a ženou
(Takhle to doopardy funguje, dávali to v Simpsonových)
Základní procedura, "uvař magii", aplikuje na všechny obyvatele Prahy
to cook-the-magic magic-happens-everywhere-with-everybody people-karlin magic-happens-everywhere-with-everybody people-strahov magic-happens-everywhere-with-everybody people-holesovice magic-happens-everywhere-with-everybody people-vrsovice magic-happens-everywhere-with-everybody people-zizkov end
Tady se ta magie vaří. Musí se smíchat několikero ingrediencí. Má energie, nálada, kombinace atributů protějšku, tj. atraktivita nad určité procento, stav svobodný, žena. No, a nakonec musí přát počasí i vesmír.
to magic-happens-everywhere-with-everybody [breed-name] let chemistry-ingredience flavor-the-weather + flavor-the-chemistry ask breed-name [ if any? myselfs-on patch-ahead 1 and chemistry-ingredience > 25 and flavor-people-match = 1 and flavor-me > 20 [ let message "You've got a match <3" calculate-consequences 1 1 1 1 message ] if any? myselfs-on patch-ahead 1 and chemistry-ingredience > 23 and flavor-people-potential = 1 and flavor-me > 17 [ let message "There's a potential in the air." calculate-consequences 0 1 0.3 0.5 message ] ] end to-report flavor-the-weather if weather = "tropical" [ report random-normal 10 2 ] if weather = "sunny" [ report random-normal 15 2 ] if weather = "medium" [ report random-normal 15 2 ] if weather = "cloudy" [ report random-normal 8 2 ] if weather = "rainy" [ report random-normal 5 2 ] end to-report flavor-the-chemistry report random 10 end to-report flavor-me ifelse my-state = "sleeping" [report -100] [report my-energy + my-mood] end to-report flavor-people-match ifelse attractiveness > 87 and marital-status = 0 and orientation = 0 and age > 18 and age < 30 and gender = 1 [report 1] [report 0] end to-report flavor-people-potential ifelse attractiveness > 80 and marital-status = 0 and orientation = 0 and age > 18 and age < 30 and gender = 1 [report 1] [report 0] end
No a když se poštěstí, udělá to semnou velké dobré.
to calculate-consequences [match-girl potential-girl mood-change energy-change message] set girls-matched girls-matched + match-girl set girls-potential girls-potential + potential-girl set my-mood my-mood + mood-change set my-energy my-energy + energy-change show message end
Zhodnocení výsledné simulace
Předpoklady a omezení modelu
Předpoklady
Pro zjednodušení modelové situace jsou brány v úvahu následující předpoklady.
- jsem vnímavý a dokážu si všimnout každé ženy, co projde kolem
- lidé v noci spí
- lidé přes den pracují (v nějaké lokalitě) a po práci se jdou socializovat
- když je hezké počasí, lidé mají větší tendenci být venku
Omezení
- výkon počítače/netloga, milion obyvatel/turtlů Prahy to nerozdejchalo
Možná rozšíření modelu
- přesuny mezi lokalitami přesně podle spojů MHD Praha
- zahrnout další faktory ovlivňující seběvědomí (po návštěvě kadeřnictví, po nějakém úspěchu)
- další atributy u lidí (preference, míra otevřenosti, záliby ovlivňující pravděpodobnost výskytu na nějaké akci/události ...)
- vliv sociální sítě (vyšší pravděpodobnost potkání se s přítelem mého přítele)
- naškálování (simulace celého roku, více atributů lidí, více druhů počasí, .. škálování do šířky prakticky čehokoli)
Analýza pozorování
Grafy
Závěr
Zdroje
- ↑ Souhrnné informace o 57 městských částech 2004 - 2016 - Český statistický úřad [online]. 2018 [cit. 2018-06-07]. Dostupné z: [www.czso.cz/documents/11236/37543548/casova_rada_MC_2016.xlsx/3c601a66-7ab8-46b0-8178-6cbdce108249?version=1.1]
- ↑ Věkové složení obyvatelstva - Český statistický úřad [online]. 2018 [cit. 2018-06-07]. Dostupné z: [www.czso.cz/documents/11236/37543548/CR_L2_PHA_vek.xlsx/afc354f3-f23c-491c-9032-d65937e6d35c?version=1.3]
Ke stažení
File:Life.zip | zip archiv se simulací NetLogo (kód rozdělen do modulů, proto v zipu)
File:Vysledky.xlsx | výstupy ze simulací