Avatar billede juks Novice
16. december 2013 - 20:53

3opt algorit SWAP

Hej , er der nogle der kan hjælpe mig jeg prøver at lave 3opt.

"3-opt analyse indebærer at man sletter 3 forbindelser (eller kanter) i et netværk (eller tur), også  tilslutter man dem i netværket på alle andre mulige måder, og derefter vurdere hver gentilslutning. "
Jeg har en liste InitTur der indeholder mine ruter men den kommer ikke frem til et bedre resultat , noglde der kan se hvad jeg gør forkert


    public static List<RuteLister> ThreeOpt(int i, int j, int k, List<RuteLister> InitTur, double _best_distance)
        {

            Afstande af = new Afstande();
            List<RuteLister> newTour = new List<RuteLister>();
            List<RuteLister> tempTour = new List<RuteLister>();

            List<RuteLister> deltur1 = InitTur.GetRange(0, i);
            List<RuteLister> deltur2 = InitTur.GetRange(deltur1.Count, j);
            List<RuteLister> deltur3 = InitTur.GetRange(deltur1.Count + deltur2.Count, 2);
            List<RuteLister> deltur4 = InitTur.GetRange(deltur1.Count + deltur2.Count + deltur3.Count, InitTur.Count - (deltur1.Count + deltur2.Count + deltur3.Count));


            newTour = deltur1.Concat(deltur4).Concat(deltur3).Concat(deltur2).ToList();

            double new_distance_swap1;
            new_distance_swap1 = af.TourPrNyRuteDistance(newTour);

            if (new_distance_swap1 < _best_distance) { InitTur = newTour; _best_distance = new_distance_swap1; Opt.Gain = true; }
            if (Math.Abs(new_distance_swap1 - _best_distance) == 0) { Opt.Gain = false; }
            //swap2
            double new_distance_swap2;

            newTour = deltur1.Concat(deltur3).Concat(deltur2).Concat(deltur4).ToList();
            new_distance_swap2 = af.TourPrNyRuteDistance(newTour);
            if (new_distance_swap2 < _best_distance) { InitTur = newTour; Opt.best_distance = new_distance_swap2; Opt.Gain = true; }
            if (Math.Abs(new_distance_swap2 - _best_distance) == 0) { Opt.Gain = false; }

            {
                return InitTur;
            }
        }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester