Find bedste kombination af Timeslots
Hejsa.Har brug for lidt nye ideér til at løse dette problem.
Håber en har lidt input.
Jeg har en custom klasse kaldet et 'TimeSlot'.
Et timeslot repræsenterer en åben kalender tid hos en ressource.
Den har bl.a. følgende properties :
Id
Name
StartTime
EndTime
Jeg har så f.eks. 3 kalendere. En for hver ressource.
Dette er repræsenteret via 3 lister.
Altså :
var ListA = new List<TimeSlot>();
var ListB = new List<TimeSlot>();
var ListC = new List<TimeSlot>();
Hver af disse kalendere har nogle ledige timeslots.
Ex.
ListA.Add(new TimeSlot() { StartTime = DateTime.Now.AddHours(-10), EndTime = DateTime.Now.AddHours(-9), Id = Guid.NewGuid() });
ListA.Add(new TimeSlot() { StartTime = DateTime.Now.AddHours(-8), EndTime = DateTime.Now.AddHours(-7), Id = Guid.NewGuid() });
ListB.Add(new TimeSlot() { StartTime = DateTime.Now.AddHours(-7), EndTime = DateTime.Now.AddHours(-6), Id = Guid.NewGuid() });
ListB.Add(new TimeSlot() { StartTime = DateTime.Now.AddHours(-6), EndTime = DateTime.Now.AddHours(-4), Id = Guid.NewGuid() });
ListB.Add(new TimeSlot() { StartTime = DateTime.Now.AddHours(-3), EndTime = DateTime.Now.AddHours(-2), Id = Guid.NewGuid() });
ListC.Add(new TimeSlot() { StartTime = DateTime.Now.AddHours(-7), EndTime = DateTime.Now.AddHours(-6), Id = Guid.NewGuid() });
ListC.Add(new TimeSlot() { StartTime = DateTime.Now.AddHours(-1), EndTime = DateTime.Now, Id = Guid.NewGuid() });
Jeg har brug for at kunne finde frem til den bedste kombination mellem de 3 kalendere, hvor tiderne ligger så tæt på hinanden som muligt, uden at overlappe.
Det er lige meget i hvilken rækkefølge, men der må være en smart måde hvorpå man kan finde den kombination, som giver den mindste ventetid mellem timeslots.
Ex. hvis en bruger tager til lægehuset og hver kalender her repræsenter en type læge. F.eks. En "Alm. læge", en "Ørelæge" og en "Øjenlæge".
Jeg har brug for at få retuneret 3 Timeslots i en liste, som er den kombination der skaber mindst ventetid for patienten mellem konsultationer.
Håber det giver mening.
Nogen ide til hvordan man gør det nemmeste?
I ovenstående eksempel ville den bedste kombi være :
Liste A - Entry nr. 2. +
Liste B - Entry nr. 1 +
Liste C - Entry nr. 2
Mvh.
Lasse