Hvis du sammenligner gennemsnitligt energiforbrug før vs efter ombygningen direkte, måler du langt mere end skroget. Du måler også at efteråret havde mere modvind, at vandstanden har ændret sig sæsonbestemt, at en anden skibsfører kørte blødere i en periode, eller at tidevandsfasen falder forskelligt på forskellige datoer.
Skroget kan kun isoleres ved at sammenligne sejladser der ellers var meget ens. For hver sejlads efter ombygningen finder algoritmen den sejlads før ombygningen med mest sammenlignelige forhold, og parrer dem. Når mange par alle viser samme tendens, kan du være rimelig sikker på det skyldes skroget — ikke vejret.
For hvert par (efter ↔ før) beregnes for hver parameter:
bidrag = |a − b| / tolerance × vægtDen samlede match-score er summen af alle bidrag:
score = Σ bidragLavere score = bedre match. En score på 0 ville være to identiske sejladser. En gennemsnitsscore omkring 0.2 betyder at parrene typisk afviger mindre end en fjerdedel af tolerancegrænserne — ret strenge matches.
Tolerance er prisen for uenighed i parameterets egne enheder. Den siger "hvor meget afvigelse koster 1 score-point". Hvis vindstyrke-tolerancen er 2.0 m/s:
Tolerance kalibrerer altså hvad der er en betydelig forskel for den enkelte parameter.
Vægt er den relative vigtighed. Den ganges på efter
normaliseringen. Vægt 0 betyder "ignorer parameteret helt".
Vægt 2 betyder "tæller dobbelt så meget som de andre".
To bidrag der begge ender på 0.5:
| Parameter | Hvad det måler |
|---|---|
| Vindstyrke | Den primære fysiske modstand. Højere vind → mere energi. |
| Vindretning | Medvind / modvind / sidevind. Behandles cirkulært (350° og 10° er kun 20° fra hinanden, ikke 340°). |
| Vandstand | Vanddybden i sejlrenden, og friktion mod bunden ved lavvande. Vigtig på Fanølinjen. |
| Propel-RPM | Proxy for skibsførerens kørestil. To sejladser med samme vind men forskellig RPM betyder forskellig påvirkning. |
| RPM-variation | Spredningen (std-afvigelsen) af propel-RPM over hele sejladsen. To ture kan have samme gennemsnits-RPM men vidt forskellig profil: en jævn marchtur har lav variation, mens en tur med trafik, opbremsninger og genopstart har høj. Variationen er domineret af trafik og manøvrering — altså den støj du vil kontrollere for — og er derfor en renere matching-variabel end snit-RPM, som også påvirkes af skroget selv. |
| Distance | Den faktisk tilbagelagte distance. På en fast rute bør den være næsten konstant — afviger den meget, har sejladsen haft ekstra manøvrering eller en omvej, og energien er ikke direkte sammenlignelig. |
Nogle gange vil du ikke se den gennemsnitlige effekt over alle forhold, men specifikt hvad ombygningen betyder i hårdt vejr — eller omvendt isolere de rolige dage hvor skroget er den dominerende faktor. Vindkategori-filteret bruger de samme grænser og farver som dashboardet:
| Skala | Kategorier | Bruges på dashboardet af |
|---|---|---|
| Grov | < 10 · 10–15 · > 15 m/s | Dagligt Energiforbrug (bjælkefarverne) og vind-badges på turlisterne |
| Fin | 0–5 · 5–10 · 10–15 · 15–20 · 20+ m/s | Vindfordeling-histogrammet |
Vælgeren har tre slags valg:
WIND_CAT_FIELD øverst i scriptet til max_wind_speed.
I resultattabellen er vindtallene farvet efter kategori, og par-detaljen viser kategorien for begge sejladser som badge — også når filteret er slået fra.
Tre ting kører udenom score-formlen som binære filtre:
Alle tre filtre afgør hvilke par der overhovedet er kandidater. De påvirker ikke score-tallet.
Hvis en parameter har vægt > 0, men værdien er null på enten før- eller
efter-siden, returnerer algoritmen Infinity for hele parret — det udgår.
Det er bevidst strengt. Hvis vandstand mangler på den ene side, vil "diff = 0" se
kunstigt godt ud. Bedre at smide parret ud. Hvis du derimod bevidst
vil ignorere en parameter, så sæt vægten til 0. Det er den korrekte
måde at fortælle algoritmen "denne parameter eksisterer ikke for denne analyse".
Selv den bedste tilgængelige før-sejlads kan stadig være et dårligt match. Hvis du har en stormfuld dag efter ombygningen og overhovedet ingen stormfulde dage før, vil den "bedste" før-sejlads stadig være en lummerlille sommerdag — og det er et katastrofalt match.
Max-score er sikkerhedsventilen. Et par hvor bedste score > maxScore bliver afvist, selv om der ikke fandtes noget bedre. Med en max-score på 2.0 og gennemsnitsscore omkring 0.2 har du masser af headroom — du kan eventuelt stramme den ned mod 1.0 for at få endnu mere troværdige par (på bekostning af færre par).
Algoritmen sorterer efter-sejladserne (nyeste først), og for hver enkelt finder den den bedste endnu ledige før-sejlads. Når en før-sejlads er brugt, kan den ikke matches igen.
Det er ikke matematisk optimalt — en Hungarian-algoritme ville minimere den samlede score over alle par. Men forskellen er typisk lille når puljen er meget større end antallet af par, og greedy er O(n²) der kører på millisekunder. Med ekskluderings-knappen kan du manuelt overstyre dårlige matches.
Tag fx et par hvor begge sejladser var rundture under ret ens forhold:
| Parameter | Før | Efter | |Δ| | Tolerance | Vægt | Bidrag |
|---|---|---|---|---|---|---|
| Vindstyrke | 5.1 m/s | 5.2 m/s | 0.1 | ±2.0 | 1.0 | 0.05 |
| Vindretning | 239° | 244° | 5° | ±45 | 1.0 | 0.11 |
| Vandstand | −76.2 cm | −79.5 cm | 3.3 | ±30 | 1.0 | 0.11 |
| Propel-RPM | 253 | 253 | 0 | ±20 | 1.0 | 0.00 |
| Distance | 2.18 nm | 2.18 nm | 0.00 | ±0.30 | 1.0 | 0.00 |
| Total match-score | 0.27 | |||||
Vinden var næsten identisk i styrke (0.1 m/s forskel) og fra meget tæt på samme retning (5°). Vandstanden afveg lidt mere (3.3 cm), men begge sejladser var under lavvande. Propellen kørte identisk. Score 0.27 er solid — det er to sejladser der reelt foregik under sammenlignelige forhold.
Klikker du en række og ruller ned i par-detaljen, ligger sektionen Forløbssammenligning. Den henter de rå sekund-data for begge sejladser fra logfilerne (samme kilde som stability-dashboard) og lægger de to forløb oven på hinanden. Det er her du kan se hvor i sejladsen forskellen opstår — ikke bare at totalen blev mindre.
Fordi de to sejladser sjældent varer lige længe, skal de projiceres på en fælles akse før de kan trækkes fra hinanden. Vælg:
Kumuleret energi og kumuleret forskel er de to vigtigste. Afstanden mellem de to kurver er den akkumulerede forskel; ender Δ-kurven under nullinjen, brugte efter-sejladsen mindre. Er den samlede forskel opstået i ét enkelt spring (fx en opbremsning for trafik), skyldes den ikke skroget — så er parret reelt dårligt, uanset hvad match-scoren siger.
Effekt vs. fart er den reneste skrogtest i værktøjet: middel-effekt pr. halve knob. Et bedre skrog flytter hele kurven nedad. Rorindsats er summen af thruster-vinkelafvigelser og fanger hvor meget der blev arbejdet på at holde kursen — den kan forklare et merforbrug der intet har med skroget at gøre.
Data hentes først når du trykker Hent forløb (logfilerne er store), og gemmes i browseren resten af sessionen. Sæt Auto til hvis du vil have det hentet automatisk hver gang du åbner en par-detalje.
| # | Retning | FØR dato | EFTER dato | Vind m/s (f → e) | Retning° (f → e) | Vandstand cm (f → e) | Trend (f → e) | Propel RPM (f → e) | Distance nm (f → e) | FØR kWh | EFTER kWh | Δ% | Score |
|---|