queuing probleem

Status
Niet open voor verdere reacties.

meermann

Gebruiker
Lid geworden
4 nov 2008
Berichten
16
Hallo,

Ik ben voor mijn stage bezig met VBA in excel. Ik moet een model maken en ben net begonnen met VBA. Ik heb net het boek programming with VBA in Excel for dummies uitgewerkt maar ik weet nu niet zo goed waar ik moet beginnen. Dus daarom mijn vraag:
Je hebt 6 balies waar klanten geholpen kunnen worden. Er komen in totaal 7000 klanten binnen. Ze hebben allemaal een verwerkingsnelheid van 1 klant per 2 sec( cel b1 t/m b6). hoe kan ik het zo programmeren dat de eerste klant bij balie 1 wordt geholpen en dan de 2e klant dan automatisch naar de andere balie gaat en dat de cellen achter de balies (dus cellen c1 t/mc6) telt hoeveel klanten hij tot dan toe heeft behandeld.
het meot straks ingewikkelder worden met variaties e.d,. maar ik denk dat als ik hiermee begin ik het model steeds ingewikkelder kan maken.
Hoe denken jullie daarover en heeft iemand misschien al een code liggen die mij kan helpen?
Hoe het nu dus in excel staat
abalie snelheid aantal klanten geholpen
1 00:00:02 ?
2 00:00:02 ?
3 00:00:02 ?
4 00:00:02 ?
5 00:00:02 ?
6 00:00:02 ?

alvast bedankt.
 
En waarom doet elke balie niet gewoon 1/6 van de 7000 klanten?

Wellicht mis ik hier iets in de vraag ... :confused:
 
ja dat klopt hoor, zo kun je het zo uitrekenen. maar vomdat het model straks moeilijker moet worden wil ik het eerst heel makkelijk programmeren in VBA omdat ik VBA helemaal nog niet ken. De bedoeling is straks dat de looptijd naar de verschillende balies wordt meegenomen dus dat de klant aankomen op verschillende tijden en dat de behandeltijden verschillen dus dat VBA zegt deze balie is nu klaar dan stuur ik nu daar een nieuwe klant heen en als de klant klaar is naar welke vervolgstap (2e balie in het systeem) de klant moet gaan. maar omdat ik geen idee heb ik dat moet gaan doen. dacht ik ga VBA eerst laten regelen dat er een klant binnen komt die naar balie 1 gaat en als klan 2 binnenkomt die automatisch naar balie 2 gaat etc.
maar goed, misschien is dit wel de verkeerde aanpak...ik sta open voor feedback :)
 
Ik zou maar eens wat gaan lezen over object georienteerd programmeren en (discrete) simulaties. Je zou een object objKlant kunnen maken en hierin diverse properties en methoden kunnen definieren (zoals aankomsttijd, looptijd, balie) die je naarmate je simulatie ingewikkelder wordt kunt uitbreiden. Op dezelfde wijze kun je een objBalie object maken, en een scheduler die op random tijden objKlant objecten aanmaakt en aan een objBalie object geeft.
Je kunt dan zelfs nog objKlant objecten een preferentie voor een bepaalde balie geven. Ik ga zelf ook liever in de rij staan bij een balie met een leuk meisje ;)
 
hallo,

het is inderdaad mijnbedoeling om object georienteerd te programmeren. met een beetje hulp van mijn begeleider heb ik tot nu toe de volgende code

Sub Main()
Dim i As Integer
Dim startstep, endstep As Date
Dim startsimulation, endsimulation, simulationleap As Date
startsimulation = #6:00:00 PM#
endsimulation = #11:55:00 PM#
simulationleap = #12:05:00 AM#
startstep = startsimulation
'loop de continue processen langs stap voor stap.
While startstep <= endsimulation
endstep = startstep + simulationleap
For i = 1 To Sheets("Opvoerwerkplekken").Cells(1, 10).Value
Call opvoeren(i, startstep, endstep)
Next
For i = 1 To Sheets("medewerker").Cells(3, 7).Value
Call medewerker(i, startstep, endstep)
Next
startstep = endstep
Wend
End Sub
Sub opvoeren(opvoerband As Integer, start As Variant, eind As Date)
Sheets("Opvoerwerkplekken").Activate
Dim j As Integer
Dim aantalcontainersinwerkvoorraad, aantaltelegencontainers As Double
Dim tijdvolledigecontainer As Date
j = 1
While Cells(j, 1).Value <> opvoerband And Cells(j, 1).Value <> ""
j = j + 1
Wend
aantalcontainersinwerkvoorraad = Cells(j, 10).Value
tijdvolledigecontainer = Cells(j, 8).Value
aantaltelegencontainers = (eind - start) / tijdvolledigecontainer
If aantaltelegencontainers > aantalcontainersinwerkvoorraad Then
Cells(j, 10).Value = 0
Else
Cells(j, 10).Value = aantalcontainersinwerkvoorraad - aantaltelegencontainers
End If
End Sub


'medewerker loopt tussen dock en opvoergoot

Sub medewerker(medewerker As Integer, start As Variant, eind As Date)
Sheets("opvoerwerkplekken").Activate
Dim k As Integer
Dim maxwerkvoorraadopvoeren As Integer
Dim afstanddockopvoergoot As Date
Dim Afstandopvoergootdock As Date

' check of er iets gedaan moet worden
Sheets("medewerker").Activate
j = 1
While Cells(j, 1).Value <> medewerker And Cells(j, 1).Value <> ""
j = j + 1
Wend
If Cells(j, 6).Value <= eind Then
' als er iets gedaan kan worden dan
afstanddockopvoergoot = Sheets("tijd tussen locaties").Cells(21, 5).Value
Afstandopvoergootdock = Sheets("tijd tussen locaties").Cells(22, 3).Value

If aantalcontainersinwerkvoorraad < maxwerkvoorraadopvoeren Then
Sheets(" medewerker").Cells(j, 5) = dock
Sheets(" medewerker").Cells(j, 6) = start + afstanddockopvoergoot

If aantalcontainersinwerkvoorraad < maxwerkvoorraadopvoeren Then
Sheets("opvoerwerkplekken").Cells(1, 14).Value = 0
Else
Sheets("opvoerwerkplekken").Cells(1, 14).Value = aantalcontainersindock - 1
End If
End If

aantalcontainersindock = Sheets("proces").Cells(10, 6).Value
Sheets("opvoerwerkplekken").Cells(1, 14).Value = aantalcontainersindock
aantalmedewerkers = Sheets("medewerker").Cells(3, 7).Value
maxwerkvoorraadopvoeren = 6


If start + afstanddockopvoergoot Then
aantalcontainersinwerkvoorraad = aantalcontainersinwerkvoorraad + 1
End If
End If
End Sub



maar het laatste stuk vanaf de medewerker klopt niet. Ik zal het bestand hier ook bijvoegen. Wat ik graag wil is dat de medewerker loopt kijkt of de emballagemiddelen in kolom j op tablad opvoerwerkplekken kleiner is dan het maximum (=6) en dan uit "n1" van blad opvoerwerkplekken een emballagemiddel pakt en het naar een cel van de kolom j brengt. Dus dat kolom j steeds op 6 blijft staan totdat de emballagemiddelen in "n1" op zijn. De medewerker staat dus op het dock (tabblad tijd tussen locaties) en moet naar de opvoergoot lopen en met een container uit "n1" dat bij een opvoergoot in kolom j brengen e dan weer terug lopen naar het dock. Ik meot de tijd weten hoelang hij erover doet en er moet een cel bijhouden hoelang hij erover loopt. Het onderste deel van mijn code is dit. Maar hij doet wel wat maar loopt vast. Ik denk omdat ik geen tijdstip heb aangegevn dat hij moet gaan kijken is de een aantal emballage middelen bij de goot kleiner dan maximum =6.... een lang verhaal zou iemand er naar willen kijken?

Echt super bedankt als iemand de tijd zou willen nemen om er naar te kijken.

oh ik merk dat mijn bestand te groot is, zou iemand zo naar de code kunnen kijken? echt super bedankt alvast
 
Ik zou je begeleider dan ook maar eens de boeken insturen want je hele code is compleet procedureel...
Overigens snap ik niet waarom je in
Code:
Sub opvoeren(opvoerband As Integer, start As Variant, eind As Date)
start als variant hebt staan, terwijl in de call toch echt een datum object doorgegeven wordt. Google eens op class modules dan heb je wat meer informatie. Ook zou ik heel excel maar vergeten, dat levert je nauwelijks extra voordeel op. Je kunt VB2008 gratis van de MS website downloaden.
 
helaas kan ik excel niet dumpen, het moet namelijk daarna overdraagbaar zijn aan andere medewerkers zodat zij makkelijk dingen kunnen aanpassen.
Dat van die date klopte inderdaad, maar als je dat invult doet hij het opeens niet meer en zo deed hij het wel dus dacht ik ach wat maakt het dan uit als hij het maar doet.

maar goed nog geen oplossing helaas voor het nu niet meer werken van mn model:(..is er een bureau waar je mensen kunt inhuren die een dag je gaan helpen en adviezen gaan geven? :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan