Skip to content

Instantly share code, notes, and snippets.

@sim642
Last active August 29, 2015 14:14
Show Gist options
  • Save sim642/4c0e35e4fafd11ed8ecf to your computer and use it in GitHub Desktop.
Save sim642/4c0e35e4fafd11ed8ecf to your computer and use it in GitHub Desktop.
Traktaat juustu viilutamisest

Traktaat juustu viilutamisest

Simmo Saan, veebruar 2015

Sissejuhatus

Nii nagu viilutatud leiba on peetud kõigi aegade parimaks leiutiseks, võib öelda ka viilutatud juustu kohta, sest kes seda juustu ise ikka viiludeks viitsib lõigata. Olen juba väga palju aastad söönud viilutatud juustusid, kuid aina rohkem olen märganud üht veidrat tendentsi: kõige alumine juustuviil pakendis on alati märgatavalt paksem kui kõik ülejäänud. Pealtnäha tühine probleem, kuid olgem ausad, see viimane viil on vahest ikka liiga paks ja ebahõrk. Perfektsionistina olen sunnitud mõtlema selle probleemi üle ning leidma võimalikult häid lahendusi.

Põhjus

Proovisin oma muret guugeldada, kuid ainus, mille ma leidsin, on puhverdatud versioon juba kadunud leheküljest siin. Lühidalt: viimase viilu suurem paksus tuleneb sellest, et on pakendile märgitud mass vaja kokku saada, kusjuures ühe lisalõike tegemine tekitaks juba kaks liiga õhukest viilu. Kas see ongi siis nii lahendamatu probleem?

Lahendus

Hetkeks järgi mõeldes võib jääda mulje, et midagi keerulist ei saa siin olla. Lihtsalt võiks ju kõik viilud selle märkamatu osa võrra paksemad lõigata, et tuleks välja täisarv ühepaksuseid viile. Lähenemine on küll õige, kuid probleemne, sest lõigatav juustutükk võib olla ebaühtlase massijaotuse ja tihedusega. Näiteks võib selles paikenda juustuauke ehk õhumulle, mis annavad viiluna vähem massi, kui peaks. Lisaks on häda selles, et mõõta saame vaid juba lõigatud viilude kogumassi ning tagasi pole võimalik minna, et midagi parandada, seega on vaja kõike kavalalt ette ennustada.

Ühtlus

Kuna on teada juba pakendisse ära lõigatud viilude kogumass m (kaalutav) ja soovitud kogumass M, siis loomulikult on teada ka veel juurde vajatava juustu mass m' = M - m. Ilmselt lõigatakse juustuviile üpris muutumatu ristlõikega (pindala S) (unustame hetkeks augud jm) tükist. Juba lõigatud osa kogupaksust L teades on seega võimalik leida juustu tihedus ρ = L×S/m ja määrata, kui pikk osa juustuplokk tuleb antud pakendisse veel viilutada (l = m'/(ρ×S)). Kuna on eelistatud konkreetse paksusega viilud (baaspaksus - d), siis ühtlase paksusega viilude saamiseks võib toimida järgnevalt:

  1. Leida murdarvuline viilude arv: n = l/d.
  2. Leida tervete viilude arv (lihtsalt allapoole ümardatud): ⎣n⎦.
  3. Leida uus viilu paksus, et kõik oleks võrdsed, aga võimalikult õhukesed (mitte õhemad kui d): d' = l/n⎦.

Sellisel juhul on üleliigne tekkiv paksus jaotatud võrdselt kõigi veel lõigatavate viilude vahel ning lisandus ühte viilu jääks alla d/n⎦.

AVG-kompensatsioon

Lihtne võimalus muutuva tihedusega võidelda on kaalutud keskmist kasutades. Alustada, et tihedus ρ on eeldatav keskmine väärtus. Edaspidi iga viil ära lõigates saab leida selle üksiku viilu tõttu lisandunud massi Δm ning selle viilu tiheduse ρ' = Δl×S/Δm, kus Δl on lõigatud viilu paksus. Vastavalt kaalutud keskmisele saab muuta tihedust: ρ = (1-λ)ρ + λρ', kus λ on tegur vahemikust [0;1] ja näitab, kui suur on lisatud viilu tihedusel mõju kogu juustu arvestatavale tihedusele.

PID-kompensatsioon

Eelnev keskmistatud lahenduse kitsaskohaks on asjaolu, et see pole võimeline tegelikult ette ennustama, milline võiks olla juustu tihedus järgmiste viilude jaoks, mida veel hakatakse lõikama. Näiteks ei kajastu kuidagi olukord, kus algab juustuauk ja tihedus hakkab vähenema, et edasi juba veelgi enam arvestada, et tihedus väheneb edasi. Selle probleemi lahendamiseks peaks saama kasutada PID-kontrollerit, mis võtaks arvesse muutusi tiheduses ja üritaks neid ka kompenseerida ette.

Detailid

Oletan, et PID võiks toimida järgnevalt:

  • error = ρ - prev_ρ
  • Kp = 1 - tihedust peaks muutma põhimõtteliselt nii palju kui ta tegelikult muutus
  • Ki - ei pruugi olla vajalik, sest puudujääk on arvestub niigi puudujäävas massis
  • Kd - mitte aja muudu Δt kohta, vaid lõigatud viilu paksuse Δl kohta
  • ρ = output - feedback samasse muutujasse

Hüperkompensatsioon

Idee poolest saaks veel täpsemalt tiheduse muutumist ette ennustada ja just järgmise viilu mitte kogu ülejäänud ploki jaoks. Kui algab juustuauk, siis on tal kindel kera kuju ja ka mingi suurus. Seega ta pole lõputult suur, nii nagu PID-algoritm seda kompenseerima tahaks hakata.

Sfäärilisus

Tegelikult poleks ka päris täpne kasutada PID-i tuletises tüüpilist lineaarset puutujat, vaid hoopis ringjat kõverjoont, sest augud juustus ei suurene mitte lineaarselt, vaid on kera kujuga. Seetõttu ülima täpsuse mõttes peaks arvestama, et järgmises viilus muutub juustuaugu esimeses pooles selle suurus vähem, teises pooles rohkem. Võib-olla annaks tulemusi ka teise tuletise kaasamine PID-algoritmi, nn PIDD-kontroller (asjakohaseid, kuid liiga keerulisi ja segaseid viiteid: 1, 2, 3, 4). Samas puusalt tulistades ütleks, et selline erinevus on küll kõige muu kõrval täiesti tühine.

Lõppsõna

Kuigi mulle pole päris selged täpsed asjaolud, miks selline paks viil üldse esineda võib ning kuidas ja missuguste vahenditega tegelikkuses juustu viilutamine käib, siis kuhugi on kõik see suur mõtlemine ikka viinud. Nagu on selgunud, siis juustu perfektne viilutamine pole üldsegi nii lihtne ülesanne ja vaevalt on siintoodud võimalikud lahendused ja nende ideed parimad. Samas on siinne käsitlus arvatavasti üsna overkill näiliselt nii väikese probleemi jaoks. Sellele vaatama peaksid need andma parema tulemuse kui ühe kohutava paksuse ja maitsega jääkjuustuviilu.

Kus viga näed laita, seal tule ja aita mölise.

moodne eesti vanasõna

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment