2083 lines
91 KiB
XML
2083 lines
91 KiB
XML
<?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 1–4, 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 (10–200, 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 (0–20 °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 (5–30 °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>
|