Hjælp til at planlægge ruter udfra CW algoritme (SuperNØRD)
hej ,Jeg er (stadigvæk) igang med at programere en løsning til C&W savings algoritme og er havnet i endnu et problem.
Jeg har en liste over alle mine besparelser og skal nu til at søge igennem dem planlægge ruter ud fra dem.
listen over min besparelser er en liste af classen
class Savings
{
public int i { get; set; }
public int j { get; set; }
public double saving { get; set; }
}
Og indeholder
3-4 39
1-2 33
2-4 32
1-3 28
1-4 24
Først skal jeg kigge på om punkt 3-4 ikke overstiger samlede kapacitetbegrænsning der er 100
Det gør jeg ved at kigge i min liste "_kunder"
Capacity=100 < _kunder[Sa.i].demand + _kunder[Sa.j].demand
Hvis den ikke gør det så skal starte jeg med at planlægge ruten
Ved at tilføje den i min liste _ruter
foreach (Savings Sa in _saving)
{
_ruter.Add(new Rute { Forbindelser = Sa.i.ToString(), Cost = _afstand.Single(a => a.i == Sa.i && a.j == Sa.j).kant, TotalDemand += _kunder[Sa.i].demand + _kunder[Sa.j].demand });
}
Min rute class
public class Rute
{
public string Forbindelser { get; set; }
public double Cost { get; set; }
public int TotalDemand { get; set; }
Så ville jeg så kigge på næste punkti _saving og se først om der er forbindelse mellem kunderne til dem der er på besparelseslisten dvs om 1-2 kan forbindes med 3-4, det kan de ikke og så går jeg videre til næste punkt som er 2-4 og de kan godt ved at sætte 2 ind således at 3-4-2 ind men så skal jeg jo kun ligge kunde 2¨s demand og ikke 4¨s demand da det jo er medtaget.
Sådan bliver jeg ved indtil jeg når grænsen for capacitet og så lukker jeg ruten
Og starter forfra dog uden de punkter der har været besøgt men hvordan
Håber det giver lidt mening det jeg har skrevet jeg er SÅ lost