Kortste tijd berekenen met macro

Status
Niet open voor verdere reacties.

Bastiaansen

Gebruiker
Lid geworden
4 dec 2015
Berichten
8
Hallo forumleden,
Ik zit met een taak waar ik wat hulp bij zou kunnen gebruiken.
Mijn bedrijf moet een aantal klusjes uitvoeren die door 3 personen worden uitgevoerd. Echter doet de één wat langer over dezelfde klus dan de ander. Hoe kan ik met VBA een script schrijven die weergeeft welke klus door welke persoon moet worden gedaan om in zo min mogelijk tijd klaar te zijn? Elk persoon doet 1 klus tegelijk, en er kunnen 3 mensen dus 3 klussen tegelijk worden uitgevoerd.

Klusnummer:01|02|03|04|05|06|07|08|
--------Frank:13|40|20|32|45|80|08|11|
--------Jacco:20|48|19|35|43|65|09|13|
--------Tanja:18|43|23|38|38|72|06|10|
De tijden zijn in minuten.

Aangezien Frank snel werkt zou je dus Frank alles kunnen laten doen, maar het is efficiënter dat Jacco ook de handen uit de mouwen steekt zodat alle klussen nog sneller af zijn. (Als Frank alles duurt het 13+40+20+32+45+80+8+11=249 minuten, maar als Jacco de laatste klus overneemt duurt het nog maar 13+40+20+32+45+80+8=238 minuten)


Mijn eigen ingeving zegt dus dat je Frank zijn werktijd moet optellen, Jacco zijn werktijd moet optellen en Tanja haar werktijd moet optellen en dan zorgen dat het verschil in werktijd zo klein mogelijk is.
Hoe kan ik dit in VBA uitwerken?"
Alvast bedankt!
 
Bastiaansen,

Even geen oplossing maar wel een oplossingsmethode.
1. Neem voor iedere klus de laagste tijd van de drie personen dus voor taak 01 Frank 13 minuten en voor taak 03 Jacco met 19 minuten.
2. Tel dan per persoon de totale tijd die ze nodig hebben.
3. Neem dan de hoogste en de laagste en wijzig taken tussen deze twee tot iedereen
ongeveer even lang bezig is. Dit is de efficiëntste tijd.
De eerste twee zijn makkelijk te programmeren de derde stap is lastiger en wordt meestal handmatig gedaan.

Veel Succes.
 
Dag Bastiaansen !

Misschien ben je er al uit of misschien is het probleem niet meer actueel, maar ik vond het zodanig intrigerend dat ik voor de sport de uitdaging ben aangegaan.

In feite snap ik jou redenering niet echt, want je telt de tijden van één werknemer gewoon op, terwijl men met drie tegelijk kan werken. In plaats van 249 of 238 minuten zal dat ongeveer één derde van die tijd bedragen. Op het eerste zicht zoiets van tussen 80 en 85 minuten.

Ook de stelling van Elsendoorn2134 die zegt "wijzig taken ... tot iedereen ongeveer even lang bezig is. Dit is de efficiëntste tijd.", begrijp ik niet zo goed.
Iets "ongeveer even lang" programmeren lijkt mij geen sinecure, maar iets bedenken dat de kortst mogelijke tijd oplevert, leek mij wel doenbaar.

Het bestand in bijlage bevat een macro en het principe is uitgelegd in de sheet. Hopelijk kan je er wat mee.

Grtz,
MDN111.
 

Bijlagen

MDN111, Bastiaanse

Intrigerend is het zeker, kon het ook niet los laten dus ben toch maar aan het programmeren geslagen.
Hierbij een programma dat met brute force de kortste doorlooptijd berekend (80 minuten trouwens).
Ik laat het programma hierbij alle mogelijkheden aflopen (3 ^ 8 = 6561 om precies te zijn.)
Van deze berekend hij de verschillende doorlooptijden en toont de kortste.

Bekijk bijlage HelpMijKortste doorlooptijd.xlsm

Veel Succes.
 
Het lijkt me een schoolopdracht.

@elsendoorn

Als hij de kortste met een t toont, berekent ie het ook met een t.
 
snb,

Ik weet het, ik weet het, is waarschijnlijk een schoolopdracht maar kon het niet laten.
Ik wou dat ik weer op school zat met zulke opdrachten, heerlijk.
 
Hallo MDN111 en Elsendoorn2134,
Super bedankt voor de hulp. Jullie hebben enorm geholpen bij mijn probleem. Hier kan ik wat mee!

Groetjes,
Bastiaansen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan