Henter trip_stats...

GROTTE — Matchede Sejladser

Fanølinjen · Før/efter ombygning · Automatisk matching på vind, vandstand og retning

Parametre

Datoen ombygningen blev afsluttet
Maks antal efter-sejladser vi prøver at matche
Indexer producerer typisk kun ROUND
Tærskel: ±5 cm over sejladsen

Vægtning & tolerance

Tolerance = hvor stor afvigelse der "koster" 1 score-point. Vægt = hvor vigtig parameteren er i den samlede score. Lavere total-score = bedre match.
Vindstyrke ± 2.0 m/s vægt
Vindretning ± 45° vægt
Vandstand ± 30 cm vægt
Propel-RPM ± 20 RPM vægt
Max score ≤ 2.0 par over denne tærskel forkastes
Tryk "Find matches" for at køre analysen.

Hvordan virker matchingen?

Hvorfor matche overhovedet?

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.

Score-formlen

For hvert par (efter ↔ før) beregnes for hver parameter:

bidrag = |a − b| / tolerance × vægt

Den samlede match-score er summen af alle bidrag:

score = Σ bidrag

Lavere 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 vs. vægt — to forskellige skruer

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:

  • 0 m/s forskel → 0.00 point
  • 1 m/s forskel → 0.50 point
  • 2 m/s forskel → 1.00 point
  • 4 m/s forskel → 2.00 point

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:

  • 0.5 m/s afvigelse, vægt 2.0 → 0.5/2 × 2 = 0.5
  • 1.0 m/s afvigelse, vægt 1.0 → 1.0/2 × 1 = 0.5
Huskeregel: juster tolerancen for at definere hvad der overhovedet er en betydelig forskel; juster vægten for at vægte parametre mod hinanden.

De fire parametre — hvad de fanger

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.

De hårde filtre — retning og trend

To ting kører udenom score-formlen som binære filtre:

  • Sejladsretning (E2F / F2E / ROUND): en E2F-sejlads kan aldrig matches med en F2E-sejlads. De er fysisk forskellige ture.
  • Vandstandstrend: hvis du vælger "Kræv samme trend i par", matches flod kun med flod og ebbe kun med ebbe. En sejlads under stigende vand er fysisk forskellig fra én under faldende — selv om gennemsnitlig vandstand skulle være ens.

Begge filtre afgør hvilke par der overhovedet er kandidater. De påvirker ikke score-tallet.

Manglende data og vægt-0-tricket

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".

Max-score — afvisningstærsklen

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).

Hvorfor greedy?

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.

Et konkret eksempel

Tag fx et par hvor begge sejladser var rundture under ret ens forhold:

Parameter Før Efter |Δ| Tolerance Vægt Bidrag
Vindstyrke5.1 m/s5.2 m/s0.1±2.01.00.05
Vindretning239°244°±451.00.11
Vandstand−76.2 cm−79.5 cm3.3±301.00.11
Propel-RPM2532530±201.00.00
Total match-score0.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.

Tuning-opskrift

  • Start neutralt. Alle vægte = 1.0, max-score = 2.0. Kør og se hvad du får.
  • Tjek gennemsnitsscoren. Under 0.5 = meget strenge; 0.5–1.0 = fornuftige; over 1.0 = noget løse matches.
  • Klik en række med høj score og se på score-nedbrydningen i detaljemodal'en. Hvilken parameter dominerer bidraget? Det fortæller dig hvor du skal skrue.
  • For få par tilbage? Hæv max-score eller udvid tolerancerne — i den rækkefølge. Max-score er den mindst ødelæggende knap.
  • Matchene ser fysisk forkerte ud? (Fx en frisk vinterdag matchet med en lummer sommerdag.) Stram tolerancerne.
Forslag til Fanølinjen: vægt vandstand og propel-RPM lidt højere (1.5) end vind (1.0) og vindretning (0.5), fordi sejlrenden er smal og dybde-effekter er markante.

Begrænsninger man skal være opmærksom på

  • Det er stadig korrelation, ikke kausation. Hvis du skiftede skibsfører kort efter ombygningen, vil "matchede" sejladser stadig vise en effekt der er en blanding af skrog og fører. Matchingen kan kun fjerne forskelle i de parametre du måler på.
  • Gennemsnit skjuler dynamik. To sejladser med samme gennemsnits-vind kan stadig være helt forskellige — én med stabile 5 m/s, én der svinger mellem 1 og 10.
  • Tidevand er kompliceret. Trend (stigende/faldende/stabil) fanger noget, men ikke alt. To "stigende vand"-sejladser kan være på forskellige punkter i cyklussen, hvor strømmen er meget forskellig.
  • Sample size betyder noget. 10 par viser en tendens, men ikke statistisk signifikans hvis effekten er lille (fx 4%). 30+ par eller en t-test på Δ%-fordelingen giver mere troværdige tal.

Opsummering

Energi pr. matchet par (kWh)

Procent-ændring pr. par

Energi vs. vindstyrke

Energi vs. vandstand

Matchede par (sortéret efter match-score) — klik på en række for detaljer
# 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) FØR kWh EFTER kWh Δ% Score Detalje