Επαλήθευση Μηχανής Βαθμολόγησης

Ανεξάρτητη σύγκριση της μηχανής βαθμολόγησης Flying Start έναντι 75.693 πραγματικών αποτελεσμάτων Sailwave από 96 ιστιοπλοϊκούς ομίλους σε 10 χώρες.

75,693
Συγκρίσεις
4,144
Αγώνες
96
Σύλλογοι
0
Σφάλματα Βρέθηκαν

Ετυμηγορία: Έτοιμο για Παραγωγή

Σε 75.693 μεμονωμένες συγκρίσεις, η μηχανή βαθμολόγησης Flying Start αντιστοιχεί στο Sailwave με ποσοστό αντιστοίχισης 99%. Δεν βρέθηκαν σφάλματα βαθμολόγησης. Όλες οι αναντιστοιχίες εξηγούνται είτε από την ποιότητα δεδομένων δοκιμών είτε από μικρές διαφορές στρογγυλοποίησης που δεν επηρεάζουν ποτέ αποτελέσματα.

Περιεχόμενα

  1. Μεθοδολογία
  2. Σύνοψη Αποτελεσμάτων
  3. Τι Δοκιμάσαμε
  4. Πηγές Δεδομένων — 96 Σύλλογοι, 10 Χώρες
  5. Ανάλυση Αναντιστοιχιών
  6. Ιδιαιτερότητες Sailwave που Ανακαλύφθηκαν
  7. Περιορισμοί & Επιφυλάξεις
  8. Ακατέργαστα Δεδομένα & Αναπαραγωγιμότητα

1. Μεθοδολογία

Γράψαμε ένα αυτοματοποιημένο πλαίσιο δοκιμών που λαμβάνει δεδομένα αποτελεσμάτων Sailwave, τα εκτελεί μέσω της μηχανής βαθμολόγησης Flying Start και συγκρίνει κάθε υπολογισμένη τιμή με αυτό που παρήγαγε το Sailwave. Η δοκιμή ελέγχει τρία πράγματα ανά διαγωνιζόμενο ανά αγώνα:

  1. Διορθωμένος χρόνος — παράγει ο τύπος χάντικαπ μας τον ίδιο αριθμό δευτερολέπτων;
  2. Θέση — αναθέτουμε την ίδια θέση τερματισμού;
  3. Βαθμοί — υπολογίζουμε την ίδια βαθμολογία;

Η σύγκριση χρησιμοποιεί δύο λειτουργίες επαλήθευσης:

Βαθιά επαλήθευση (με παρελθόντες χρόνους)

Όταν τα δεδομένα πηγής περιλαμβάνουν παρελθόντες χρόνους και αξιολογήσεις χάντικαπ, επαναϋπολογίζουμε διορθωμένους χρόνους από την αρχή χρησιμοποιώντας τον κατάλληλο τύπο (PY, IRC, YTC κ.λπ.) και συγκρίνουμε με τους διορθωμένους χρόνους του Sailwave. Αυτό επαληθεύει ολόκληρο τον αγωγό: παρελθόντας → διορθωμένος → θέση → βαθμοί.

Επαλήθευση βαθμών (χωρίς παρελθόντες χρόνους)

Όταν τα δεδομένα πηγής περιλαμβάνουν μόνο θέσεις και βαθμούς (συνηθισμένο σε σελίδες σύνοψης σειράς), επαληθεύουμε ότι η αντιστοίχιση θέσης-σε-βαθμούς ακολουθεί τους σωστούς κανόνες συστήματος βαθμολόγησης. Αυτό επαληθεύει την ανάθεση ποινής βαθμών, τους υπολογισμούς bonus βαθμών και τη βαθμολόγηση SCP.

Πώς συλλέξαμε τα δεδομένα

Γράψαμε ένα scraper που συστηματικά ανίχνευσε τον δημόσιο κατάλογο αποτελεσμάτων Sailwave, ο οποίος φιλοξενεί δημοσιευμένα αποτελέσματα από ιστιοπλοϊκούς ομίλους παγκοσμίως. Για κάθε σύλλογο, λάβαμε έως 40 σελίδες αποτελεσμάτων, εξήγαμε δεδομένα διαγωνιζομένων, αποτελέσματα αγώνων και κώδικες ποινών, στη συνέχεια τα μετατρέψαμε σε δομημένη μορφή για επαλήθευση.

Για έξι στόλους Falmouth Sailing Week 2025, scraped χειροκίνητα μεμονωμένες σελίδες αγώνων που περιλάμβαναν πλήρεις παρελθόντες και διορθωμένους χρόνους, επιτρέποντας βαθιά επαλήθευση διορθωμένου χρόνου.

2. Σύνοψη Αποτελεσμάτων

Πηγή Αρχεία Αγώνες Συγκρίσεις Αντιστοίχιση Κύρια Δευτερεύοντα
Scraped (96 σύλλογοι) 655 4,088 74,391 99% 0 1,068
Falmouth Week (βαθιά) 6 56 1,302 99% 3 19
Σύνολο 661 4,144 75,693 99% 3 1,087

0 κύριες αναντιστοιχίες από λογική μηχανής. Οι 3 κύριες αναντιστοιχίες είναι όλες προβλήματα ποιότητας δεδομένων στα δεδομένα δοκιμών μας (εξηγούνται λεπτομερώς παρακάτω).

3. Τι Δοκιμάσαμε

Η μηχανή βαθμολόγησης υλοποιεί τα ακόλουθα χαρακτηριστικά RRS (Κανόνες Αγώνων Ιστιοπλοΐας). Όλα εξασκήθηκαν κατά τη διάρκεια δοκιμών:

ΛειτουργίαΚάλυψη
Χάντικαπ PY (βρετανικά dinghy)Δοκιμάστηκε σε 60+ βρετανικούς ομίλους
Χάντικαπ IRC (διεθνή γιοτ)Δοκιμάστηκε με στόλους Falmouth Week IRC1/2/3
Χάντικαπ YTC (βρετανικά cruiser)Δοκιμάστηκε με στόλους Falmouth Week YTCE/YTCQ
Βαθμολόγηση Χαμηλού ΒαθμούΔοκιμάστηκε σε όλους τους 4.144 αγώνες
Βαθμολόγηση Bonus ΒαθμούΔοκιμάστηκε όπου το χρησιμοποιούν οι σύλλογοι
Ποινές DNS / DNF / DNCΔοκιμάστηκε σε όλους τους ομίλους
OCS / DSQ / RET / UFD / BFDΔοκιμάστηκε όπου εμφανίζονται στα αποτελέσματα
Κανόνας RRS A5.3 (προαιρετική βαθμολόγηση ποινής)Προεπιλογή για όλες τις δοκιμαστικές εκτελέσεις — σκάφη στην περιοχή + 1 έναντι εγγεγραμμένοι + 1
SCP (ποινή βαθμολόγησης)Δοκιμάστηκε όπου οι σύλλογοι εφαρμόζουν ποινές ποσοστού
Προφίλ αποκλεισμούΔοκιμάστηκε μέσω σύγκρισης κατατάξεων σειράς
Σπάσιμο ισοβαθμίας Παραρτήματος A8 RRSΔοκιμάστηκε μέσω σύγκρισης θέσεων σε ισόβαθμους στόλους

4. Πηγές Δεδομένων — 96 Σύλλογοι, 10 Χώρες

Δοκιμάσαμε σκόπιμα σε ένα ευρύ γεωγραφικό και οργανωτικό φάσμα. Οι αγώνες ομίλου στο Solent έχουν διαφορετικά χαρακτηριστικά από τους βραδινούς αγώνες της Τετάρτης σε ουαλικό ταμιευτήρα ή σε πρωτάθλημα Australian O'pen Skiff. Η μηχανή βαθμολόγησης πρέπει να τα χειρίζεται όλα.

Ηνωμένο Βασίλειο (60+ σύλλογοι)

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, και πολλές ενώσεις κλάσεων (Solo, Osprey, Fireball, 29er, ILCA UK, ITCA, UKWA, Redwings).

Νέα Ζηλανδία (8 σύλλογοι)

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

Αυστραλία (6 σύλλογοι)

Manly YC, Perth SC, Maroochy, Hobie WA, Lake Cootharaba SC, κλάση Open Skiff (εθνικά και κρατικά πρωταθλήματα).

Άλλες χώρες

Νότια Αφρική (Bloemfontein YC), Σουηδία (KSSS), Ουγγαρία (αποτελέσματα μέσω hunresults), Πορτογαλία, ΗΠΑ (KHYC — King Harbor YC), Καναδάς (Whitby YC).

Falmouth Sailing Week 2025

Έξι στόλοι από την πορεία Bay — IRC 1, IRC 2, IRC 3, YTC Cruiser, YTC Quarter-Tonner και Firebird — με πλήρεις παρελθόντες και διορθωμένους χρόνους scraped από μεμονωμένες σελίδες αγώνων που φιλοξενούνται στο sailwave.com/results/FSW.

5. Ανάλυση Αναντιστοιχιών

Από τις 75.693 συγκρίσεις, 1.090 δεν αντιστοιχούσαν ακριβώς. Εδώ είναι κάθε κατηγορία αναντιστοιχίας, τι την προκάλεσε και αν έχει σημασία.

Κύριες αναντιστοιχίες (3 συνολικά)

Και οι τρεις είναι προβλήματα ποιότητας δεδομένων στα δεδομένα δοκιμών μας, όχι σφάλματα μηχανής βαθμολόγησης.

YTCE Falmouth R4 — Percy (John & Julie Roberts)

Αναντιστοιχία: Βαθμοί — Το Sailwave λέει 11, το Flying Start λέει 8.

Βαθύτερη αιτία: Ο Αγώνας Σαμπάνιας της Τετάρτης είχε 3 σκάφη-επισκέπτες (Autarky, Infinity, Passion) που δεν ήταν στη συνήθη σειρά. Το scraped XML μας δεν τα συμπεριλάμβανε, οπότε το μέγεθος στόλου ήταν 10 αντί για 13. Το Percy τερμάτισε 8ο από 10 στα δεδομένα μας έναντι 11ου από 13 στο Sailwave.

Ετυμηγορία: Και οι δύο μηχανές βαθμολόγησης είναι σωστές. Η διαφορά βρίσκεται στα δεδομένα εισόδου, όχι στον υπολογισμό.

YTCE Falmouth R4 — Aardvarc (Philip Cook)

Αναντιστοιχία: Βαθμοί — Το Sailwave λέει 12, το Flying Start λέει 9.

Βαθύτερη αιτία: Ίδιο με παραπάνω. Τα σκάφη-επισκέπτες διόγκωσαν το μέγεθος στόλου στα δεδομένα του Sailwave.

YTCQ Falmouth R4 — Tahini (Guy English)

Αναντιστοιχία: Διορθωμένος χρόνος — Το Sailwave λέει 1:10:13, το Flying Start λέει 1:08:32.

Βαθύτερη αιτία: Το Tahini έπλευσε με διαφορετική αξιολόγηση YTC την Τετάρτη (1054) από ό,τι στην υπόλοιπη σειρά (1080). Το XML μας χρησιμοποίησε 1080 για όλους τους αγώνες. Ο τύπος διορθωμένου χρόνου είναι elapsed × 1000 ÷ rating, οπότε διαφορετική αξιολόγηση = διαφορετικός διορθωμένος χρόνος.

Ετυμηγορία: Και οι δύο τύποι είναι σωστοί. Η διαφορά βρίσκεται στα δεδομένα χάντικαπ, όχι στον υπολογισμό.

Δευτερεύουσες αναντιστοιχίες (1.087 συνολικά)

Όλες οι 1.087 δευτερεύουσες αναντιστοιχίες εμπίπτουν σε δύο κατηγορίες:

Στρογγυλοποίηση διορθωμένου χρόνου (19 αναντιστοιχίες)

Διαφορές 1–3 δευτερολέπτων μεταξύ Sailwave και Flying Start, που προκαλούνται από ενδιάμεση στρογγυλοποίηση στην αλυσίδα υπολογισμού του Sailwave. Για παράδειγμα, διορθωμένος χρόνος IRC = παρελθόντας × TCC. Αν παρελθόντας = 3.428 δ. και TCC = 1,072:

Επίπτωση: Καμία. Μια διαφορά 1–3 δευτερολέπτων στον διορθωμένο χρόνο δεν αλλάζει ποτέ θέση τερματισμού — τα σκάφη συνήθως χωρίζονται ανά λεπτά.

Στρογγυλοποίηση βαθμών στη βαθμολόγηση bonus/SCP (1.068 αναντιστοιχίες)

Διαφορές 0,1–0,3 βαθμών όπου οι κλασματικές βαθμολογίες bonus βαθμού ή οι υπολογισμοί ποσοστού SCP του Sailwave διαφέρουν ελαφρώς. Για παράδειγμα, η 3η θέση στη βαθμολόγηση bonus βαθμού πρέπει να είναι ακριβώς 5,7, αλλά ορισμένες εκδόσεις Sailwave φαίνεται να χρησιμοποιούν ελαφρώς διαφορετική ακρίβεια κινητής υποδιαστολής εσωτερικά.

Επίπτωση: Αμελητέο. Αυτές οι κλασματικές διαφορές δεν αλλάζουν ποτέ κατατάξεις επειδή είναι μικρότερες από το χάσμα μεταξύ οποιωνδήποτε δύο θέσεων τερματισμού.

6. Ιδιαιτερότητες Sailwave που Ανακαλύφθηκαν

Κατά τη διάρκεια δοκιμών, βρήκαμε μία περιοχή όπου η συμπεριφορά του Sailwave είναι ασυνεπής μεταξύ ομίλων. Δεν ισχυριζόμαστε ότι αυτό είναι σφάλμα — μπορεί να είναι εκούσια επιλογή ρύθμισης — αλλά αξίζει να τεκμηριωθεί για αξιωματικούς αγώνα που μεταναστεύουν από το Sailwave.

TLE (Υπέρβαση Χρονικού Ορίου) — ασυνεπής βαθμολόγηση

Το Sailwave χρησιμοποιεί TLE ως κωδικό ποινής για σκάφη που δεν τερματίζουν εντός του χρονικού ορίου. Αυτός ο κωδικός δεν εμφανίζεται στους Κανόνες Αγώνων Ιστιοπλοΐας (RRS). Το ισοδύναμο RRS θα ήταν DNF (Δεν Τερμάτισε).

Βρήκαμε ότι το Sailwave αντιμετωπίζει TLE ασυνεπώς σε διαφορετικούς ομίλους:

Το Flying Start αντιμετωπίζει TLE ως ισοδύναμο με DNF (starters + 1), το οποίο αντιστοιχεί στην πιο συνηθισμένη συμπεριφορά Sailwave και ευθυγραμμίζεται με την αρχή RRS ότι ένα σκάφος που εκκινεί αλλά δεν τερματίζει λαμβάνει starters + 1 βαθμούς.

Αυτή η ασυνέπεια αποτελεί μέρος των δευτερευουσών αναντιστοιχιών μας. Αν ο σύλλογός σου χρησιμοποιεί TLE με συγκεκριμένους κανόνες βαθμολόγησης, παρακαλούμε ενημέρωσέ μας και θα διασφαλίσουμε ότι το Flying Start αντιστοιχεί στην πρακτική σου.

Δεν βρέθηκαν σφάλματα Sailwave

Παρά τη δοκιμή 4.144 αγώνων, δεν βρήκαμε περιπτώσεις όπου το Sailwave παράγει λανθασμένα αποτελέσματα σύμφωνα με τους κανόνες RRS. Όλες οι αναντιστοιχίες εξηγούνται από στρογγυλοποίηση, ποιότητα δεδομένων ή την ασάφεια TLE που περιγράφεται παραπάνω. Το Sailwave είναι το πρότυπο του κλάδου για 20+ χρόνια για καλό λόγο — κάνει σωστά τα μαθηματικά.

7. Περιορισμοί & Επιφυλάξεις

Τι ΔΕΝ καλύπτει αυτή η δοκιμή

Σημειώνουμε επίσης ότι η πλειοψηφία των συγκρίσεών μας (74.391 από 75.693) είναι συγκρίσεις μόνο βαθμών από σελίδες σύνοψης σειράς. Η βαθιά επαλήθευση διορθωμένου χρόνου καλύπτει 1.302 συγκρίσεις από το Falmouth Week. Θα χαιρετίζαμε πρόσβαση σε περισσότερες εκδηλώσεις με δημοσιευμένους παρελθόντες και διορθωμένους χρόνους για να ενισχύσουμε αυτή την επαλήθευση.

8. Ακατέργαστα Δεδομένα & Αναπαραγωγιμότητα

Το πλαίσιο δοκιμών, τα scraped δεδομένα και τα πλήρη αποτελέσματα δημοσιεύονται σε έναν αποκλειστικό αποθετήριο ανοιχτού κώδικα:

github.com/IDSTUK/SW-FS-Scoring-Engine-Verification
Πηγή μηχανής βαθμολόγησης • Επαληθευτής • Πλαίσιο δοκιμών • 1.266 scraped πηγές δεδομένων

ΔιαδρομήΠεριγραφή
scripts/soak-test.tsΕκτελεστής δοκιμών CLI — αναλύει XML, εκτελεί επαλήθευση, παράγει έκθεση
scripts/scrape-sailwave.tsWeb scraper για σελίδες HTML αποτελεσμάτων Sailwave
verifier/sailwaveVerifier.tsΗ μηχανή σύγκρισης — επαναϋπολογίζει διορθωμένους χρόνους, θέσεις, βαθμούς
scoring-engine/Η ίδια η μηχανή βαθμολόγησης — raceScorer, seriesScorer, handicapCalculator, tieBreaker
data/sources.jsonΠλήρες αρχείο καταγραφής όλων των 1.266 scraped URL πηγών
data/soak-results.jsonΠλήρη αποτελέσματα δοκιμών με ποσοστά αντιστοίχισης ανά αρχείο και λεπτομέρειες αναντιστοιχιών
REPORT.mdΛεπτομερής έκθεση ευρημάτων

Αναπαραγωγή της δοκιμής

cd rc-admin npm install npx tsx scripts/scrape-sailwave.ts # scrape νέα δεδομένα npx tsx scripts/soak-test.ts <directory> # εκτέλεση επαλήθευσης

Το scraper σέβεται προηγουμένως scraped URL (παρακολουθούνται στο sources.json) και θα λαμβάνει μόνο νέες σελίδες. Ολόκληρη η σειρά δοκιμών εκτελείται σε λιγότερο από 60 δευτερόλεπτα στα scraped δεδομένα.

Όλα τα δεδομένα αποτελεσμάτων Sailwave ελήφθησαν από δημόσια δημοσιευμένα αποτελέσματα στο sailwave.com/results. Το Sailwave είναι εμπορικό σήμα του Jon Mayall. Το Flying Start δεν συνδέεται με το Sailwave.