Een uitdagend vraagstuk over een speelschema genereren

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • pastafan
  • Registratie: Februari 2013
  • Laatst online: 19-09 10:44
ik heb het volgende vraagstuk:

Het gaat om het genereren van een speelschema, en dan specifiek het samenstellen van koppels, verspreid over meerdere speelvelden in speelrondes. Hierbij te voldoen aan een aantal voorwaarden.

Het uiteindelijke doel is dat de "deelnemer x" worden door de formules worden ingevuld met namen uit de deelnemers in de tab Uitkomst. Inclusief niet spelende spelers.
Waarbij uiteraard zoveel mogelijk aan de voorwaarden wordt voldaan.
Als "bonus" misschien nog aan te geven aan welke voorwaarden niet kan worden voldaan (de voorwaarden zijn genummerd).

Een en ander is verder uitgewerkt in de bijlagen:

Afbeeldingslocatie: https://tweakers.net/i/2YOQCo18GMl93o3QIcf-QY9lsTA=/800x/filters:strip_exif()/f/image/xR9J4pvWFlUFACCD62XRA4yf.png?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/MV-gC-7bDuj2hkAIw1E8lDRg-HI=/800x/filters:strip_exif()/f/image/xESZ2vQPhkFbkRskWJaY8tLM.png?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/OJ_BoGHvz8rIXcXtjCD1mq137n4=/800x/filters:strip_exif()/f/image/90rPTBVOi1sTne975JxZD2wS.png?f=fotoalbum_large

edit: Ik heb Copilot al geprobeerd maar dat geeft in dit geval geen bevredigde resultaten (4 keer tegen dezelfde tegenstander - dat moet toch beter kunnen)

[ Voor 4% gewijzigd door pastafan op 16-08-2024 20:01 ]

Beste antwoord (via pastafan op 23-08-2024 18:23)


  • GRDavies75
  • Registratie: December 2014
  • Laatst online: 10:00

GRDavies75

PSN-id: GRDavies

Ik had andere prioriteiten, maar bedankt voor het puzzeltje. En TL;DR er is geen oplossing vanwege jouw restricties,

Echter het hangt natuurlijk ook af in hoeverre je het bij de deelnemers weet te verkopen / uitleggen en misschien kan je al bij voorhand vragen wie er geen bezwaren heeft etc. want het schema wat ik ga voorstellen voldoet voor bijna het hele 'toernooi'

Ik heb het niet over de wiskundige onmogelijkheid dat je 4 banen hebt, met 4 mensen er dus per ronde 3 mensen aan de kant zitten (dus hun rustronde hebben) en 4 rondes à 3 mensen zijn 12 mensen en dat is niet 19, dus je zou in ieder geval kunnen polsen of er mensen zijn die geen problemen hebben om 4 x te spelen en/of misschien juist maar 3 keer max willen spelen. Het is aangegeven en zou je rekening mee kunnen houden.

Zonder de restricties zoals 2 x mv koppeltjes zou je 20! / (16! * 4!) = 4845 unieke combinaties hebben, maar door deze restrctie hou je uiteindelijk 2025 unieke combinaties over. En waar je zou verwachten daar moet je wel 4 rondes uit weten te distilleren, helaas 3 rondes en 4 viertallen, maar grappig genoeg zijn de 4 ontbrekende spelers precies een viertal wat al een keer is opgesteld, dus er zijn 4 van de 19 mensen die 2 x in dezelfde formatie met elkaar spelen (, dus de vrouwen onderling wisselen?), maar de rest van het schema zijn dus allemaal unieke viertallen die de rest van het toernooi niet tegen of met elkaar spelen.
Elk viertal zal zelf moeten bepalen hoe de koppeltjes gevormd worden, om daar ook nog rekening mee te houden zou het complexer maken.

Een meevaller was dat je precies 10 en 9 vrouwen hebt, dat zorgde ervoor dat ik als 10e 'vrouw' de vrij plek kon bepalen. Klein 'nadeeltje', dit zorgt ervoor dat 8 van de 10 mannen een keer vrij zijn en er maar 4 vrouwen zijn die een keer vrij zijn.

IDMannenNoteIDVrouwenNote
11 x vrij21 x vrij
341 x vrij
51 x vrij6
71 x vrij81 x dubbel
91 x dubbel10
111 x vrij121 x vrij
131 x vrij, 1 x dubbel14
151 x vrij16
171 x vrij181 x vrij, 1 x dubbel
191 x vrij20Vrijnvt


RondeabcdNote
Ronde 1451617
361015
2111419
171220Vrij
891318Dubbel


RondeabcdNote
Ronde 21234
5678
9101112
13141516
17181920Vrij


RondeabcdNote
Ronde 3151014
26917
371618
4111320Vrij
8121519


RondeabcdNote
Ronde 4161116
251520Vrij
3121417
471019
891318Dubbel


Kijk maar of je er wat mee kan, maar dichterbij dan dit denk ik niet dat je gaat krijgen.

[ Voor 0% gewijzigd door GRDavies75 op 24-08-2024 09:00 . Reden: grammatica, 15 is ook vrij ]

Alle reacties


  • jeroen79
  • Registratie: Juli 2013
  • Laatst online: 27-09 20:45
Je zou een puntensysteem kunnen maken.

Partner van zelfde geslacht -1, partner van ander geslacht +1.
Partner met wie in een andere ronde wordt gespeeld -1, partner met wie in geen andere ronde gespeeld +1.
Tegenstander tegen wie in een andere ronde wordt gespeeld -1, tegenstander tegen wie in geen andere ronde wordt gespeeld +1.
Geen pauze -1, één pauze +1, meer pauzes -1.

Die punten kun je nog tweaken afhankelijk van wat zwaarder weegt.

Dan maak je een grote matrix met alle mogelijke combinaties en reken je voor elk de score uit.
Daaruit haal je dan de beste combinatie.

Acties:
  • Beste antwoord
  • +2 Henk 'm!

  • GRDavies75
  • Registratie: December 2014
  • Laatst online: 10:00

GRDavies75

PSN-id: GRDavies

Ik had andere prioriteiten, maar bedankt voor het puzzeltje. En TL;DR er is geen oplossing vanwege jouw restricties,

Echter het hangt natuurlijk ook af in hoeverre je het bij de deelnemers weet te verkopen / uitleggen en misschien kan je al bij voorhand vragen wie er geen bezwaren heeft etc. want het schema wat ik ga voorstellen voldoet voor bijna het hele 'toernooi'

Ik heb het niet over de wiskundige onmogelijkheid dat je 4 banen hebt, met 4 mensen er dus per ronde 3 mensen aan de kant zitten (dus hun rustronde hebben) en 4 rondes à 3 mensen zijn 12 mensen en dat is niet 19, dus je zou in ieder geval kunnen polsen of er mensen zijn die geen problemen hebben om 4 x te spelen en/of misschien juist maar 3 keer max willen spelen. Het is aangegeven en zou je rekening mee kunnen houden.

Zonder de restricties zoals 2 x mv koppeltjes zou je 20! / (16! * 4!) = 4845 unieke combinaties hebben, maar door deze restrctie hou je uiteindelijk 2025 unieke combinaties over. En waar je zou verwachten daar moet je wel 4 rondes uit weten te distilleren, helaas 3 rondes en 4 viertallen, maar grappig genoeg zijn de 4 ontbrekende spelers precies een viertal wat al een keer is opgesteld, dus er zijn 4 van de 19 mensen die 2 x in dezelfde formatie met elkaar spelen (, dus de vrouwen onderling wisselen?), maar de rest van het schema zijn dus allemaal unieke viertallen die de rest van het toernooi niet tegen of met elkaar spelen.
Elk viertal zal zelf moeten bepalen hoe de koppeltjes gevormd worden, om daar ook nog rekening mee te houden zou het complexer maken.

Een meevaller was dat je precies 10 en 9 vrouwen hebt, dat zorgde ervoor dat ik als 10e 'vrouw' de vrij plek kon bepalen. Klein 'nadeeltje', dit zorgt ervoor dat 8 van de 10 mannen een keer vrij zijn en er maar 4 vrouwen zijn die een keer vrij zijn.

IDMannenNoteIDVrouwenNote
11 x vrij21 x vrij
341 x vrij
51 x vrij6
71 x vrij81 x dubbel
91 x dubbel10
111 x vrij121 x vrij
131 x vrij, 1 x dubbel14
151 x vrij16
171 x vrij181 x vrij, 1 x dubbel
191 x vrij20Vrijnvt


RondeabcdNote
Ronde 1451617
361015
2111419
171220Vrij
891318Dubbel


RondeabcdNote
Ronde 21234
5678
9101112
13141516
17181920Vrij


RondeabcdNote
Ronde 3151014
26917
371618
4111320Vrij
8121519


RondeabcdNote
Ronde 4161116
251520Vrij
3121417
471019
891318Dubbel


Kijk maar of je er wat mee kan, maar dichterbij dan dit denk ik niet dat je gaat krijgen.

[ Voor 0% gewijzigd door GRDavies75 op 24-08-2024 09:00 . Reden: grammatica, 15 is ook vrij ]


Acties:
  • 0 Henk 'm!

  • pastafan
  • Registratie: Februari 2013
  • Laatst online: 19-09 10:44
GRDavies75 schreef op vrijdag 23 augustus 2024 @ 11:08:
Ik had andere prioriteiten, maar bedankt voor het puzzeltje. En TL;DR er is geen oplossing vanwege jouw restricties,

Echter het hangt natuurlijk ook af in hoeverre je het bij de deelnemers weet te verkopen / uitleggen en misschien kan je al bij voorhand vragen wie er geen bezwaren heeft etc. want het schema wat ik ga voorstellen voldoet voor bijna het hele 'toernooi'

Ik heb het niet over de wiskundige onmogelijkheid dat je 4 banen hebt, met 4 mensen er dus per ronde 3 mensen aan de kant zitten (dus hun rustronde hebben) en 4 rondes à 3 mensen zijn 12 mensen en dat is niet 19, dus je zou in ieder geval kunnen polsen of er mensen zijn die geen problemen hebben om 4 x te spelen en/of misschien juist maar 3 keer max willen spelen. Het is aangegeven en zou je rekening mee kunnen houden.

Zonder de restricties zoals 2 x mv koppeltjes zou je 20! / (16! * 4!) = 4845 unieke combinaties hebben, maar door deze restrctie hou je uiteindelijk 2025 unieke combinaties over. En waar je zou verwachten daar moet je wel 4 rondes uit weten te distilleren, helaas 3 rondes en 4 viertallen, maar grappig genoeg zijn de 4 ontbrekende spelers precies een viertal wat al een keer is opgesteld, dus er zijn 4 van de 19 mensen die 2 x in dezelfde formatie met elkaar spelen (, dus de vrouwen onderling wisselen?), maar de rest van het schema zijn dus allemaal unieke viertallen die de rest van het toernooi niet tegen of met elkaar spelen.
Elk viertal zal zelf moeten bepalen hoe de koppeltjes gevormd worden, om daar ook nog rekening mee te houden zou het complexer maken.

Een meevaller was dat je precies 10 en 9 vrouwen hebt, dat zorgde ervoor dat ik als 10e 'vrouw' de vrij plek kon bepalen. Klein 'nadeeltje', dit zorgt ervoor dat 8 van de 10 mannen een keer vrij zijn en er maar 4 vrouwen zijn die een keer vrij zijn.

IDMannenNoteIDVrouwenNote
11 x vrij21 x vrij
341 x vrij
51 x vrij6
71 x vrij81 x dubbel
91 x dubbel10
111 x vrij121 x vrij
131 x vrij, 1 x dubbel14
1516
171 x vrij181 x vrij, 1 x dubbel
191 x vrij20Vrijnvt


RondeabcdNote
Ronde 1451617
361015
2111419
171220Vrij
891318Dubbel


RondeabcdNote
Ronde 21234
5678
9101112
13141516
17181920Vrij


RondeabcdNote
Ronde 3151014
26917
371618
4111320Vrij
8121519


RondeabcdNote
Ronde 4161116
251520Vrij
3121417
471019
891318Dubbel


Kijk maar of je er wat mee kan, maar dichterbij dan dit denk ik niet dat je gaat krijgen.
Respect! En enorm bedankt! Hoe heb je dit voor elkaar gekregen??

Acties:
  • +2 Henk 'm!

  • GRDavies75
  • Registratie: December 2014
  • Laatst online: 10:00

GRDavies75

PSN-id: GRDavies

Python
Itertools.combinations(20,4)
Door de mannen en vrouwen te splitsen op even een oneven met als bonus de vrije plek kon ik makkelijk filteren voor de unieke 2m_2v viertallen.

Per ronde had ik 5 pointers die via bruteforcing over deze lijst gingen en de loting bijwerkten (en terug draaiden bij backtracking) waar er gecontroleerd werd of er sprake was van een 'vers' viertal (geen overlappende history).

Acties:
  • +1 Henk 'm!

  • pastafan
  • Registratie: Februari 2013
  • Laatst online: 19-09 10:44
GRDavies75 schreef op vrijdag 23 augustus 2024 @ 21:16:
Python
Itertools.combinations(20,4)
Door de mannen en vrouwen te splitsen op even een oneven met als bonus de vrije plek kon ik makkelijk filteren voor de unieke 2m_2v viertallen.

Per ronde had ik 5 pointers die via bruteforcing over deze lijst gingen en de loting bijwerkten (en terug draaiden bij backtracking) waar er gecontroleerd werd of er sprake was van een 'vers' viertal (geen overlappende history).
Klinkt heel cool. Zelf geen verstand van Python, maar knap dat je Python hiervoor in kunt zetten. Nogmaals bedankt!
Pagina: 1