Toon posts:

[Excel 2010] Snelste combinatie binnen matrix zoeken

Pagina: 1
Acties:

Onderwerpen


  • DinX
  • Registratie: februari 2002
  • Laatst online: 17-09 17:01
Korte samenvatting meteen:
Ik moet voor een zwemwedstrijd de snelste combinatie van zwemmers zoeken voor een aflossing wisselslag. Hier moet je voor elk van de 4 slagen 1 zwemmer hebben. Zouden ze allemaal dezelfde slag mogen zwemmen (zoals een 4 x 100 crawl) is het simpel, sorteren op de tijd en de 4 snelste nemen. Bij een wissel ligt dat echter anders.

Grafisch is het misschien makkelijker duidelijk te maken:



Uit deze matrix moet ik de snelste combinatie krijgen. Elke zwemmer mag maar 1 keer voorkomen, en elke slag mag maar 1 keer voorkomen. Je kan niet zomaar kolom per kolom gaan sorteren, de snelste eruit halen en die weglaten bij de volgende kolom. Door bijvoorbeeld iemand die iets trager is op crawl dan de rest crawl te laten zwemmen kan je op het einde weer sneller zijn doordat het verschil in schoolslag veel groter is.

Bestaat hier in Excel een ingebouwde functie voor of wordt dit scripten en alle mogelijike combinaties uitrekenen ? Intuïtief kan ik bijvoorbeeld wel enkele combinaties voor de geest halen (die ik dan allemaal moet gaan uitrekenen), maar ergens moet daar toch een logica in zitten die excel voor mij kan doen ?

Marokko 2015: Route
Sat Tracker: SpotWalla
Blog: Gone for a ride


  • pedorus
  • Registratie: januari 2008
  • Niet online
In principe is dit een taakje voor de solver/oplosser.

Maak een extra matrix aan met 1-en of 0-en (al dan niet zwemmen voor die afstand). Maak een sommatie aan voor iedere rij en kolom. Doe daarnaast een somproduct voor de tijd die iemand bij het zwemmen nodig heeft per rij, en tel al deze sommaties op als totale tijd. Solver instellen om totale tijd te minimaliseren door de 1/0-matrix aan te passen, met constraints binair, inzet per afstand >=1, inzet per zwemmer <=1.

Je zal er echter mogelijk achter komen dat de Excel solver een beroerd product is, op zich zou je die 9*8*7*6 mogelijkheden ook wel met een macro'tje/formules kunnen afgaan en dan ben je zekerder van je resultaat. Misschien nog wel makkelijker te maken ook met 4 for-loopjes.. ;)

Vitamine D tekorten in Nederland | Middelen tegen corona


  • DinX
  • Registratie: februari 2002
  • Laatst online: 17-09 17:01
Mja, je zit we met het feit dat je aanbod zwemmers groter is dan de selectie. Er mogen er maar 4 zwemmen :)
En die 9:99.99 kan ik nog veranderen in een schatting. Het is dus niet zo dat die dat niet mogen zwemmen.

[Voor 33% gewijzigd door DinX op 25-09-2010 22:38]

Marokko 2015: Route
Sat Tracker: SpotWalla
Blog: Gone for a ride


  • Wouter.S
  • Registratie: maart 2009
  • Laatst online: 03-09 23:24

Wouter.S

e^(i*pi ) +1 = 0

Zijn dit de enige zwemmers die deelnemen of is de echte lijst een stuk groter ? Als dit de volledige lijst is zou ik gewoon even puzzelen, zo extreem moeilijk is dit nu ook niet en een methode implementeren kost je waarschijnlijk meer tijd dan gewoon even puzzelen.

Als de lijst echter veel groter is zul je het met een een 'algoritme' moeten doen, of gewoon alle mogelijke combo's afgaan en de snelste eruit pikken.

Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction.


  • DinX
  • Registratie: februari 2002
  • Laatst online: 17-09 17:01
Dit is nu de lijst. Maar het is iets wat wel vaker terugkomt. Het zijn namelijk niet altijd dezelfde die mee (kunnen) doen. Ik was voornamelijk benieuwd of er misschien iets standaard in Excel zat hiervoor. Dan moet ik de volgende keer alleen de tijden aanpassen en klaar :)

Marokko 2015: Route
Sat Tracker: SpotWalla
Blog: Gone for a ride


  • pedorus
  • Registratie: januari 2008
  • Niet online
DinX schreef op zaterdag 25 september 2010 @ 22:37:
Mja, je zit we met het feit dat je aanbod zwemmers groter is dan de selectie. Er mogen er maar 4 zwemmen :)
En die 9:99.99 kan ik nog veranderen in een schatting. Het is dus niet zo dat die dat niet mogen zwemmen.
Dit zijn geen problemen voor beide methodes die ik beschrijf. De minimalisatie van de totaaltijd zorgt er automatisch voor dat er geen 5 geselecteerd zullen worden. Maar anders kun je alsnog voor '=1' ipv '>=1' kiezen bij afstand. :p
Wouter.S schreef op zaterdag 25 september 2010 @ 22:43:
en een methode implementeren kost je waarschijnlijk meer tijd dan gewoon even puzzelen.
Hem misschien wel, mij niet:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Function BestCombination(times As Range) As String
    Dim arr()
    Dim i As Integer, j As Integer, k As Integer, l As Integer
    Dim tot As Double, mintot As Double
    mintot = 1E+99
    arr = times
    For i = 1 To UBound(arr, 1)
        For j = 1 To UBound(arr, 1)
            If j <> i Then
                For k = 1 To UBound(arr, 1)
                    If k <> i And k <> j Then
                        For l = 1 To UBound(arr, 1)
                            If l <> i And l <> j And l <> k Then
                                tot = arr(i, 1) + arr(j, 2) + arr(k, 3) + arr(l, 4)
                                If tot < mintot Then
                                    BestCombination = i & "," & j & "," & k & "," & l
                                    mintot = tot
                                End If
                            End If
                        Next
                    End If
                Next
            End If
        Next
    Next
End Function

Vitamine D tekorten in Nederland | Middelen tegen corona


  • DinX
  • Registratie: februari 2002
  • Laatst online: 17-09 17:01
Heel erg bedankt. Voordat je het script poste was ik al eens aan de slag gegaan met de Solver (nooit gebruikt).
Daarmee is het gelukt, en dit is zeker voor de toekomst erg makkelijk. Gewoon nu eens 1 keer een matrix met een hele hoop rijen maken en in het vervolg alleen namen en tijden aanpassen :)

http://tweakers.net/ext/f/nXp2cl98DQiD0YywzYi9an5N/thumb.png

Hartelijk bedankt. Weer wat bijgeleerd :)

Marokko 2015: Route
Sat Tracker: SpotWalla
Blog: Gone for a ride


  • pedorus
  • Registratie: januari 2008
  • Niet online
In je screenshot lijkt het mij een foutje dat Lindsay niet wordt ingezet, misschien is die voor het solven, of zijn je opties aan de solver niet goed, of werkt de solver gewoon niet goed. ;)

Vitamine D tekorten in Nederland | Middelen tegen corona


  • DinX
  • Registratie: februari 2002
  • Laatst online: 17-09 17:01
Foutje is er inmiddels uit :)

Marokko 2015: Route
Sat Tracker: SpotWalla
Blog: Gone for a ride


  • Lustucru
  • Registratie: januari 2004
  • Niet online

Lustucru

26 03 2016

pedorus schreef op zaterdag 25 september 2010 @ 21:41:
Je zal er echter mogelijk achter komen dat de Excel solver een beroerd product is, op zich zou je die 9*8*7*6 mogelijkheden ook wel met een macro'tje/formules kunnen afgaan en dan ben je zekerder van je resultaat. Misschien nog wel makkelijker te maken ook met 4 for-loopjes.. ;)
Tenzij de solver idd verbeterd is sinds XL 2003 is het idd een beroerd product. Bij een setje testdata miste de solver bij mij de meest optimale oplossing. :'(
Nog afgezien van het slecht verversen van de oplossing bij kleine wijzigingen in de data; dan bleef de solver gewoon de eerste oplossing geven.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee