Files
ath-projekt/projekt.nlogox
Lukáš Trkan 9c61bd1bef upload
2026-03-22 23:17:03 +01:00

2083 lines
91 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<model version="NetLogo 7.0.3" snapToGrid="true">
<code><![CDATA[extensions [csv]
globals [
time
dt
vykon-radiatoru ; Množství energie (W), kterou radiátor přidá
spokojenost-1 ; %
spokojenost-2 ; %
spokojenost-3 ; %
spokojenost-4 ; %
spotreba-radiator-1 ; J
spotreba-radiator-2
spotreba-radiator-3
spotreba-radiator-4
venkovni-teplota
podil-zakladni-slozka
podil-spotrebni-slozka
celkem-ztraty-tepla ; J
zacatecni-den-roku
zpetna-vazba-1 ; - stupne C
zpetna-vazba-2
zpetna-vazba-3
zpetna-vazba-4
prumerna-teplota-zima
spokojenost-platba-1 ; Spokojenost s výší platby %
spokojenost-platba-2
spokojenost-platba-3
spokojenost-platba-4
spokojenost-cena-kwh ; Spokojenost s cenou za kWh %
ztraty-byt-1 ; Kumulované tepelné ztráty J
ztraty-byt-2
ztraty-byt-3
ztraty-byt-4
fps ; Ticky za sekundu (výkon simulace)
fps-last-time ; Čas posledního měření FPS
fps-tick-counter ; Počítadlo ticků od posledního měření
]
patches-own [
id
temperature
]
turtles-own [
energy ; Q [J]
zmena-energie ; Pomocná proměnná pro bezpečný výpočet šíření tepla
radiator
id-mistnost
hmotnost ; m [kg]
tepelna-kapacita ; c [J/(kg.K)] (schopnost pojmout energii)
tepelna-vodivost ; k [W/(m.K)] (rychlost změny energie na vzdálenost)
teplota ; T [K]
]
to setup
clear-all
set dt 20
set time 0
; Výpočet počátečního dne roku (0 = 1. ledna) z nastavených sliderů
let delky-mesicu-setup [0 31 28 31 30 31 30 31 31 30 31 30 31]
let zdr 0
let mi 1
while [mi < zacatecni-mesic] [
set zdr zdr + item mi delky-mesicu-setup
set mi mi + 1
]
set zacatecni-den-roku zdr + zacatecni-den - 1
set spotreba-radiator-1 0
set spotreba-radiator-2 0
set spotreba-radiator-3 0
set spotreba-radiator-4 0
set celkem-ztraty-tepla 0
set zpetna-vazba-1 0
set zpetna-vazba-2 0
set zpetna-vazba-3 0
set zpetna-vazba-4 0
set spokojenost-platba-1 100
set spokojenost-platba-2 100
set spokojenost-platba-3 100
set spokojenost-platba-4 100
set spokojenost-cena-kwh 100
set ztraty-byt-1 0
set ztraty-byt-2 0
set ztraty-byt-3 0
set ztraty-byt-4 0
set vykon-radiatoru 2000.0 ;
; Nastavení rozpočítávání (vyhláška: 40% plocha, 60% spotřeba)
set podil-zakladni-slozka 0.40
set podil-spotrebni-slozka 0.60
load-file
; Výpočet venkovní teploty pro počáteční den/hodinu (time = 0)
aktualizuj-venkovni-teplotu
ask patches [
sprout 1 [
set shape "square"
set color white
set size 0.3
; výchozí stav
set radiator false
set id-mistnost "X"
if id = "R" [
set radiator true
; načtení id pokoje z okolních fieldů
let soused one-of neighbors4 with [id = "1" or id = "2" or id = "3" or id = "4"]
if soused != nobody [
set id-mistnost [id] of soused
]
]
let p-id [id] of patch-here
if p-id = "X" [ ; Zed
set hmotnost 50.0
set tepelna-kapacita 1020.0
set tepelna-vodivost 5.0
]
if (p-id = "1" or p-id = "2" or p-id = "3" or p-id = "4") [ ; mistnost
set hmotnost 5.0
set tepelna-kapacita 1000.0
set tepelna-vodivost 50.0
set id-mistnost p-id
]
if p-id = "R" [ ; Radiátor
set hmotnost 50.0
set tepelna-kapacita 500.0
set tepelna-vodivost 50.0
]
if p-id = "S" [ ; Venek
set hmotnost 1000000.0
set tepelna-kapacita 1000.0
set tepelna-vodivost 5.0
]
; vychozi teplota = venkovni teplota
set teplota venkovni-teplota + 273.15
set energy hmotnost * tepelna-kapacita * teplota
set color white
]
]
; sireni tepla do 4 stran
ask turtles [
create-links-with turtles-on neighbors4
]
; skrytí linků
ask links [ hide-link ]
; vychozi teplota
aktualizuj-venkovni-teplotu
; nastaveni barvy podle teploty
obarvi-turtles
reset-ticks
set fps 0
set fps-last-time timer
set fps-tick-counter 0
end
to go
; reset tmp promenne
ask turtles [
set zmena-energie 0
]
aktualizuj-termostaty
; 2. KROK: Radiátory topí (Q = P * t), pod kontrolou termostatu (Hystereze: top do 21 °C, klesne pod 20 °C)
ask turtles with [radiator] [
let aktualni-byt id-mistnost
if aktualni-byt != "X" [
let mistnost-patches turtles with [id-mistnost = aktualni-byt and not radiator]
if any? mistnost-patches [
let prumerna-teplota mean [teplota - 273.15] of mistnost-patches
; nacteni pozadovane teploty pro dany byt
let ciliova-teplota 20.0
if aktualni-byt = "1" [ set ciliova-teplota target-temp-1 ]
if aktualni-byt = "2" [ set ciliova-teplota target-temp-2 ]
if aktualni-byt = "3" [ set ciliova-teplota target-temp-3 ]
if aktualni-byt = "4" [ set ciliova-teplota target-temp-4 ]
let pocet-policek count turtles with [radiator and id-mistnost = aktualni-byt]
let pomerny-vykon vykon-radiatoru
; rozdeleni vykonu mezi patche radiatoru
if pocet-policek > 0 [
set pomerny-vykon (vykon-radiatoru / pocet-policek)
]
; kontrola zda topit
ifelse prumerna-teplota < ciliova-teplota [
let dodane-teplo pomerny-vykon * dt
set zmena-energie zmena-energie + dodane-teplo
set pcolor orange
if aktualni-byt = "1" [ set spotreba-radiator-1 spotreba-radiator-1 + dodane-teplo ]
if aktualni-byt = "2" [ set spotreba-radiator-2 spotreba-radiator-2 + dodane-teplo ]
if aktualni-byt = "3" [ set spotreba-radiator-3 spotreba-radiator-3 + dodane-teplo ]
if aktualni-byt = "4" [ set spotreba-radiator-4 spotreba-radiator-4 + dodane-teplo ]
]
[
set pcolor white
]
]
]
]
; sireni tepla mezi patchi
ask links [
let t1 [teplota] of end1
let t2 [teplota] of end2
let k1 [tepelna-vodivost] of end1
let k2 [tepelna-vodivost] of end2
let k (k1 + k2) / 2
let rozdil-teplot t1 - t2
let vykon-prenosu k * rozdil-teplot
let tok-tepla vykon-prenosu * dt
; ztraty
let id1 [ [id] of patch-here ] of end1
let id2 [ [id] of patch-here ] of end2
; pocitani ztrat tepla do bilance
if id1 != "S" and id2 = "S" [ if tok-tepla > 0 [ set celkem-ztraty-tepla celkem-ztraty-tepla + tok-tepla ] ]
if id1 = "S" and id2 != "S" [ if tok-tepla < 0 [ set celkem-ztraty-tepla celkem-ztraty-tepla - tok-tepla ] ]
;ztraty pro byty
let pk1 [id-mistnost] of end1
let pk2 [id-mistnost] of end2
if member? pk1 "1234" and pk2 = "X" and tok-tepla > 0 [
if pk1 = "1" [ set ztraty-byt-1 ztraty-byt-1 + tok-tepla ]
if pk1 = "2" [ set ztraty-byt-2 ztraty-byt-2 + tok-tepla ]
if pk1 = "3" [ set ztraty-byt-3 ztraty-byt-3 + tok-tepla ]
if pk1 = "4" [ set ztraty-byt-4 ztraty-byt-4 + tok-tepla ]
]
if member? pk2 "1234" and pk1 = "X" and tok-tepla < 0 [
if pk2 = "1" [ set ztraty-byt-1 ztraty-byt-1 - tok-tepla ]
if pk2 = "2" [ set ztraty-byt-2 ztraty-byt-2 - tok-tepla ]
if pk2 = "3" [ set ztraty-byt-3 ztraty-byt-3 - tok-tepla ]
if pk2 = "4" [ set ztraty-byt-4 ztraty-byt-4 - tok-tepla ]
]
ask end1 [ set zmena-energie zmena-energie - tok-tepla ]
ask end2 [ set zmena-energie zmena-energie + tok-tepla ]
]
aktualizuj-venkovni-teplotu
; aplikovani zmen
ask turtles [
set energy energy + zmena-energie
set teplota energy / (hmotnost * tepelna-kapacita)
]
; aktualizace labelu jednou za X ticku pro snizeni zateze
if ticks mod 120 = 0 [
ask turtles [
set plabel precision (teplota - 273.15) 1
]
]
obarvi-turtles
aktualizuj-spokojenost
aktualizuj-chovani
set time time + dt
set fps-tick-counter fps-tick-counter + 1
if fps-tick-counter >= 30 [
let elapsed timer - fps-last-time
if elapsed > 0 [ set fps fps-tick-counter / elapsed ]
set fps-last-time timer
set fps-tick-counter 0
]
update-plots
tick
; zastaveni simulace
if time >= delka-sezony-dnu * 86400 [
stop
user-message "Simulace dokončena"
]
end
; obarveni turtles ve stylu termokamery
to obarvi-turtles
ask turtles [
if radiator [
set shape "square"
]
; prevod na C
let teplota-celsia teplota - 273.15
; obarveni podle teploty
set color barva-termokamery teplota-celsia
]
end
to load-file
if not file-exists? "data.csv" [
user-message "Soubor data.csv nebyl nalezen!"
stop
]
file-open "data.csv"
; Začneme vykreslovat odshora (nejvyšší Y souřadnice v NetLogu)
let aktualni-y max-pycor
while [not file-at-end?] [
let radek (csv:from-row file-read-line ";")
let aktualni-x min-pxcor
foreach radek [ znak ->
if aktualni-x <= max-pxcor and aktualni-y >= min-pycor [
ask patch aktualni-x aktualni-y [
;preovod na string
let hodnota (word znak)
if member? "S" hodnota [set id "S"]
if member? "X" hodnota [set id "X"]
if member? "1" hodnota [set id "1"]
if member? "2" hodnota [set id "2"]
if member? "3" hodnota [set id "3"]
if member? "4" hodnota [set id "4"]
if member? "R" hodnota [set id "R"]
]
]
set aktualni-x aktualni-x + 1
]
set aktualni-y aktualni-y - 1
]
file-close
obarvi-mistnosti
end
to obarvi-mistnosti
ask patches with [ id = "S" ] [set pcolor sky]
ask patches with [ id = "X" ] [set pcolor gray]
ask patches with [ id = "1" ] [set pcolor red]
ask patches with [ id = "2" ] [set pcolor blue]
ask patches with [ id = "3" ] [set pcolor green]
ask patches with [ id = "4" ] [set pcolor (orange + 2)]
ask patches with [ id = "R" ] [set pcolor white]
end
; formatovani casu
to-report formatuj-cas
let elapsed-days floor (time / 86400)
let hodiny floor ((time mod 86400) / 3600)
let minuty floor ((time mod 3600) / 60)
; Výpočet kalendářního datumu od počátečního data
let d zacatecni-den + elapsed-days
let m zacatecni-mesic
let delky-mesicu [31 28 31 30 31 30 31 31 30 31 30 31]
while [d > item (m - 1) delky-mesicu] [
set d d - item (m - 1) delky-mesicu
set m m + 1
if m > 12 [ set m 1 ]
]
report (word d "." m ". " hodiny " h, " minuty " m")
end
to-report prumerna-teplota-pokoje [byt-id]
let mistnost-patches turtles with [id-mistnost = (word byt-id) and not radiator]
if not any? mistnost-patches [ report 0 ]
report precision (mean [teplota - 273.15] of mistnost-patches) 1
end
; spravedlive naklady
to-report vypocti-fer-naklady [byt-id]
let celkova-plocha count turtles with [member? id-mistnost "1234" and not radiator]
let plocha-bytu count turtles with [id-mistnost = (word byt-id) and not radiator]
let celkova-spotreba (spotreba-radiator-1 + spotreba-radiator-2 + spotreba-radiator-3 + spotreba-radiator-4)
if celkova-spotreba = 0 [ report 0 ]
let spotreba-bytu 0
if byt-id = 1 [ set spotreba-bytu spotreba-radiator-1 ]
if byt-id = 2 [ set spotreba-bytu spotreba-radiator-2 ]
if byt-id = 3 [ set spotreba-bytu spotreba-radiator-3 ]
if byt-id = 4 [ set spotreba-bytu spotreba-radiator-4 ]
; Výpočet: (Plocha bytu / Celková plocha) * Základní_Podíl + (Moje spotřeba / Celková spotřeba) * Spotřební_Podíl
let fer-podil ( (plocha-bytu / celkova-plocha) * podil-zakladni-slozka ) + ( (spotreba-bytu / celkova-spotreba) * podil-spotrebni-slozka )
report precision (fer-podil * 100) 1 ; v procentech
end
; Pomocná funkce pro výpočet spokojenosti jednoho pokoje
to-report spocitej-spokojenost-bytu[byt-id cilova-teplota]
let mistnost-patches turtles with [id-mistnost = byt-id and not radiator]
; Pojistka, pokud by místnost neexistovala
if not any? mistnost-patches [ report 0 ]
; Získáme reálnou průměrnou teplotu ve stupních Celsia
let prumerna-teplota mean [teplota - 273.15] of mistnost-patches
; Spočítáme absolutní rozdíl mezi realitou a cílem
let rozdil abs (prumerna-teplota - cilova-teplota)
; Výpočet: 100 % mínus penalizace (10 % za každý 1 °C rozdílu)
let vysledek 100 - (rozdil * 10)
; Omezíme výsledek, aby nešel do mínusu nebo nad 100
if vysledek < 0 [ set vysledek 0 ]
if vysledek > 100 [ set vysledek 100 ]
report vysledek
end
to aktualizuj-spokojenost
set spokojenost-1 spocitej-spokojenost-bytu "1" target-temp-1
set spokojenost-2 spocitej-spokojenost-bytu "2" target-temp-2
set spokojenost-3 spocitej-spokojenost-bytu "3" target-temp-3
set spokojenost-4 spocitej-spokojenost-bytu "4" target-temp-4
set spokojenost-platba-1 spocitej-spokojenost-platby 1
set spokojenost-platba-2 spocitej-spokojenost-platby 2
set spokojenost-platba-3 spocitej-spokojenost-platby 3
set spokojenost-platba-4 spocitej-spokojenost-platby 4
set spokojenost-cena-kwh spocitej-spokojenost-ceny
end
; 5 Kč = 100 %, 20 Kč = 0 %
to-report spocitej-spokojenost-ceny
let referencni-cena 5.0
let maximalni-cena 20.0
let vysledek 100 - ((cena-za-kwh - referencni-cena) / (maximalni-cena - referencni-cena)) * 100
report max (list 0 (min (list 100 vysledek)))
end
to-report spocitej-spokojenost-platby [byt-id]
let total-spotreba spotreba-radiator-1 + spotreba-radiator-2 + spotreba-radiator-3 + spotreba-radiator-4
if total-spotreba = 0 [ report 100 ]
let spotreba-bytu 0
if byt-id = 1 [ set spotreba-bytu spotreba-radiator-1 ]
if byt-id = 2 [ set spotreba-bytu spotreba-radiator-2 ]
if byt-id = 3 [ set spotreba-bytu spotreba-radiator-3 ]
if byt-id = 4 [ set spotreba-bytu spotreba-radiator-4 ]
let spotreba-podil (spotreba-bytu / total-spotreba) * 100
let naklady-podil vypocti-fer-naklady byt-id
; Kladný přeplatek = platí více než spotřeboval -> nespokojenost
let preplatek naklady-podil - spotreba-podil
let vysledek 100 - max (list 0 (preplatek * 5))
; Zpetna vazba snizuje teplotu => nespokojenost
; -1 °C snížení = -10 % spokojenosti
let zpetna-vazba-bytu 0
if byt-id = 1 [ set zpetna-vazba-bytu zpetna-vazba-1 ]
if byt-id = 2 [ set zpetna-vazba-bytu zpetna-vazba-2 ]
if byt-id = 3 [ set zpetna-vazba-bytu zpetna-vazba-3 ]
if byt-id = 4 [ set zpetna-vazba-bytu zpetna-vazba-4 ]
set vysledek vysledek - (zpetna-vazba-bytu * 10)
if vysledek < 0 [ set vysledek 0 ]
if vysledek > 100 [ set vysledek 100 ]
report vysledek
end
; prevod teploty na barvu termokamery
to-report barva-termokamery [ teplota-celsia ]
let min-t 5
let max-t 25
if teplota-celsia < min-t [ set teplota-celsia min-t ]
if teplota-celsia > max-t [ set teplota-celsia max-t ]
let t (teplota-celsia - min-t) / (max-t - min-t)
let r 0 let g 0 let b 0
ifelse t < 0.25 [
let pomer (t / 0.25)
set r round (255 * pomer)
set g 0
set b 255
] [
ifelse t < 0.5 [
let pomer ((t - 0.25) / 0.25)
set r 255
set g 0
set b round (255 - (255 * pomer))
] [
ifelse t < 0.75 [
let pomer ((t - 0.5) / 0.25)
set r 255
set g round (255 * pomer)
set b 0
] [
let pomer ((t - 0.75) / 0.25)
set r 255
set g 255
set b round (255 * pomer)
]
]
]
report (list r g b)
end
; vypocet venkovni teploty pro danou hodinu a den roku
to aktualizuj-venkovni-teplotu
let hodina ((time mod 86400) / 3600)
let den-roku (zacatecni-den-roku + floor (time / 86400)) mod 365
; Roční cyklus pro ČR: průměr 9°C, nejchladněji ~15. ledna (den 14), nejteplejší ~15. července (den 195)
; prumerna-teplota-zima = odchylka od normálu (0 = normální rok, záporné = chladnější)
; amplituda-sezony = roční amplituda v °C (výchozí 12)
let sezonni-prumer (9 + prumerna-teplota-zima) - amplituda-sezony * cos (den-roku / 365 * 360)
; Denní cyklus: výkyv +-5°C, maximum ve 14:00
let amplituda-den 5.0
set venkovni-teplota sezonni-prumer + amplituda-den * cos ((hodina - 14) * 15)
let venkovni-teplota-kelvin venkovni-teplota + 273.15
ask turtles-on patches with [id = "S"] [
set energy hmotnost * tepelna-kapacita * venkovni-teplota-kelvin
set zmena-energie 0
]
end
; nastaveni target-temp podle harmonogramu a zpetne vazby
to aktualizuj-termostaty
; den v týdnu, Po = 0, Ne = 6
let den-v-tydnu (floor (time / 86400) + zacatecni-den-tydne) mod 7
let hodina floor ((time mod 86400) / 3600)
let je-vikend? (den-v-tydnu = 5 or den-v-tydnu = 6)
if not manualni-rezim-1 [
ifelse je-vikend? [
ifelse hodina >= 8 and hodina < 22
[ set target-temp-1 22.0 ]
[ set target-temp-1 18.0 ]
] [
ifelse (hodina >= 6 and hodina < 8) or (hodina >= 15 and hodina < 22)
[ set target-temp-1 21.0 ]
[ set target-temp-1 18.0 ]
]
set target-temp-1 max (list 15 (target-temp-1 - zpetna-vazba-1))
]
if not manualni-rezim-2 [
ifelse je-vikend? [
ifelse hodina >= 8 and hodina < 22
[ set target-temp-2 20.0 ]
[ set target-temp-2 17.0 ]
] [
ifelse (hodina >= 19 and hodina < 22)
[ set target-temp-2 20.0 ]
[ set target-temp-2 17.0 ]
]
set target-temp-2 max (list 15 (target-temp-2 - zpetna-vazba-2))
]
if not manualni-rezim-3 [
ifelse je-vikend? [
ifelse hodina >= 7 and hodina < 20
[ set target-temp-3 23.0 ]
[ set target-temp-3 19.0 ]
] [
ifelse (hodina >= 6 and hodina < 8) or (hodina >= 13 and hodina < 20)
[ set target-temp-3 23.0 ]
[ set target-temp-3 19.0 ]
]
set target-temp-3 max (list 15 (target-temp-3 - zpetna-vazba-3))
]
if not manualni-rezim-4 [
ifelse je-vikend? [
ifelse hodina >= 7 and hodina < 22
[ set target-temp-4 24.0 ]
[ set target-temp-4 20.0 ]
] [
ifelse (hodina >= 6 and hodina < 8) or (hodina >= 18 and hodina < 22)
[ set target-temp-4 24.0 ]
[ set target-temp-4 20.0 ]
]
set target-temp-4 max (list 15 (target-temp-4 - zpetna-vazba-4))
]
end
; zpětná vazba na náklady, jednou za den
to aktualizuj-chovani
if not zpetna-vazba [ stop ]
; aktualizace jednou za den
if floor (time / 86400) <= floor ((time - dt) / 86400) [ stop ]
let celkova-plocha count turtles with [member? id-mistnost "1234" and not radiator]
let celkova-spotreba (spotreba-radiator-1 + spotreba-radiator-2 + spotreba-radiator-3 + spotreba-radiator-4)
if celkova-spotreba = 0 [ stop ]
let spotreby (list spotreba-radiator-1 spotreba-radiator-2 spotreba-radiator-3 spotreba-radiator-4)
let i 1
foreach spotreby [ spotreba-bytu ->
let plocha count turtles with [id-mistnost = (word i) and not radiator]
let podil-plochy plocha / celkova-plocha
let podil-spotreby spotreba-bytu / celkova-spotreba
let prebytek podil-spotreby - podil-plochy
; tolerance 5%
if i = 1 [
ifelse prebytek > 0.05
[ set zpetna-vazba-1 min (list (zpetna-vazba-1 + citlivost-na-naklady * 0.5) 6.0) ]
[ set zpetna-vazba-1 max (list (zpetna-vazba-1 - 0.2) 0.0) ]
]
if i = 2 [
ifelse prebytek > 0.05
[ set zpetna-vazba-2 min (list (zpetna-vazba-2 + citlivost-na-naklady * 0.5) 6.0) ]
[ set zpetna-vazba-2 max (list (zpetna-vazba-2 - 0.2) 0.0) ]
]
if i = 3 [
ifelse prebytek > 0.05
[ set zpetna-vazba-3 min (list (zpetna-vazba-3 + citlivost-na-naklady * 0.5) 6.0) ]
[ set zpetna-vazba-3 max (list (zpetna-vazba-3 - 0.2) 0.0) ]
]
if i = 4 [
ifelse prebytek > 0.05
[ set zpetna-vazba-4 min (list (zpetna-vazba-4 + citlivost-na-naklady * 0.5) 6.0) ]
[ set zpetna-vazba-4 max (list (zpetna-vazba-4 - 0.2) 0.0) ]
]
set i i + 1
]
end
to uloz-stav
let soubor user-new-file
if soubor = false [ stop ]
; Řádek 1: globální stav simulace (s identifikátorem verze)
let g (list
"STAV_V1"
time
spotreba-radiator-1 spotreba-radiator-2 spotreba-radiator-3 spotreba-radiator-4
celkem-ztraty-tepla
ztraty-byt-1 ztraty-byt-2 ztraty-byt-3 ztraty-byt-4
zpetna-vazba-1 zpetna-vazba-2 zpetna-vazba-3 zpetna-vazba-4
spokojenost-1 spokojenost-2 spokojenost-3 spokojenost-4
spokojenost-platba-1 spokojenost-platba-2 spokojenost-platba-3 spokojenost-platba-4
spokojenost-cena-kwh
)
; Sestavení seznamu řádků: globals + jeden řádek na turtla (xcor ycor energy)
let radky (list g)
ask turtles [
set radky lput (list xcor ycor energy) radky
]
csv:to-file soubor radky
user-message (word "Stav uložen do: " soubor)
end
to nacti-stav
let soubor user-file
if soubor = false [ stop ]
let data csv:from-file soubor
; Ověření formátu souboru
let g item 0 data
if item 0 g != "STAV_V1" [
user-message "Chyba: Neplatný formát souboru (očekáváno STAV_V1)."
stop
]
; Reinicializace světa (zachová nastavení sliderů)
setup
; Obnovení globálních proměnných simulace
set time item 1 g
set spotreba-radiator-1 item 2 g
set spotreba-radiator-2 item 3 g
set spotreba-radiator-3 item 4 g
set spotreba-radiator-4 item 5 g
set celkem-ztraty-tepla item 6 g
set ztraty-byt-1 item 7 g
set ztraty-byt-2 item 8 g
set ztraty-byt-3 item 9 g
set ztraty-byt-4 item 10 g
set zpetna-vazba-1 item 11 g
set zpetna-vazba-2 item 12 g
set zpetna-vazba-3 item 13 g
set zpetna-vazba-4 item 14 g
set spokojenost-1 item 15 g
set spokojenost-2 item 16 g
set spokojenost-3 item 17 g
set spokojenost-4 item 18 g
set spokojenost-platba-1 item 19 g
set spokojenost-platba-2 item 20 g
set spokojenost-platba-3 item 21 g
set spokojenost-platba-4 item 22 g
set spokojenost-cena-kwh item 23 g
; Posun tick counteru na správnou hodnotu (setup volá reset-ticks)
tick-advance (time / dt)
; Obnovení energie a teploty každého turtla podle pozice
foreach but-first data [ radek ->
let tx item 0 radek
let ty item 1 radek
let te item 2 radek
ask turtles-on patch tx ty [
set energy te
set teplota energy / (hmotnost * tepelna-kapacita)
]
]
; Aktualizace venkovní teploty a zobrazení
aktualizuj-venkovni-teplotu
obarvi-turtles
display
update-plots
user-message "Stav úspěšně načten."
end]]></code>
<widgets>
<view x="1195" wrappingAllowedX="true" y="10" frameRate="30.0" minPycor="-16" height="874" showTickCounter="true" patchSize="26.364" fontSize="10" wrappingAllowedY="true" width="874" tickCounterLabel="ticks" maxPycor="16" updateMode="0" maxPxcor="16" minPxcor="-16"></view>
<button x="10" y="10" height="40" disableUntilTicks="false" forever="false" kind="Observer" width="60">setup</button>
<button x="75" y="10" height="40" disableUntilTicks="false" forever="true" kind="Observer" width="55">go</button>
<button x="135" y="10" height="40" disableUntilTicks="false" forever="false" kind="Observer" width="100">uloz-stav</button>
<button x="240" y="10" height="40" disableUntilTicks="false" forever="false" kind="Observer" width="100">nacti-stav</button>
<monitor x="350" precision="1" y="10" height="60" fontSize="13" width="175" display="ubehly-cas">formatuj-cas</monitor>
<monitor x="530" precision="1" y="10" height="60" fontSize="13" width="175" display="venkovni-teplota-C">venkovni-teplota</monitor>
<monitor x="710" precision="1" y="10" height="60" fontSize="13" width="190" display="sezonni-prumer-teploty-C">(9 + prumerna-teplota-zima) - amplituda-sezony * cos ((zacatecni-den-roku + floor (time / 86400)) mod 365 / 365 * 360)</monitor>
<monitor x="905" precision="1" y="10" height="60" fontSize="13" width="140" display="ticky/s (FPS)">fps</monitor>
<slider x="10" step="1" y="80" max="200" width="280" display="delka-sezony-dnu" height="50" min="10" direction="Horizontal" default="100.0" variable="delka-sezony-dnu"></slider>
<slider x="300" step="1" y="80" max="15" width="280" display="odchylka-teploty" height="50" min="-15" direction="Horizontal" default="0.0" variable="odchylka-teploty"></slider>
<slider x="590" step="1" y="80" max="20" width="280" display="amplituda-sezony" height="50" min="0" direction="Horizontal" default="12.0" variable="amplituda-sezony"></slider>
<slider x="10" step="1" y="135" max="6" width="280" display="zacatecni-den-tydne" height="50" min="0" direction="Horizontal" default="0.0" variable="zacatecni-den-tydne"></slider>
<slider x="300" step="1" y="135" max="31" width="280" display="zacatecni-den" height="50" min="1" direction="Horizontal" default="1.0" variable="zacatecni-den"></slider>
<slider x="590" step="1" y="135" max="12" width="280" display="zacatecni-mesic" height="50" min="1" direction="Horizontal" default="1.0" variable="zacatecni-mesic"></slider>
<switch x="10" y="210" height="40" on="false" variable="manualni-rezim-1" width="130" display="manualni-rezim-1"></switch>
<slider x="145" step="1" y="205" max="30" width="185" display="target-temp-1" height="50" min="5" direction="Horizontal" default="18.0" variable="target-temp-1"></slider>
<monitor x="335" precision="1" y="205" height="60" fontSize="11" width="110" display="teplota-1-C">prumerna-teplota-pokoje 1</monitor>
<monitor x="450" precision="2" y="205" height="60" fontSize="11" width="125" display="spotreba-1-kWh">spotreba-radiator-1 / 3600000</monitor>
<monitor x="580" precision="1" y="205" height="60" fontSize="11" width="115" display="spokojenost-1-proc">spokojenost-1</monitor>
<monitor x="700" precision="1" y="205" height="60" fontSize="11" width="115" display="naklady-byt-1-proc">vypocti-fer-naklady 1</monitor>
<monitor x="820" precision="0" y="205" height="60" fontSize="11" width="120" display="naklady-byt-1-CZK">precision (((spotreba-radiator-1 + spotreba-radiator-2 + spotreba-radiator-3 + spotreba-radiator-4) / 3600000) * cena-za-kwh * (vypocti-fer-naklady 1 / 100)) 0</monitor>
<monitor x="945" precision="1" y="205" height="60" fontSize="11" width="130" display="spl-platba-1-proc">spokojenost-platba-1</monitor>
<monitor x="1080" precision="2" y="205" height="60" fontSize="11" width="110" display="uspory-byt-1-C">zpetna-vazba-1</monitor>
<switch x="10" y="275" height="40" on="false" variable="manualni-rezim-2" width="130" display="manualni-rezim-2"></switch>
<slider x="145" step="1" y="270" max="30" width="185" display="target-temp-2" height="50" min="5" direction="Horizontal" default="17.0" variable="target-temp-2"></slider>
<monitor x="335" precision="1" y="270" height="60" fontSize="11" width="110" display="teplota-2-C">prumerna-teplota-pokoje 2</monitor>
<monitor x="450" precision="2" y="270" height="60" fontSize="11" width="125" display="spotreba-2-kWh">spotreba-radiator-2 / 3600000</monitor>
<monitor x="580" precision="1" y="270" height="60" fontSize="11" width="115" display="spokojenost-2-proc">spokojenost-2</monitor>
<monitor x="700" precision="1" y="270" height="60" fontSize="11" width="115" display="naklady-byt-2-proc">vypocti-fer-naklady 2</monitor>
<monitor x="820" precision="0" y="270" height="60" fontSize="11" width="120" display="naklady-byt-2-CZK">precision (((spotreba-radiator-1 + spotreba-radiator-2 + spotreba-radiator-3 + spotreba-radiator-4) / 3600000) * cena-za-kwh * (vypocti-fer-naklady 2 / 100)) 0</monitor>
<monitor x="945" precision="1" y="270" height="60" fontSize="11" width="130" display="spl-platba-2-proc">spokojenost-platba-2</monitor>
<monitor x="1080" precision="2" y="270" height="60" fontSize="11" width="110" display="uspory-byt-2-C">zpetna-vazba-2</monitor>
<switch x="10" y="340" height="40" on="false" variable="manualni-rezim-3" width="130" display="manualni-rezim-3"></switch>
<slider x="145" step="1" y="335" max="30" width="185" display="target-temp-3" height="50" min="5" direction="Horizontal" default="19.0" variable="target-temp-3"></slider>
<monitor x="335" precision="1" y="335" height="60" fontSize="11" width="110" display="teplota-3-C">prumerna-teplota-pokoje 3</monitor>
<monitor x="450" precision="2" y="335" height="60" fontSize="11" width="125" display="spotreba-3-kWh">spotreba-radiator-3 / 3600000</monitor>
<monitor x="580" precision="1" y="335" height="60" fontSize="11" width="115" display="spokojenost-3-proc">spokojenost-3</monitor>
<monitor x="700" precision="1" y="335" height="60" fontSize="11" width="115" display="naklady-byt-3-proc">vypocti-fer-naklady 3</monitor>
<monitor x="820" precision="0" y="335" height="60" fontSize="11" width="120" display="naklady-byt-3-CZK">precision (((spotreba-radiator-1 + spotreba-radiator-2 + spotreba-radiator-3 + spotreba-radiator-4) / 3600000) * cena-za-kwh * (vypocti-fer-naklady 3 / 100)) 0</monitor>
<monitor x="945" precision="1" y="335" height="60" fontSize="11" width="130" display="spl-platba-3-proc">spokojenost-platba-3</monitor>
<monitor x="1080" precision="2" y="335" height="60" fontSize="11" width="110" display="uspory-byt-3-C">zpetna-vazba-3</monitor>
<switch x="10" y="405" height="40" on="false" variable="manualni-rezim-4" width="130" display="manualni-rezim-4"></switch>
<slider x="145" step="1" y="400" max="30" width="185" display="target-temp-4" height="50" min="5" direction="Horizontal" default="20.0" variable="target-temp-4"></slider>
<monitor x="335" precision="1" y="400" height="60" fontSize="11" width="110" display="teplota-4-C">prumerna-teplota-pokoje 4</monitor>
<monitor x="450" precision="2" y="400" height="60" fontSize="11" width="125" display="spotreba-4-kWh">spotreba-radiator-4 / 3600000</monitor>
<monitor x="580" precision="1" y="400" height="60" fontSize="11" width="115" display="spokojenost-4-proc">spokojenost-4</monitor>
<monitor x="700" precision="1" y="400" height="60" fontSize="11" width="115" display="naklady-byt-4-proc">vypocti-fer-naklady 4</monitor>
<monitor x="820" precision="0" y="400" height="60" fontSize="11" width="120" display="naklady-byt-4-CZK">precision (((spotreba-radiator-1 + spotreba-radiator-2 + spotreba-radiator-3 + spotreba-radiator-4) / 3600000) * cena-za-kwh * (vypocti-fer-naklady 4 / 100)) 0</monitor>
<monitor x="945" precision="1" y="400" height="60" fontSize="11" width="130" display="spl-platba-4-proc">spokojenost-platba-4</monitor>
<monitor x="1080" precision="2" y="400" height="60" fontSize="11" width="110" display="uspory-byt-4-C">zpetna-vazba-4</monitor>
<monitor x="10" precision="2" y="475" height="60" fontSize="11" width="155" display="celkem-dodano-kWh">(spotreba-radiator-1 + spotreba-radiator-2 + spotreba-radiator-3 + spotreba-radiator-4) / 3600000</monitor>
<monitor x="170" precision="2" y="475" height="60" fontSize="11" width="155" display="celkem-ztraty-kWh">celkem-ztraty-tepla / 3600000</monitor>
<plot x="10" autoPlotX="true" yMax="30.0" autoPlotY="true" y="655" xMin="0.0" height="175" legend="true" xMax="10.0" yMin="15.0" width="445" display="teplota-byt-1">
<setup></setup>
<update></update>
<pen interval="1.0" mode="0" display="Realita" color="-2674135" legend="true">
<setup></setup>
<update>plot prumerna-teplota-pokoje 1</update>
</pen>
<pen interval="1.0" mode="0" display="Cil" color="-16777216" legend="true">
<setup></setup>
<update>plot target-temp-1</update>
</pen>
</plot>
<plot x="460" autoPlotX="true" yMax="30.0" autoPlotY="true" y="655" xMin="0.0" height="175" legend="true" xMax="10.0" yMin="15.0" width="445" display="teplota-byt-2">
<setup></setup>
<update></update>
<pen interval="1.0" mode="0" display="Realita" color="-13345367" legend="true">
<setup></setup>
<update>plot prumerna-teplota-pokoje 2</update>
</pen>
<pen interval="1.0" mode="0" display="Cil" color="-16777216" legend="true">
<setup></setup>
<update>plot target-temp-2</update>
</pen>
</plot>
<plot x="10" autoPlotX="true" yMax="30.0" autoPlotY="true" y="835" xMin="0.0" height="175" legend="true" xMax="10.0" yMin="15.0" width="445" display="teplota-byt-3">
<setup></setup>
<update></update>
<pen interval="1.0" mode="0" display="Realita" color="-13840069" legend="true">
<setup></setup>
<update>plot prumerna-teplota-pokoje 3</update>
</pen>
<pen interval="1.0" mode="0" display="Cil" color="-16777216" legend="true">
<setup></setup>
<update>plot target-temp-3</update>
</pen>
</plot>
<plot x="460" autoPlotX="true" yMax="30.0" autoPlotY="true" y="835" xMin="0.0" height="175" legend="true" xMax="10.0" yMin="15.0" width="445" display="teplota-byt-4">
<setup></setup>
<update></update>
<pen interval="1.0" mode="0" display="Realita" color="-955883" legend="true">
<setup></setup>
<update>plot prumerna-teplota-pokoje 4</update>
</pen>
<pen interval="1.0" mode="0" display="Cil" color="-16777216" legend="true">
<setup></setup>
<update>plot target-temp-4</update>
</pen>
</plot>
<plot x="10" autoPlotX="true" yMax="10.0" autoPlotY="true" y="1020" xMin="0.0" height="175" legend="true" xMax="10.0" yMin="0.0" width="445" display="spotreba-bytu">
<setup></setup>
<update></update>
<pen interval="1.0" mode="0" display="spotreba-byt-1-kWh" color="-2674135" legend="true">
<setup></setup>
<update>plot spotreba-radiator-1 / 3600000</update>
</pen>
<pen interval="1.0" mode="0" display="spotreba-byt-2-kWh" color="-13345367" legend="true">
<setup></setup>
<update>plot spotreba-radiator-2 / 3600000</update>
</pen>
<pen interval="1.0" mode="0" display="spotreba-byt-3-kWh" color="-13840069" legend="true">
<setup></setup>
<update>plot spotreba-radiator-3 / 3600000</update>
</pen>
<pen interval="1.0" mode="0" display="spotreba-byt-4-kWh" color="-955883" legend="true">
<setup></setup>
<update>plot spotreba-radiator-4 / 3600000</update>
</pen>
</plot>
<switch x="880" y="80" height="40" on="true" variable="zpetna-vazba" width="230" display="zpetna-vazba"></switch>
<slider x="880" step="0.5" y="135" max="6" width="230" display="citlivost-na-naklady" height="50" min="0" direction="Horizontal" default="3.0" variable="citlivost-na-naklady"></slider>
<monitor x="170" precision="0" y="540" height="60" fontSize="11" width="155" display="celkem-naklady-CZK">precision (((spotreba-radiator-1 + spotreba-radiator-2 + spotreba-radiator-3 + spotreba-radiator-4) / 3600000) * cena-za-kwh) 0</monitor>
<slider x="10" step="0.5" y="540" max="20" width="155" display="cena-za-kwh" height="60" min="1" direction="Horizontal" default="8.0" variable="cena-za-kwh"></slider>
<plot x="335" autoPlotX="true" yMax="10.0" autoPlotY="true" y="470" xMin="0.0" height="165" legend="true" xMax="10.0" yMin="0.0" width="855" display="energeticka-bilance">
<setup></setup>
<update></update>
<pen interval="1.0" mode="0" display="Dodano" color="-13345367" legend="true">
<setup></setup>
<update>plot (spotreba-radiator-1 + spotreba-radiator-2 + spotreba-radiator-3 + spotreba-radiator-4) / 3600000</update>
</pen>
<pen interval="1.0" mode="0" display="Ztraty" color="-2674135" legend="true">
<setup></setup>
<update>plot celkem-ztraty-tepla / 3600000</update>
</pen>
</plot>
<plot x="915" autoPlotX="true" yMax="100.0" autoPlotY="false" y="655" xMin="0.0" height="175" legend="true" xMax="10.0" yMin="0.0" width="445" display="spokojenost-s-placenim">
<setup></setup>
<update></update>
<pen interval="1.0" mode="0" display="byt-1" color="-2674135" legend="true">
<setup></setup>
<update>plot spokojenost-platba-1</update>
</pen>
<pen interval="1.0" mode="0" display="byt-2" color="-13345367" legend="true">
<setup></setup>
<update>plot spokojenost-platba-2</update>
</pen>
<pen interval="1.0" mode="0" display="byt-3" color="-13840069" legend="true">
<setup></setup>
<update>plot spokojenost-platba-3</update>
</pen>
<pen interval="1.0" mode="0" display="byt-4" color="-955883" legend="true">
<setup></setup>
<update>plot spokojenost-platba-4</update>
</pen>
<pen interval="1.0" mode="0" display="cena-kWh" color="-1" legend="true">
<setup></setup>
<update>plot spokojenost-cena-kwh</update>
</pen>
</plot>
<plot x="915" autoPlotX="true" yMax="3.0" autoPlotY="false" y="835" xMin="0.0" height="175" legend="true" xMax="10.0" yMin="0.0" width="445" display="behavioralni-uspory-C">
<setup></setup>
<update></update>
<pen interval="1.0" mode="0" display="byt-1" color="-2674135" legend="true">
<setup></setup>
<update>plot zpetna-vazba-1</update>
</pen>
<pen interval="1.0" mode="0" display="byt-2" color="-13345367" legend="true">
<setup></setup>
<update>plot zpetna-vazba-2</update>
</pen>
<pen interval="1.0" mode="0" display="byt-3" color="-13840069" legend="true">
<setup></setup>
<update>plot zpetna-vazba-3</update>
</pen>
<pen interval="1.0" mode="0" display="byt-4" color="-955883" legend="true">
<setup></setup>
<update>plot zpetna-vazba-4</update>
</pen>
</plot>
<plot x="460" autoPlotX="true" yMax="15.0" autoPlotY="true" y="1020" xMin="0.0" height="175" legend="true" xMax="10.0" yMin="-15.0" width="445" display="venkovni-teplota">
<setup></setup>
<update></update>
<pen interval="1.0" mode="0" display="venkovni-C" color="-13345367" legend="true">
<setup></setup>
<update>plot venkovni-teplota</update>
</pen>
<pen interval="1.0" mode="0" display="sezonni-prumer-C" color="-16777216" legend="true">
<setup></setup>
<update>plot (9 + prumerna-teplota-zima) - amplituda-sezony * cos ((zacatecni-den-roku + floor (time / 86400)) mod 365 / 365 * 360)</update>
</pen>
</plot>
<plot x="915" autoPlotX="true" yMax="10.0" autoPlotY="true" y="1020" xMin="0.0" height="175" legend="true" xMax="10.0" yMin="0.0" width="445" display="spotreba-bytu-srovnani">
<setup></setup>
<update></update>
<pen interval="1.0" mode="0" display="byt-1-kWh" color="-2674135" legend="true">
<setup></setup>
<update>plot spotreba-radiator-1 / 3600000</update>
</pen>
<pen interval="1.0" mode="0" display="byt-2-kWh" color="-13345367" legend="true">
<setup></setup>
<update>plot spotreba-radiator-2 / 3600000</update>
</pen>
<pen interval="1.0" mode="0" display="byt-3-kWh" color="-13840069" legend="true">
<setup></setup>
<update>plot spotreba-radiator-3 / 3600000</update>
</pen>
<pen interval="1.0" mode="0" display="byt-4-kWh" color="-955883" legend="true">
<setup></setup>
<update>plot spotreba-radiator-4 / 3600000</update>
</pen>
</plot>
<plot x="10" autoPlotX="true" yMax="1000.0" autoPlotY="true" y="1205" xMin="0.0" height="175" legend="true" xMax="10.0" yMin="0.0" width="445" display="kumulativni-naklady-CZK">
<setup></setup>
<update></update>
<pen interval="1.0" mode="0" display="byt-1-CZK" color="-2674135" legend="true">
<setup></setup>
<update>plot precision (((spotreba-radiator-1 + spotreba-radiator-2 + spotreba-radiator-3 + spotreba-radiator-4) / 3600000) * cena-za-kwh * (vypocti-fer-naklady 1 / 100)) 0</update>
</pen>
<pen interval="1.0" mode="0" display="byt-2-CZK" color="-13345367" legend="true">
<setup></setup>
<update>plot precision (((spotreba-radiator-1 + spotreba-radiator-2 + spotreba-radiator-3 + spotreba-radiator-4) / 3600000) * cena-za-kwh * (vypocti-fer-naklady 2 / 100)) 0</update>
</pen>
<pen interval="1.0" mode="0" display="byt-3-CZK" color="-13840069" legend="true">
<setup></setup>
<update>plot precision (((spotreba-radiator-1 + spotreba-radiator-2 + spotreba-radiator-3 + spotreba-radiator-4) / 3600000) * cena-za-kwh * (vypocti-fer-naklady 3 / 100)) 0</update>
</pen>
<pen interval="1.0" mode="0" display="byt-4-CZK" color="-955883" legend="true">
<setup></setup>
<update>plot precision (((spotreba-radiator-1 + spotreba-radiator-2 + spotreba-radiator-3 + spotreba-radiator-4) / 3600000) * cena-za-kwh * (vypocti-fer-naklady 4 / 100)) 0</update>
</pen>
</plot>
<plot x="460" autoPlotX="true" yMax="40.0" autoPlotY="false" y="1205" xMin="0.0" height="175" legend="true" xMax="10.0" yMin="0.0" width="445" display="podil-na-nakladech-proc">
<setup></setup>
<update></update>
<pen interval="1.0" mode="0" display="byt-1-proc" color="-2674135" legend="true">
<setup></setup>
<update>plot vypocti-fer-naklady 1</update>
</pen>
<pen interval="1.0" mode="0" display="byt-2-proc" color="-13345367" legend="true">
<setup></setup>
<update>plot vypocti-fer-naklady 2</update>
</pen>
<pen interval="1.0" mode="0" display="byt-3-proc" color="-13840069" legend="true">
<setup></setup>
<update>plot vypocti-fer-naklady 3</update>
</pen>
<pen interval="1.0" mode="0" display="byt-4-proc" color="-955883" legend="true">
<setup></setup>
<update>plot vypocti-fer-naklady 4</update>
</pen>
<pen interval="1.0" mode="0" display="rovny-podil-25proc" color="-16777216" legend="true">
<setup></setup>
<update>plot 25</update>
</pen>
</plot>
<plot x="915" autoPlotX="true" yMax="100.0" autoPlotY="false" y="1205" xMin="0.0" height="175" legend="true" xMax="10.0" yMin="0.0" width="445" display="spokojenost-s-teplotou">
<setup></setup>
<update></update>
<pen interval="1.0" mode="0" display="byt-1-proc" color="-2674135" legend="true">
<setup></setup>
<update>plot spokojenost-1</update>
</pen>
<pen interval="1.0" mode="0" display="byt-2-proc" color="-13345367" legend="true">
<setup></setup>
<update>plot spokojenost-2</update>
</pen>
<pen interval="1.0" mode="0" display="byt-3-proc" color="-13840069" legend="true">
<setup></setup>
<update>plot spokojenost-3</update>
</pen>
<pen interval="1.0" mode="0" display="byt-4-proc" color="-955883" legend="true">
<setup></setup>
<update>plot spokojenost-4</update>
</pen>
</plot>
<plot x="1365" autoPlotX="true" yMax="10.0" autoPlotY="true" y="835" xMin="0.0" height="175" legend="true" xMax="10.0" yMin="0.0" width="445" display="tepelne-ztraty-per-byt">
<setup></setup>
<update></update>
<pen interval="1.0" mode="0" display="byt-1-kWh" color="-2674135" legend="true">
<setup></setup>
<update>plot ztraty-byt-1 / 3600000</update>
</pen>
<pen interval="1.0" mode="0" display="byt-2-kWh" color="-13345367" legend="true">
<setup></setup>
<update>plot ztraty-byt-2 / 3600000</update>
</pen>
<pen interval="1.0" mode="0" display="byt-3-kWh" color="-13840069" legend="true">
<setup></setup>
<update>plot ztraty-byt-3 / 3600000</update>
</pen>
<pen interval="1.0" mode="0" display="byt-4-kWh" color="-955883" legend="true">
<setup></setup>
<update>plot ztraty-byt-4 / 3600000</update>
</pen>
</plot>
</widgets>
<info>## CO MODEL DĚLÁ?
Model simuluje spravedlivé rozdělení nákladů na vytápění v bytovém domě se čtyřmi byty. Cílem je ukázat, jak fyzikální vlastnosti bytů (poloha, plocha, tepelné ztráty) a chování obyvatel (termostatové nastavení, manuální ovládání topení) ovlivňují skutečnou spotřebu tepla a jak lze tuto spotřebu spravedlivě přepočítat na náklady jednotlivých bytů.
Model vychází z české legislativy (vyhláška č. 269/2015 Sb.) rozdělující náklady na základní složku (40 % podle plochy) a spotřební složku (60 % podle skutečné spotřeby).
## JAK MODEL FUNGUJE?
Dům je reprezentován mřížkou 33×33 políček (patches). Každé obsahuje jeden turtle s fyzikálními vlastnostmi:
- **teplota** aktuální teplota v Kelvinech
- **hmotnost** a **tepelna-kapacita** určují tepelnou setrvačnost
- **tepelna-vodivost** určuje rychlost přenosu tepla mezi sousedy
Každý tick (= 10 sekund) se provede:
1. **Difúze tepla** pro každou hranu mezi sousedními buňkami se vypočte tok P = k × ΔT a přenese se Q = P × dt tepla.
2. **Regulace radiátorů** pokud teplota místnosti klesne pod spodní práh termostatu, radiátor se zapne; při dosažení horního prahu se vypne.
3. **Venkovní teplota** kopíruje kosinusový denní cyklus (maximum ve 14:00).
4. **Statistiky** akumuluje se spotřeba každého bytu a průběžně se přepočítávají náklady.
Rozvržení místností je načteno ze souboru `data.csv` (byty 14, zdi X, venkovní prostor S, radiátory R).
## JAK MODEL POUŽÍVAT?
**Spuštění simulace:**
1. Klikněte **setup** načte se rozvržení domu z `data.csv` a nastaví se počáteční teploty.
2. Klikněte **go** spustí se simulační smyčka.
3. Stisknutím **go** znovu simulaci zastavíte.
**Tlačítka:**
- **setup** inicializuje model (načte `data.csv`, nastaví počáteční teploty).
- **go** spustí/zastaví simulační smyčku.
- **uloz-stav / nacti-stav** uloží a obnoví stav světa do/ze souboru `stav`.
**Slidery:**
- **delka-sezony-dnu** počet dní topné sezóny (10200, výchozí 100).
- **odchylka-teploty** posun venkovní teploty oproti výchozímu průměru (15 až +15 °C); záporné hodnoty simulují chladnější zimu.
- **amplituda-sezony** amplituda sezónního kolísání teploty (020 °C).
- **zacatecni-den-tydne** den v týdnu na začátku sezóny (0 = pondělí … 6 = neděle).
- **zacatecni-den / zacatecni-mesic** datum začátku sezóny.
- **target-temp-1..4** nastavení termostatu pro každý byt (530 °C).
**Switche:**
- **manualni-rezim-1..4** přepínač manuálního ovládání pro každý byt; při zapnutí ignoruje časový rozvrh termostatu a používá hodnotu `target-temp`.
**Výstupy (grafy a monitory):**
- Teplotní vizualizace mřížky barva agentů odpovídá teplotě (modrá = chladno, červená = teplo).
- Grafy spotřeby a spokojenosti pro každý byt.
- Tabulka fair-share nákladů na konci nebo průběžně.
## NA CO SI DÁT POZOR?
- Byty v rozích domu (byt 1 a 4) mají větší tepelné ztráty do venkovního prostoru než byty uprostřed.
- Při výrazně chladném počasí (nižší venkovní teplota) se spotřeba výrazněji liší mezi byty.
- Spokojenost obyvatel (spokojenost-1..4) klesá, pokud teplota v bytě trvale leží mimo cílové rozmezí.
## CO ZKUSIT?
- Nastavte **manualni-rezim** pro jeden z bytů a snižte cílovou teplotu sledujte, jak se změní jeho podíl na nákladech a zda to ovlivní sousední byty.
- Spusťte BehaviorSpace experiment s různými hodnotami venkovní teploty a sledujte, jak počasí ovlivňuje celkové náklady i jejich rozdělení.
- Zkuste nastavit jeden byt na velmi nízkou teplotu (netopit) jak se projeví tepelný přenos od sousedů a jak ho algoritmus zohledňuje?
## ROZŠÍŘENÍ MODELU
- **Více podlaží** model lze rozšířit na 3D mřížku (2D mřížka × výška) s přenosem tepla ve třetím rozměru.
- **Proměnné počasí** místo kosinusového cyklu načíst reálná meteorologická data ze souboru CSV.
- **Dynamické chování obyvatel** obyvatelé mohou měnit termostatové nastavení v reakci na průběžné informace o spotřebě (feedback-loop vliv informovanosti).
- **Tepelná izolace** přidat slider pro tloušťku/kvalitu izolace obvodových zdí a simulovat vliv renovace.
## ZAJÍMAVÉ PRVKY NETLOGU
- **Links** pro přenos tepla difúze je implementována přes vytvořené linky mezi sousedními patchi, ne přes vestavěný `diffuse`. To umožňuje přesnější kontrolu.
- **Načítání CSV** rozvržení domu se načítá z externího souboru pomocí `csv:from-file`, což usnadňuje experimenty s různými půdorysy bez úpravy kódu.
- **Uložení/obnovení stavu** `export-world` / `import-world` se používá k checkpointování simulace.
## PŘÍBUZNÉ MODELY
- **Heat Diffusion** z NetLogo Models Library; základ pro pochopení difúze tepla na mřížce.
- **Energy** (Models Library) modelování energetické bilance budovy.
</info>
<turtleShapes>
<shape name="default" rotatable="true" editableColorIndex="0">
<polygon color="-1920102913" filled="true" marked="true">
<point x="150" y="5"></point>
<point x="40" y="250"></point>
<point x="150" y="205"></point>
<point x="260" y="250"></point>
</polygon>
</shape>
<shape name="airplane" rotatable="true" editableColorIndex="0">
<polygon color="-1920102913" filled="true" marked="true">
<point x="150" y="0"></point>
<point x="135" y="15"></point>
<point x="120" y="60"></point>
<point x="120" y="105"></point>
<point x="15" y="165"></point>
<point x="15" y="195"></point>
<point x="120" y="180"></point>
<point x="135" y="240"></point>
<point x="105" y="270"></point>
<point x="120" y="285"></point>
<point x="150" y="270"></point>
<point x="180" y="285"></point>
<point x="210" y="270"></point>
<point x="165" y="240"></point>
<point x="180" y="180"></point>
<point x="285" y="195"></point>
<point x="285" y="165"></point>
<point x="180" y="105"></point>
<point x="180" y="60"></point>
<point x="165" y="15"></point>
</polygon>
</shape>
<shape name="arrow" rotatable="true" editableColorIndex="0">
<polygon color="-1920102913" filled="true" marked="true">
<point x="150" y="0"></point>
<point x="0" y="150"></point>
<point x="105" y="150"></point>
<point x="105" y="293"></point>
<point x="195" y="293"></point>
<point x="195" y="150"></point>
<point x="300" y="150"></point>
</polygon>
</shape>
<shape name="box" rotatable="false" editableColorIndex="0">
<polygon color="-1920102913" filled="true" marked="true">
<point x="150" y="285"></point>
<point x="285" y="225"></point>
<point x="285" y="75"></point>
<point x="150" y="135"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="150" y="135"></point>
<point x="15" y="75"></point>
<point x="150" y="15"></point>
<point x="285" y="75"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="15" y="75"></point>
<point x="15" y="225"></point>
<point x="150" y="285"></point>
<point x="150" y="135"></point>
</polygon>
<line endX="150" startY="285" marked="false" color="255" endY="135" startX="150"></line>
<line endX="15" startY="135" marked="false" color="255" endY="75" startX="150"></line>
<line endX="285" startY="135" marked="false" color="255" endY="75" startX="150"></line>
</shape>
<shape name="bug" rotatable="true" editableColorIndex="0">
<circle x="96" y="182" marked="true" color="-1920102913" diameter="108" filled="true"></circle>
<circle x="110" y="127" marked="true" color="-1920102913" diameter="80" filled="true"></circle>
<circle x="110" y="75" marked="true" color="-1920102913" diameter="80" filled="true"></circle>
<line endX="80" startY="100" marked="true" color="-1920102913" endY="30" startX="150"></line>
<line endX="220" startY="100" marked="true" color="-1920102913" endY="30" startX="150"></line>
</shape>
<shape name="butterfly" rotatable="true" editableColorIndex="0">
<polygon color="-1920102913" filled="true" marked="true">
<point x="150" y="165"></point>
<point x="209" y="199"></point>
<point x="225" y="225"></point>
<point x="225" y="255"></point>
<point x="195" y="270"></point>
<point x="165" y="255"></point>
<point x="150" y="240"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="150" y="165"></point>
<point x="89" y="198"></point>
<point x="75" y="225"></point>
<point x="75" y="255"></point>
<point x="105" y="270"></point>
<point x="135" y="255"></point>
<point x="150" y="240"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="139" y="148"></point>
<point x="100" y="105"></point>
<point x="55" y="90"></point>
<point x="25" y="90"></point>
<point x="10" y="105"></point>
<point x="10" y="135"></point>
<point x="25" y="180"></point>
<point x="40" y="195"></point>
<point x="85" y="194"></point>
<point x="139" y="163"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="162" y="150"></point>
<point x="200" y="105"></point>
<point x="245" y="90"></point>
<point x="275" y="90"></point>
<point x="290" y="105"></point>
<point x="290" y="135"></point>
<point x="275" y="180"></point>
<point x="260" y="195"></point>
<point x="215" y="195"></point>
<point x="162" y="165"></point>
</polygon>
<polygon color="255" filled="true" marked="false">
<point x="150" y="255"></point>
<point x="135" y="225"></point>
<point x="120" y="150"></point>
<point x="135" y="120"></point>
<point x="150" y="105"></point>
<point x="165" y="120"></point>
<point x="180" y="150"></point>
<point x="165" y="225"></point>
</polygon>
<circle x="135" y="90" marked="false" color="255" diameter="30" filled="true"></circle>
<line endX="195" startY="105" marked="false" color="255" endY="60" startX="150"></line>
<line endX="105" startY="105" marked="false" color="255" endY="60" startX="150"></line>
</shape>
<shape name="car" rotatable="false" editableColorIndex="0">
<polygon color="-1920102913" filled="true" marked="true">
<point x="300" y="180"></point>
<point x="279" y="164"></point>
<point x="261" y="144"></point>
<point x="240" y="135"></point>
<point x="226" y="132"></point>
<point x="213" y="106"></point>
<point x="203" y="84"></point>
<point x="185" y="63"></point>
<point x="159" y="50"></point>
<point x="135" y="50"></point>
<point x="75" y="60"></point>
<point x="0" y="150"></point>
<point x="0" y="165"></point>
<point x="0" y="225"></point>
<point x="300" y="225"></point>
<point x="300" y="180"></point>
</polygon>
<circle x="180" y="180" marked="false" color="255" diameter="90" filled="true"></circle>
<circle x="30" y="180" marked="false" color="255" diameter="90" filled="true"></circle>
<polygon color="255" filled="true" marked="false">
<point x="162" y="80"></point>
<point x="132" y="78"></point>
<point x="134" y="135"></point>
<point x="209" y="135"></point>
<point x="194" y="105"></point>
<point x="189" y="96"></point>
<point x="180" y="89"></point>
</polygon>
<circle x="47" y="195" marked="true" color="-1920102913" diameter="58" filled="true"></circle>
<circle x="195" y="195" marked="true" color="-1920102913" diameter="58" filled="true"></circle>
</shape>
<shape name="circle" rotatable="false" editableColorIndex="0">
<circle x="0" y="0" marked="true" color="-1920102913" diameter="300" filled="true"></circle>
</shape>
<shape name="circle 2" rotatable="false" editableColorIndex="0">
<circle x="0" y="0" marked="true" color="-1920102913" diameter="300" filled="true"></circle>
<circle x="30" y="30" marked="false" color="255" diameter="240" filled="true"></circle>
</shape>
<shape name="cow" rotatable="false" editableColorIndex="0">
<polygon color="-1920102913" filled="true" marked="true">
<point x="200" y="193"></point>
<point x="197" y="249"></point>
<point x="179" y="249"></point>
<point x="177" y="196"></point>
<point x="166" y="187"></point>
<point x="140" y="189"></point>
<point x="93" y="191"></point>
<point x="78" y="179"></point>
<point x="72" y="211"></point>
<point x="49" y="209"></point>
<point x="48" y="181"></point>
<point x="37" y="149"></point>
<point x="25" y="120"></point>
<point x="25" y="89"></point>
<point x="45" y="72"></point>
<point x="103" y="84"></point>
<point x="179" y="75"></point>
<point x="198" y="76"></point>
<point x="252" y="64"></point>
<point x="272" y="81"></point>
<point x="293" y="103"></point>
<point x="285" y="121"></point>
<point x="255" y="121"></point>
<point x="242" y="118"></point>
<point x="224" y="167"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="73" y="210"></point>
<point x="86" y="251"></point>
<point x="62" y="249"></point>
<point x="48" y="208"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="25" y="114"></point>
<point x="16" y="195"></point>
<point x="9" y="204"></point>
<point x="23" y="213"></point>
<point x="25" y="200"></point>
<point x="39" y="123"></point>
</polygon>
</shape>
<shape name="cylinder" rotatable="false" editableColorIndex="0">
<circle x="0" y="0" marked="true" color="-1920102913" diameter="300" filled="true"></circle>
</shape>
<shape name="dot" rotatable="false" editableColorIndex="0">
<circle x="90" y="90" marked="true" color="-1920102913" diameter="120" filled="true"></circle>
</shape>
<shape name="face happy" rotatable="false" editableColorIndex="0">
<circle x="8" y="8" marked="true" color="-1920102913" diameter="285" filled="true"></circle>
<circle x="60" y="75" marked="false" color="255" diameter="60" filled="true"></circle>
<circle x="180" y="75" marked="false" color="255" diameter="60" filled="true"></circle>
<polygon color="255" filled="true" marked="false">
<point x="150" y="255"></point>
<point x="90" y="239"></point>
<point x="62" y="213"></point>
<point x="47" y="191"></point>
<point x="67" y="179"></point>
<point x="90" y="203"></point>
<point x="109" y="218"></point>
<point x="150" y="225"></point>
<point x="192" y="218"></point>
<point x="210" y="203"></point>
<point x="227" y="181"></point>
<point x="251" y="194"></point>
<point x="236" y="217"></point>
<point x="212" y="240"></point>
</polygon>
</shape>
<shape name="face neutral" rotatable="false" editableColorIndex="0">
<circle x="8" y="7" marked="true" color="-1920102913" diameter="285" filled="true"></circle>
<circle x="60" y="75" marked="false" color="255" diameter="60" filled="true"></circle>
<circle x="180" y="75" marked="false" color="255" diameter="60" filled="true"></circle>
<rectangle endX="240" startY="195" marked="false" color="255" endY="225" startX="60" filled="true"></rectangle>
</shape>
<shape name="face sad" rotatable="false" editableColorIndex="0">
<circle x="8" y="8" marked="true" color="-1920102913" diameter="285" filled="true"></circle>
<circle x="60" y="75" marked="false" color="255" diameter="60" filled="true"></circle>
<circle x="180" y="75" marked="false" color="255" diameter="60" filled="true"></circle>
<polygon color="255" filled="true" marked="false">
<point x="150" y="168"></point>
<point x="90" y="184"></point>
<point x="62" y="210"></point>
<point x="47" y="232"></point>
<point x="67" y="244"></point>
<point x="90" y="220"></point>
<point x="109" y="205"></point>
<point x="150" y="198"></point>
<point x="192" y="205"></point>
<point x="210" y="220"></point>
<point x="227" y="242"></point>
<point x="251" y="229"></point>
<point x="236" y="206"></point>
<point x="212" y="183"></point>
</polygon>
</shape>
<shape name="fish" rotatable="false" editableColorIndex="0">
<polygon color="-1" filled="true" marked="false">
<point x="44" y="131"></point>
<point x="21" y="87"></point>
<point x="15" y="86"></point>
<point x="0" y="120"></point>
<point x="15" y="150"></point>
<point x="0" y="180"></point>
<point x="13" y="214"></point>
<point x="20" y="212"></point>
<point x="45" y="166"></point>
</polygon>
<polygon color="-1" filled="true" marked="false">
<point x="135" y="195"></point>
<point x="119" y="235"></point>
<point x="95" y="218"></point>
<point x="76" y="210"></point>
<point x="46" y="204"></point>
<point x="60" y="165"></point>
</polygon>
<polygon color="-1" filled="true" marked="false">
<point x="75" y="45"></point>
<point x="83" y="77"></point>
<point x="71" y="103"></point>
<point x="86" y="114"></point>
<point x="166" y="78"></point>
<point x="135" y="60"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="30" y="136"></point>
<point x="151" y="77"></point>
<point x="226" y="81"></point>
<point x="280" y="119"></point>
<point x="292" y="146"></point>
<point x="292" y="160"></point>
<point x="287" y="170"></point>
<point x="270" y="195"></point>
<point x="195" y="210"></point>
<point x="151" y="212"></point>
<point x="30" y="166"></point>
</polygon>
<circle x="215" y="106" marked="false" color="255" diameter="30" filled="true"></circle>
</shape>
<shape name="flag" rotatable="false" editableColorIndex="0">
<rectangle endX="75" startY="15" marked="true" color="-1920102913" endY="300" startX="60" filled="true"></rectangle>
<polygon color="-1920102913" filled="true" marked="true">
<point x="90" y="150"></point>
<point x="270" y="90"></point>
<point x="90" y="30"></point>
</polygon>
<line endX="90" startY="135" marked="true" color="-1920102913" endY="135" startX="75"></line>
<line endX="90" startY="45" marked="true" color="-1920102913" endY="45" startX="75"></line>
</shape>
<shape name="flower" rotatable="false" editableColorIndex="0">
<polygon color="1504722175" filled="true" marked="false">
<point x="135" y="120"></point>
<point x="165" y="165"></point>
<point x="180" y="210"></point>
<point x="180" y="240"></point>
<point x="150" y="300"></point>
<point x="165" y="300"></point>
<point x="195" y="240"></point>
<point x="195" y="195"></point>
<point x="165" y="135"></point>
</polygon>
<circle x="85" y="132" marked="true" color="-1920102913" diameter="38" filled="true"></circle>
<circle x="130" y="147" marked="true" color="-1920102913" diameter="38" filled="true"></circle>
<circle x="192" y="85" marked="true" color="-1920102913" diameter="38" filled="true"></circle>
<circle x="85" y="40" marked="true" color="-1920102913" diameter="38" filled="true"></circle>
<circle x="177" y="40" marked="true" color="-1920102913" diameter="38" filled="true"></circle>
<circle x="177" y="132" marked="true" color="-1920102913" diameter="38" filled="true"></circle>
<circle x="70" y="85" marked="true" color="-1920102913" diameter="38" filled="true"></circle>
<circle x="130" y="25" marked="true" color="-1920102913" diameter="38" filled="true"></circle>
<circle x="96" y="51" marked="true" color="-1920102913" diameter="108" filled="true"></circle>
<circle x="113" y="68" marked="false" color="255" diameter="74" filled="true"></circle>
<polygon color="1504722175" filled="true" marked="false">
<point x="189" y="233"></point>
<point x="219" y="188"></point>
<point x="249" y="173"></point>
<point x="279" y="188"></point>
<point x="234" y="218"></point>
</polygon>
<polygon color="1504722175" filled="true" marked="false">
<point x="180" y="255"></point>
<point x="150" y="210"></point>
<point x="105" y="210"></point>
<point x="75" y="240"></point>
<point x="135" y="240"></point>
</polygon>
</shape>
<shape name="house" rotatable="false" editableColorIndex="0">
<rectangle endX="255" startY="120" marked="true" color="-1920102913" endY="285" startX="45" filled="true"></rectangle>
<rectangle endX="180" startY="210" marked="false" color="255" endY="285" startX="120" filled="true"></rectangle>
<polygon color="-1920102913" filled="true" marked="true">
<point x="15" y="120"></point>
<point x="150" y="15"></point>
<point x="285" y="120"></point>
</polygon>
<line endX="270" startY="120" marked="false" color="255" endY="120" startX="30"></line>
</shape>
<shape name="leaf" rotatable="false" editableColorIndex="0">
<polygon color="-1920102913" filled="true" marked="true">
<point x="150" y="210"></point>
<point x="135" y="195"></point>
<point x="120" y="210"></point>
<point x="60" y="210"></point>
<point x="30" y="195"></point>
<point x="60" y="180"></point>
<point x="60" y="165"></point>
<point x="15" y="135"></point>
<point x="30" y="120"></point>
<point x="15" y="105"></point>
<point x="40" y="104"></point>
<point x="45" y="90"></point>
<point x="60" y="90"></point>
<point x="90" y="105"></point>
<point x="105" y="120"></point>
<point x="120" y="120"></point>
<point x="105" y="60"></point>
<point x="120" y="60"></point>
<point x="135" y="30"></point>
<point x="150" y="15"></point>
<point x="165" y="30"></point>
<point x="180" y="60"></point>
<point x="195" y="60"></point>
<point x="180" y="120"></point>
<point x="195" y="120"></point>
<point x="210" y="105"></point>
<point x="240" y="90"></point>
<point x="255" y="90"></point>
<point x="263" y="104"></point>
<point x="285" y="105"></point>
<point x="270" y="120"></point>
<point x="285" y="135"></point>
<point x="240" y="165"></point>
<point x="240" y="180"></point>
<point x="270" y="195"></point>
<point x="240" y="210"></point>
<point x="180" y="210"></point>
<point x="165" y="195"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="135" y="195"></point>
<point x="135" y="240"></point>
<point x="120" y="255"></point>
<point x="105" y="255"></point>
<point x="105" y="285"></point>
<point x="135" y="285"></point>
<point x="165" y="240"></point>
<point x="165" y="195"></point>
</polygon>
</shape>
<shape name="line" rotatable="true" editableColorIndex="0">
<line endX="150" startY="0" marked="true" color="-1920102913" endY="300" startX="150"></line>
</shape>
<shape name="line half" rotatable="true" editableColorIndex="0">
<line endX="150" startY="0" marked="true" color="-1920102913" endY="150" startX="150"></line>
</shape>
<shape name="pentagon" rotatable="false" editableColorIndex="0">
<polygon color="-1920102913" filled="true" marked="true">
<point x="150" y="15"></point>
<point x="15" y="120"></point>
<point x="60" y="285"></point>
<point x="240" y="285"></point>
<point x="285" y="120"></point>
</polygon>
</shape>
<shape name="person" rotatable="false" editableColorIndex="0">
<circle x="110" y="5" marked="true" color="-1920102913" diameter="80" filled="true"></circle>
<polygon color="-1920102913" filled="true" marked="true">
<point x="105" y="90"></point>
<point x="120" y="195"></point>
<point x="90" y="285"></point>
<point x="105" y="300"></point>
<point x="135" y="300"></point>
<point x="150" y="225"></point>
<point x="165" y="300"></point>
<point x="195" y="300"></point>
<point x="210" y="285"></point>
<point x="180" y="195"></point>
<point x="195" y="90"></point>
</polygon>
<rectangle endX="172" startY="79" marked="true" color="-1920102913" endY="94" startX="127" filled="true"></rectangle>
<polygon color="-1920102913" filled="true" marked="true">
<point x="195" y="90"></point>
<point x="240" y="150"></point>
<point x="225" y="180"></point>
<point x="165" y="105"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="105" y="90"></point>
<point x="60" y="150"></point>
<point x="75" y="180"></point>
<point x="135" y="105"></point>
</polygon>
</shape>
<shape name="plant" rotatable="false" editableColorIndex="0">
<rectangle endX="165" startY="90" marked="true" color="-1920102913" endY="300" startX="135" filled="true"></rectangle>
<polygon color="-1920102913" filled="true" marked="true">
<point x="135" y="255"></point>
<point x="90" y="210"></point>
<point x="45" y="195"></point>
<point x="75" y="255"></point>
<point x="135" y="285"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="165" y="255"></point>
<point x="210" y="210"></point>
<point x="255" y="195"></point>
<point x="225" y="255"></point>
<point x="165" y="285"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="135" y="180"></point>
<point x="90" y="135"></point>
<point x="45" y="120"></point>
<point x="75" y="180"></point>
<point x="135" y="210"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="165" y="180"></point>
<point x="165" y="210"></point>
<point x="225" y="180"></point>
<point x="255" y="120"></point>
<point x="210" y="135"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="135" y="105"></point>
<point x="90" y="60"></point>
<point x="45" y="45"></point>
<point x="75" y="105"></point>
<point x="135" y="135"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="165" y="105"></point>
<point x="165" y="135"></point>
<point x="225" y="105"></point>
<point x="255" y="45"></point>
<point x="210" y="60"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="135" y="90"></point>
<point x="120" y="45"></point>
<point x="150" y="15"></point>
<point x="180" y="45"></point>
<point x="165" y="90"></point>
</polygon>
</shape>
<shape name="sheep" rotatable="false" editableColorIndex="15">
<circle x="203" y="65" marked="true" color="-1" diameter="88" filled="true"></circle>
<circle x="70" y="65" marked="true" color="-1" diameter="162" filled="true"></circle>
<circle x="150" y="105" marked="true" color="-1" diameter="120" filled="true"></circle>
<polygon color="-1920102913" filled="true" marked="false">
<point x="218" y="120"></point>
<point x="240" y="165"></point>
<point x="255" y="165"></point>
<point x="278" y="120"></point>
</polygon>
<circle x="214" y="72" marked="false" color="-1920102913" diameter="67" filled="true"></circle>
<rectangle endX="179" startY="223" marked="true" color="-1" endY="298" startX="164" filled="true"></rectangle>
<polygon color="-1" filled="true" marked="true">
<point x="45" y="285"></point>
<point x="30" y="285"></point>
<point x="30" y="240"></point>
<point x="15" y="195"></point>
<point x="45" y="210"></point>
</polygon>
<circle x="3" y="83" marked="true" color="-1" diameter="150" filled="true"></circle>
<rectangle endX="80" startY="221" marked="true" color="-1" endY="296" startX="65" filled="true"></rectangle>
<polygon color="-1" filled="true" marked="true">
<point x="195" y="285"></point>
<point x="210" y="285"></point>
<point x="210" y="240"></point>
<point x="240" y="210"></point>
<point x="195" y="210"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="false">
<point x="276" y="85"></point>
<point x="285" y="105"></point>
<point x="302" y="99"></point>
<point x="294" y="83"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="false">
<point x="219" y="85"></point>
<point x="210" y="105"></point>
<point x="193" y="99"></point>
<point x="201" y="83"></point>
</polygon>
</shape>
<shape name="square" rotatable="false" editableColorIndex="0">
<rectangle endX="270" startY="30" marked="true" color="-1920102913" endY="270" startX="30" filled="true"></rectangle>
</shape>
<shape name="square 2" rotatable="false" editableColorIndex="0">
<rectangle endX="270" startY="30" marked="true" color="-1920102913" endY="270" startX="30" filled="true"></rectangle>
<rectangle endX="240" startY="60" marked="false" color="255" endY="240" startX="60" filled="true"></rectangle>
</shape>
<shape name="star" rotatable="false" editableColorIndex="0">
<polygon color="-1920102913" filled="true" marked="true">
<point x="151" y="1"></point>
<point x="185" y="108"></point>
<point x="298" y="108"></point>
<point x="207" y="175"></point>
<point x="242" y="282"></point>
<point x="151" y="216"></point>
<point x="59" y="282"></point>
<point x="94" y="175"></point>
<point x="3" y="108"></point>
<point x="116" y="108"></point>
</polygon>
</shape>
<shape name="target" rotatable="false" editableColorIndex="0">
<circle x="0" y="0" marked="true" color="-1920102913" diameter="300" filled="true"></circle>
<circle x="30" y="30" marked="false" color="255" diameter="240" filled="true"></circle>
<circle x="60" y="60" marked="true" color="-1920102913" diameter="180" filled="true"></circle>
<circle x="90" y="90" marked="false" color="255" diameter="120" filled="true"></circle>
<circle x="120" y="120" marked="true" color="-1920102913" diameter="60" filled="true"></circle>
</shape>
<shape name="tree" rotatable="false" editableColorIndex="0">
<circle x="118" y="3" marked="true" color="-1920102913" diameter="94" filled="true"></circle>
<rectangle endX="180" startY="195" marked="false" color="-1653716737" endY="300" startX="120" filled="true"></rectangle>
<circle x="65" y="21" marked="true" color="-1920102913" diameter="108" filled="true"></circle>
<circle x="116" y="41" marked="true" color="-1920102913" diameter="127" filled="true"></circle>
<circle x="45" y="90" marked="true" color="-1920102913" diameter="120" filled="true"></circle>
<circle x="104" y="74" marked="true" color="-1920102913" diameter="152" filled="true"></circle>
</shape>
<shape name="triangle" rotatable="false" editableColorIndex="0">
<polygon color="-1920102913" filled="true" marked="true">
<point x="150" y="30"></point>
<point x="15" y="255"></point>
<point x="285" y="255"></point>
</polygon>
</shape>
<shape name="triangle 2" rotatable="false" editableColorIndex="0">
<polygon color="-1920102913" filled="true" marked="true">
<point x="150" y="30"></point>
<point x="15" y="255"></point>
<point x="285" y="255"></point>
</polygon>
<polygon color="255" filled="true" marked="false">
<point x="151" y="99"></point>
<point x="225" y="223"></point>
<point x="75" y="224"></point>
</polygon>
</shape>
<shape name="truck" rotatable="false" editableColorIndex="0">
<rectangle endX="195" startY="45" marked="true" color="-1920102913" endY="187" startX="4" filled="true"></rectangle>
<polygon color="-1920102913" filled="true" marked="true">
<point x="296" y="193"></point>
<point x="296" y="150"></point>
<point x="259" y="134"></point>
<point x="244" y="104"></point>
<point x="208" y="104"></point>
<point x="207" y="194"></point>
</polygon>
<rectangle endX="195" startY="60" marked="false" color="-1" endY="105" startX="195" filled="true"></rectangle>
<polygon color="255" filled="true" marked="false">
<point x="238" y="112"></point>
<point x="252" y="141"></point>
<point x="219" y="141"></point>
<point x="218" y="112"></point>
</polygon>
<circle x="234" y="174" marked="false" color="255" diameter="42" filled="true"></circle>
<rectangle endX="214" startY="185" marked="true" color="-1920102913" endY="194" startX="181" filled="true"></rectangle>
<circle x="144" y="174" marked="false" color="255" diameter="42" filled="true"></circle>
<circle x="24" y="174" marked="false" color="255" diameter="42" filled="true"></circle>
<circle x="24" y="174" marked="true" color="-1920102913" diameter="42" filled="false"></circle>
<circle x="144" y="174" marked="true" color="-1920102913" diameter="42" filled="false"></circle>
<circle x="234" y="174" marked="true" color="-1920102913" diameter="42" filled="false"></circle>
</shape>
<shape name="turtle" rotatable="true" editableColorIndex="0">
<polygon color="1504722175" filled="true" marked="false">
<point x="215" y="204"></point>
<point x="240" y="233"></point>
<point x="246" y="254"></point>
<point x="228" y="266"></point>
<point x="215" y="252"></point>
<point x="193" y="210"></point>
</polygon>
<polygon color="1504722175" filled="true" marked="false">
<point x="195" y="90"></point>
<point x="225" y="75"></point>
<point x="245" y="75"></point>
<point x="260" y="89"></point>
<point x="269" y="108"></point>
<point x="261" y="124"></point>
<point x="240" y="105"></point>
<point x="225" y="105"></point>
<point x="210" y="105"></point>
</polygon>
<polygon color="1504722175" filled="true" marked="false">
<point x="105" y="90"></point>
<point x="75" y="75"></point>
<point x="55" y="75"></point>
<point x="40" y="89"></point>
<point x="31" y="108"></point>
<point x="39" y="124"></point>
<point x="60" y="105"></point>
<point x="75" y="105"></point>
<point x="90" y="105"></point>
</polygon>
<polygon color="1504722175" filled="true" marked="false">
<point x="132" y="85"></point>
<point x="134" y="64"></point>
<point x="107" y="51"></point>
<point x="108" y="17"></point>
<point x="150" y="2"></point>
<point x="192" y="18"></point>
<point x="192" y="52"></point>
<point x="169" y="65"></point>
<point x="172" y="87"></point>
</polygon>
<polygon color="1504722175" filled="true" marked="false">
<point x="85" y="204"></point>
<point x="60" y="233"></point>
<point x="54" y="254"></point>
<point x="72" y="266"></point>
<point x="85" y="252"></point>
<point x="107" y="210"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="119" y="75"></point>
<point x="179" y="75"></point>
<point x="209" y="101"></point>
<point x="224" y="135"></point>
<point x="220" y="225"></point>
<point x="175" y="261"></point>
<point x="128" y="261"></point>
<point x="81" y="224"></point>
<point x="74" y="135"></point>
<point x="88" y="99"></point>
</polygon>
</shape>
<shape name="wheel" rotatable="false" editableColorIndex="0">
<circle x="3" y="3" marked="true" color="-1920102913" diameter="294" filled="true"></circle>
<circle x="30" y="30" marked="false" color="255" diameter="240" filled="true"></circle>
<line endX="150" startY="285" marked="true" color="-1920102913" endY="15" startX="150"></line>
<line endX="285" startY="150" marked="true" color="-1920102913" endY="150" startX="15"></line>
<circle x="120" y="120" marked="true" color="-1920102913" diameter="60" filled="true"></circle>
<line endX="79" startY="40" marked="true" color="-1920102913" endY="269" startX="216"></line>
<line endX="269" startY="84" marked="true" color="-1920102913" endY="221" startX="40"></line>
<line endX="269" startY="216" marked="true" color="-1920102913" endY="79" startX="40"></line>
<line endX="221" startY="40" marked="true" color="-1920102913" endY="269" startX="84"></line>
</shape>
<shape name="wolf" rotatable="false" editableColorIndex="0">
<polygon color="255" filled="true" marked="false">
<point x="253" y="133"></point>
<point x="245" y="131"></point>
<point x="245" y="133"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="2" y="194"></point>
<point x="13" y="197"></point>
<point x="30" y="191"></point>
<point x="38" y="193"></point>
<point x="38" y="205"></point>
<point x="20" y="226"></point>
<point x="20" y="257"></point>
<point x="27" y="265"></point>
<point x="38" y="266"></point>
<point x="40" y="260"></point>
<point x="31" y="253"></point>
<point x="31" y="230"></point>
<point x="60" y="206"></point>
<point x="68" y="198"></point>
<point x="75" y="209"></point>
<point x="66" y="228"></point>
<point x="65" y="243"></point>
<point x="82" y="261"></point>
<point x="84" y="268"></point>
<point x="100" y="267"></point>
<point x="103" y="261"></point>
<point x="77" y="239"></point>
<point x="79" y="231"></point>
<point x="100" y="207"></point>
<point x="98" y="196"></point>
<point x="119" y="201"></point>
<point x="143" y="202"></point>
<point x="160" y="195"></point>
<point x="166" y="210"></point>
<point x="172" y="213"></point>
<point x="173" y="238"></point>
<point x="167" y="251"></point>
<point x="160" y="248"></point>
<point x="154" y="265"></point>
<point x="169" y="264"></point>
<point x="178" y="247"></point>
<point x="186" y="240"></point>
<point x="198" y="260"></point>
<point x="200" y="271"></point>
<point x="217" y="271"></point>
<point x="219" y="262"></point>
<point x="207" y="258"></point>
<point x="195" y="230"></point>
<point x="192" y="198"></point>
<point x="210" y="184"></point>
<point x="227" y="164"></point>
<point x="242" y="144"></point>
<point x="259" y="145"></point>
<point x="284" y="151"></point>
<point x="277" y="141"></point>
<point x="293" y="140"></point>
<point x="299" y="134"></point>
<point x="297" y="127"></point>
<point x="273" y="119"></point>
<point x="270" y="105"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="-1" y="195"></point>
<point x="14" y="180"></point>
<point x="36" y="166"></point>
<point x="40" y="153"></point>
<point x="53" y="140"></point>
<point x="82" y="131"></point>
<point x="134" y="133"></point>
<point x="159" y="126"></point>
<point x="188" y="115"></point>
<point x="227" y="108"></point>
<point x="236" y="102"></point>
<point x="238" y="98"></point>
<point x="268" y="86"></point>
<point x="269" y="92"></point>
<point x="281" y="87"></point>
<point x="269" y="103"></point>
<point x="269" y="113"></point>
</polygon>
</shape>
<shape name="x" rotatable="false" editableColorIndex="0">
<polygon color="-1920102913" filled="true" marked="true">
<point x="270" y="75"></point>
<point x="225" y="30"></point>
<point x="30" y="225"></point>
<point x="75" y="270"></point>
</polygon>
<polygon color="-1920102913" filled="true" marked="true">
<point x="30" y="75"></point>
<point x="75" y="30"></point>
<point x="270" y="225"></point>
<point x="225" y="270"></point>
</polygon>
</shape>
</turtleShapes>
<linkShapes>
<shape name="default" curviness="0.0">
<lines>
<line x="-0.2" visible="false">
<dash value="0.0"></dash>
<dash value="1.0"></dash>
</line>
<line x="0.0" visible="true">
<dash value="1.0"></dash>
<dash value="0.0"></dash>
</line>
<line x="0.2" visible="false">
<dash value="0.0"></dash>
<dash value="1.0"></dash>
</line>
</lines>
<indicator>
<shape name="link direction" rotatable="true" editableColorIndex="0">
<line endX="90" startY="150" marked="true" color="-1920102913" endY="180" startX="150"></line>
<line endX="210" startY="150" marked="true" color="-1920102913" endY="180" startX="150"></line>
</shape>
</indicator>
</shape>
</linkShapes>
<previewCommands>setup repeat 75 [ go ]</previewCommands>
<experiments>
<experiment name="final-nevytapeni-byt1" repetitions="1" sequentialRunOrder="true" runMetricsEveryStep="true">
<setup>setup</setup>
<go>go</go>
<exitCondition><![CDATA[ticks >= 864000]]></exitCondition>
<metrics>
<metric>spotreba-radiator-1</metric>
<metric>spotreba-radiator-2</metric>
<metric>spotreba-radiator-3</metric>
<metric>spotreba-radiator-4</metric>
<metric>spokojenost-1</metric>
<metric>spokojenost-2</metric>
<metric>spokojenost-3</metric>
<metric>spokojenost-4</metric>
<metric>vypocti-fer-naklady 1</metric>
<metric>vypocti-fer-naklady 2</metric>
<metric>vypocti-fer-naklady 3</metric>
<metric>vypocti-fer-naklady 4</metric>
<metric>celkem-ztraty-tepla</metric>
<metric>prumerna-teplota-pokoje 1</metric>
<metric>prumerna-teplota-pokoje 2</metric>
<metric>prumerna-teplota-pokoje 3</metric>
<metric>prumerna-teplota-pokoje 4</metric>
<metric>venkovni-teplota</metric>
</metrics>
<subExperiments>
<subExperiment>
<enumeratedValueSet variable="manualni-rezim-1">
<value value="true"></value>
</enumeratedValueSet>
<enumeratedValueSet variable="target-temp-1">
<value value="5"></value>
</enumeratedValueSet>
</subExperiment>
<subExperiment>
<enumeratedValueSet variable="manualni-rezim-1">
<value value="false"></value>
</enumeratedValueSet>
<enumeratedValueSet variable="target-temp-1">
<value value="20"></value>
</enumeratedValueSet>
</subExperiment>
</subExperiments>
</experiment>
<experiment name="final-nizka-vysoka-cena" repetitions="1" sequentialRunOrder="true" runMetricsEveryStep="true">
<setup>setup</setup>
<go>go</go>
<exitCondition><![CDATA[ticks >= 864000]]></exitCondition>
<metrics>
<metric>spotreba-radiator-1</metric>
<metric>spotreba-radiator-2</metric>
<metric>spotreba-radiator-3</metric>
<metric>spotreba-radiator-4</metric>
<metric>spokojenost-1</metric>
<metric>spokojenost-2</metric>
<metric>spokojenost-3</metric>
<metric>spokojenost-4</metric>
<metric>vypocti-fer-naklady 1</metric>
<metric>vypocti-fer-naklady 2</metric>
<metric>vypocti-fer-naklady 3</metric>
<metric>vypocti-fer-naklady 4</metric>
<metric>celkem-ztraty-tepla</metric>
<metric>prumerna-teplota-pokoje 1</metric>
<metric>prumerna-teplota-pokoje 2</metric>
<metric>prumerna-teplota-pokoje 3</metric>
<metric>prumerna-teplota-pokoje 4</metric>
<metric>venkovni-teplota</metric>
<metric>spokojenost-platba-1</metric>
<metric>spokojenost-platba-2</metric>
<metric>spokojenost-platba-3</metric>
<metric>spokojenost-platba-4</metric>
</metrics>
<subExperiments>
<subExperiment>
<enumeratedValueSet variable="cena-za-kwh">
<value value="4"></value>
</enumeratedValueSet>
</subExperiment>
<subExperiment>
<enumeratedValueSet variable="cena-za-kwh">
<value value="16"></value>
</enumeratedValueSet>
</subExperiment>
</subExperiments>
</experiment>
<experiment name="final-pretapeny-byt3" repetitions="1" sequentialRunOrder="true" runMetricsEveryStep="true">
<setup>setup</setup>
<go>go</go>
<exitCondition><![CDATA[ticks >= 864000]]></exitCondition>
<metrics>
<metric>spotreba-radiator-1</metric>
<metric>spotreba-radiator-2</metric>
<metric>spotreba-radiator-3</metric>
<metric>spotreba-radiator-4</metric>
<metric>spokojenost-1</metric>
<metric>spokojenost-2</metric>
<metric>spokojenost-3</metric>
<metric>spokojenost-4</metric>
<metric>vypocti-fer-naklady 1</metric>
<metric>vypocti-fer-naklady 2</metric>
<metric>vypocti-fer-naklady 3</metric>
<metric>vypocti-fer-naklady 4</metric>
<metric>celkem-ztraty-tepla</metric>
<metric>prumerna-teplota-pokoje 1</metric>
<metric>prumerna-teplota-pokoje 2</metric>
<metric>prumerna-teplota-pokoje 3</metric>
<metric>prumerna-teplota-pokoje 4</metric>
<metric>venkovni-teplota</metric>
</metrics>
<subExperiments>
<subExperiment>
<enumeratedValueSet variable="manualni-rezim-3">
<value value="false"></value>
</enumeratedValueSet>
<enumeratedValueSet variable="target-temp-1">
<value value="5"></value>
</enumeratedValueSet>
</subExperiment>
<subExperiment>
<enumeratedValueSet variable="manualni-rezim-3">
<value value="true"></value>
</enumeratedValueSet>
<enumeratedValueSet variable="target-temp-1">
<value value="28"></value>
</enumeratedValueSet>
</subExperiment>
</subExperiments>
</experiment>
</experiments>
</model>