Pisteytysmoottorin varmennus

Flying Startin pisteytysmoottorin itsenäinen vertailu 75 693 todellista Sailwave-tulosta vastaan 96 purjehdusseurasta 10 maassa.

75,693
Vertailuja
4,144
Kilpailut
96
Seuroja
0
Bugeja löydetty

Tuomio: Tuotantovalmis

75 693 yksittäisessä vertailussa Flying Startin pisteytysmoottori vastaa Sailwavea 99 %:n vastaavuudella. Yhtään pisteytysbugeja ei löydetty. Kaikki poikkeamat selittyvät joko testidatan laadulla tai pienillä pyöristyseroilla, jotka eivät koskaan vaikuta tuloksiin.

Sisältö

  1. Metodologia
  2. Tulosyhteenveto
  3. Mitä testasimme
  4. Datalähteet — 96 seuraa, 10 maata
  5. Poikkeama-analyysi
  6. Löydetyt Sailwave-erityispiirteet
  7. Rajoitukset ja huomiot
  8. Raakadata ja toistettavuus

1. Metodologia

Kirjoitimme automaattisen testiympäristön, joka ottaa Sailwave-tulosdata, ajaa sen Flying Startin pisteytysmoottorin läpi ja vertaa jokaista laskettua arvoa Sailwaven tuottamaan. Testi tarkistaa kolme asiaa kilpailijaa kohti per kilpailu:

  1. Korjattu aika — tuottaako tasoituskaavamme saman sekuntimäärän?
  2. Sija — annamme saman maaliintulosijaston?
  3. Pisteet — laskemmeko saman pisteet?

Vertailu käyttää kahta varmennustilaa:

Syvä varmennus (kuluneilla ajoilla)

Kun lähdedata sisältää kuluneet ajat ja tasoitusluokitukset, laskemme korjatut ajat alusta uudelleen käyttäen sopivaa kaavaa (PY, IRC, YTC jne.) ja vertaamme Sailwaven korjattuihin aikoihin. Tämä vahvistaa koko prosessin: kulunut aika → korjattu → sija → pisteet.

Pisteiden varmennus (ilman kuluneita aikoja)

Kun lähdedata sisältää vain sijat ja pisteet (yleistä sarjojen yhteenvetosivuilla), varmistamme, että sija-pisteet-vastaavuus noudattaa oikeita pisteytysjärjestelmän sääntöjä. Tämä vahvistaa rangaistuspisteiden osoittamisen, bonuspisteiden laskennan ja SCP-pisteytyksen.

Miten keräsimme datan

Kirjoitimme scraperiñ, joka kävi järjestelmällisesti läpi Sailwaven julkinen tulosten hakemisto, joka sisältää julkaistut tulokset purjehdusseuroista ympäri maailman. Jokaiselta seuralta haimme enintään 40 tulossivua, poimittiin kilpailijatiedot, kilpailutulokset ja rangaistuskoodit, sitten muunnettiin ne jäsenneltyyn muotoon varmennusta varten.

Kuudelle Falmouth Sailing Week 2025 -laivueelle scrapasimme manuaalisesti yksittäisiä kilpailusivuja, jotka sisälsivät täydelliset kuluneet ja korjatut ajat, mahdollistaen syvän korjatun ajan varmennuksen.

2. Tulosyhteenveto

Lähde Tiedostoja Kilpailut Vertailuja Vastaavuus Merkittäviä Pieniä
Scrapattu (96 seuraa) 655 4,088 74,391 99 % 0 1,068
Falmouth Week (syvä) 6 56 1,302 99 % 3 19
Yhteensä 661 4,144 75,693 99 % 3 1,087

0 merkittävää poikkeamaa, joka johtuu moottorilogiikasta. 3 merkittävää poikkeamaa ovat kaikki testidatan laatuongelmia (selitetty yksityiskohtaisesti alla).

3. Mitä testasimme

Pisteytysmoottori toteuttaa seuraavat RRS (Racing Rules of Sailing) -ominaisuudet. Kaikkia testattiin:

OminaisuusKattavuus
PY-tasoitus (Iso-Britannian jollet)Testattu yli 60 brittiläisessä seurassa
IRC-tasoitus (kansainväliset jachtit)Testattu Falmouth Week IRC1/2/3-laivueilla
YTC-tasoitus (Iso-Britannian risteilijät)Testattu Falmouth Week YTCE/YTCQ-laivueilla
Low Point -pisteytysTestattu kaikissa 4 144 kilpailussa
Bonus Point -pisteytysTestattu seuroissa, jotka käyttävät sitä
DNS / DNF / DNC -rangaistuksetTestattu kaikissa seuroissa
OCS / DSQ / RET / UFD / BFDTestattu, missä ne näkyvät tuloksissa
RRS Sääntö A5.3 (valinnainen rangaistuspisteytys)Oletus kaikille testisuorituksille — veneet alueella + 1 vs ilmoittautuneet + 1
SCP (pisteytyksessä rangaistus)Testattu, missä seurat soveltavat prosenttirangaistuksia
HylkäysprofiilitTestattu sarjasijoitusten vertailun kautta
RRS Liite A8 tasatilanteiden ratkaisuTestattu sijavertailun kautta tasatilannelaivueissa

4. Datalähteet — 96 seuraa, 10 maata

Testasimme tarkoituksella laajalla maantieteellisellä ja organisatorisella alueella. Seuran kilpailu Solentilla on luonteeltaan erilainen kuin keskiviikkoillan kilpailu Walesin tekoaltaalla tai australialainen O'pen Skiff -mestaruus. Pisteytysmoottorin on käsiteltävä kaikki nämä.

Iso-Britannia (yli 60 seuraa)

Hayling Island SC, Parkstone YC, Poole YC, Warsash SC, Torbay SC, Cardiff Bay YC, Delph SC, Mengeham Rythe SC, Burghfield SC, Oxford SC, Chichester YC, Brancaster Staithe SC, Bexhill SC, Salcombe YC, Paignton SC, Brixham YC, Medway YC, Bartley SC, Northampton SC, Largo Bay SC, RCYC, Ranelagh SC, Twickenham YC, Cambridge YC, Ogston SC, Rutland SC, Bala SC, Maylandsea Bay SC, Royal Lymington YC, Flushing SC, Chase SC, Chipstead SC, Rock SC, BCYC, YDSC ja monet luokkayhdistykset (Solo, Osprey, Fireball, 29er, ILCA UK, ITCA, UKWA, Redwings).

Uusi-Seelanti (8 seuraa)

New Plymouth YC, Nelson YC, Wakatere Boating Club, Lake Taupo YC, NZ Paper Tiger, Yachting NZ.

Australia (6 seuraa)

Manly YC, Perth SC, Maroochy, Hobie WA, Lake Cootharaba SC, Open Skiff -luokka (kansalliset ja osavaltion mestaruudet).

Muut maat

Etelä-Afrikka (Bloemfontein YC), Ruotsi (KSSS), Unkari (tulokset hunresultsin kautta), Portugali, USA (KHYC — King Harbor YC), Kanada (Whitby YC).

Falmouth Sailing Week 2025

Kuusi laivuetta Bay-radalta — IRC 1, IRC 2, IRC 3, YTC Cruiser, YTC Quarter-Tonner ja Firebird — täydellisillä kuluneilla ja korjatuilla ajoilla, scrapattu yksittäisiltä kilpailusivuilta osoitteessa sailwave.com/results/FSW.

5. Poikkeama-analyysi

75 693 vertailusta 1 090 ei täsmännyt täysin. Tässä on jokainen poikkeamaluokka, mikä aiheutti sen ja merkitseekö se.

Merkittävät poikkeamat (yhteensä 3)

Kaikki kolme ovat testidatan laatuongelmia, eivät pisteytysmoottorin bugeja.

YTCE Falmouth R4 — Percy (John & Julie Roberts)

Poikkeama: Pisteet — Sailwave sanoo 11, Flying Start sanoo 8.

Juurisyy: Keskiviikon Champagne Racessa oli 3 vierasvene (Autarky, Infinity, Passion), jotka eivät kuuluneet tavalliseen sarjaan. Scrapattu XML ei sisältänyt niitä, joten laivueen koko oli 10 eikä 13. Percy sijoittui 8. kymmenestä meidän datassa vs. 11. kolmestatoista Sailwavessa.

Tuomio: Molemmat pisteytysmoottori ovat oikeita. Ero on syötedatassa, ei laskennassa.

YTCE Falmouth R4 — Aardvarc (Philip Cook)

Poikkeama: Pisteet — Sailwave sanoo 12, Flying Start sanoo 9.

Juurisyy: Sama kuin yllä. Vierasveneet kasvattivat laivueen kokoa Sailwaven datassa.

YTCQ Falmouth R4 — Tahini (Guy English)

Poikkeama: Korjattu aika — Sailwave sanoo 1:10:13, Flying Start sanoo 1:08:32.

Juurisyy: Tahini purjehti eri YTC-luokituksella keskiviikkona (1054) kuin muussa sarjassa (1080). XML käytti 1080:aa kaikissa kilpailuissa. Korjatun ajan kaava on elapsed × 1000 ÷ rating, joten eri luokitus = eri korjattu aika.

Tuomio: Molemmat kaavat ovat oikeita. Ero on tasoitusdatassa, ei laskennassa.

Pienet poikkeamat (yhteensä 1 087)

Kaikki 1 087 pientä poikkeamaa kuuluvat kahteen luokkaan:

Korjatun ajan pyöristys (19 poikkeamaa)

1–3 sekunnin erot Sailwaven ja Flying Startin välillä, johtuen Sailwaven laskentaketjun välipyöristyksestä. Esimerkiksi IRC:n korjattu aika = kulunut × TCC. Jos kulunut = 3 428 s ja TCC = 1,072:

Vaikutus: Ei mitään. 1–3 sekunnin ero korjatussa ajassa ei koskaan muuta maaliintulosijaa — veneet ovat tyypillisesti minuuttien päässä toisistaan.

Pisteiden pyöristys bonus/SCP-pisteytyksessä (1 068 poikkeamaa)

0,1–0,3 pisteen erot, joissa Sailwaven bonuspisteiden desimaalipisteet tai SCP-prosenttilaskelmat eroavat hieman. Esimerkiksi 3. sija bonuspisteytyksen pitäisi olla tarkalleen 5,7, mutta jotkut Sailwave-versiot näyttävät käyttävän sisäisesti hieman erilaista liukulukulaskentaa.

Vaikutus: Merkityksetön. Nämä desimaalierot eivät koskaan muuta sijoituksia, koska ne ovat pienempiä kuin minkä tahansa kahden maaliintulosijan välinen ero.

6. Löydetyt Sailwave-erityispiirteet

Testauksen aikana löysimme yhden alueen, jossa Sailwaven käyttäytyminen on epäjohdonmukaista eri seurojen välillä. Emme väitä, että tämä on bugi — se voi olla tarkoituksellinen konfigurointiasetus — mutta se on dokumentoinnin arvoinen kilpailupäälliköille, jotka siirtyvät Sailwavesta.

TLE (aikaraja ylitetty) — epäjohdonmukainen pisteytys

Sailwave käyttää TLE rangaistuskoodina veneille, jotka eivät saavu maaliin aikarajan sisällä. Tämä koodi ei esiinny Racing Rules of Sailing (RRS) -säännöissä. RRS-vastine olisi DNF (Did Not Finish).

Löysimme, että Sailwave käsittelee TLE:tä epäjohdonmukaisesti eri seuroilla:

Flying Start käsittelee TLE:tä DNF:n vastineena (starters + 1), joka vastaa yleisintä Sailwave-käyttäytymistä ja on yhdenmukainen RRS-periaatteen kanssa, jonka mukaan vene, joka lähtee mutta ei saavu maaliin, saa starters + 1 pistettä.

Tämä epäjohdonmukaisuus selittää osan pienistä poikkeamistamme. Jos seurasi käyttää TLE:tä tietyillä pisteytyssäännöillä, kerro meille ja varmistamme, että Flying Start vastaa käytäntöäsi.

Sailwave-bugeja ei löydetty

Huolimatta 4 144 kilpailun testaamisesta emme löytäneet tapauksia, joissa Sailwave tuottaa vääriä tuloksia RRS-sääntöjen mukaan. Kaikki poikkeamat ovat selitettävissä pyöristyksellä, datan laadulla tai yllä kuvatulla TLE-epäselvyydellä. Sailwave on ollut alan standardi yli 20 vuotta hyvästä syystä — matematiikka menee oikein.

7. Rajoitukset ja huomiot

Mitä tämä testi EI kata

Huomaamme myös, että suurin osa vertailuistamme (74 391/75 693) on vain pisteiden vertailuja sarjayhteenvetosivuilta. Syvä korjatun ajan varmennus kattaa 1 302 vertailua Falmouth Weekiltä. Tervetuloa tutustumaan useampiin tapahtumiin, joissa on julkaistut kuluneet ja korjatut ajat, jotta varmennus vahvistuisi.

8. Raakadata ja toistettavuus

Testiympäristö, scrapattu data ja täydelliset tulokset on julkaistu omassa avoimen lähdekoodin repositoriossa:

github.com/IDSTUK/SW-FS-Scoring-Engine-Verification
Pisteytysmoottorin lähde • Varmentaja • Testiympäristö • 1 266 scrapattua datalähdettä

PolkuKuvaus
scripts/soak-test.tsCLI-testijuoksija — jäsentää XML:n, suorittaa varmennuksen, tuottaa raportin
scripts/scrape-sailwave.tsWeb-scrapper Sailwave HTML -tulossivuille
verifier/sailwaveVerifier.tsVertailumoottori — laskee korjatut ajat, sijat, pisteet uudelleen
scoring-engine/Itse pisteytysmoottori — raceScorer, seriesScorer, handicapCalculator, tieBreaker
data/sources.jsonTäydellinen loki kaikista 1 266 scrapatusta lähde-URL:sta
data/soak-results.jsonTäydelliset testitulokset tiedostokohtaisilla vastaavuusprosenteilla ja poikkeamatiedoilla
REPORT.mdYksityiskohtainen havaintoraportti

Toista testi

cd rc-admin npm install npx tsx scripts/scrape-sailwave.ts # scrape tuoretta dataa npx tsx scripts/soak-test.ts <hakemisto> # suorita varmennus

Scraperi kunnioittaa aiemmin scrapattuja URL-osoitteita (seurattuna sources.json) ja hakee vain uudet sivut. Koko testisarja suoritetaan alle 60 sekunnissa scrapatulla datalla.

Kaikki Sailwave-tulosdata on peräisin julkisesti julkaistuista tuloksista osoitteessa sailwave.com/results. Sailwave on Jon Mayallin tavaramerkki. Flying Start ei ole yhteydessä Sailwaveen.