Avatar billede juks Novice
11. november 2012 - 15:02 Der er 7 kommentarer og
1 løsning

har 30 punkter der skal samles på en liste under een forudsætning

jeg har en list med 30 kunder.. disse skal tilknyttes en lastvogn der har en begrænsning på 50 hver vogn skal fyldes optimalt men hvordan gør jeg det... vil hente kundernes efterspørgelse her
= RuteList.Where(q => q.RuteNr == i).Sum(lt => _kunder[lt.KundeNr].demand);



foreach (PolareCoordinates sw in _sweepVinkler)
            {

                for (int i = 1; i < RuteList.Count; i++)
                {
                    tjekdemand = RuteList.Where(q => q.RuteNr == i).Sum(lt => _kunder[lt.KundeNr].demand);
                    //  if (tjekdemand ==0); CurRute=i; break;
                    {
                        if (tjekdemand < maxCap)
                        {
                            CurRute = i;
                            break;
                        }
                        else
                        {
                            antalruter++;
                            continue;
                        }
                    }
                 
                }
                RuteList.Add(new ParallelList { KundeNr = sw.Kunde, RuteNr = CurRute });

            }
Avatar billede Syska Mester
11. november 2012 - 15:31 #1
Som jeg forstår det.

1) Du har 30 kunder
2) Hvor bil har plads til 50.
3) Hver kunde skal have X pladser ( Demand )

Er dette korrekt forstået?

Kan du ikke lave en custom class som har en max capacity(her 50). Du opretter så en ny instance af denne og smide den i din liste. Derefter looper du denne liste igennem og finder den første som ikke er fyldt op og hvor der er plads. Er der ikke flere biler, så opretter du en ny og smider til sidst i din liste. Så burde de reelt set på den nemmeste måde bliver fyldt optimalt op.

Der findes sikkert bedre algoritmer ...
Avatar billede juks Novice
11. november 2012 - 16:46 #2
Det er ikke så kompliceret fordi jeg skal starte med.kunde1  og tage dem kontinuerligt. Men synes ikke jeg finde én nem kose
Avatar billede juks Novice
11. november 2012 - 16:53 #3
Jeg stor klovn må have set mig blind på det simple
Jeg skal jo sådan ser vel bare lave én for each og lave en ny tur når sidste  der ikke  længere er plads til næste
Avatar billede Syska Mester
11. november 2012 - 17:19 #4
Præcis ... næsten også det jeg prøvede at skrive.

Min måde ville så også tage højde for at fylde alle biler bedst muligt.

Dvs hvis der kom en kunde som skulle bruge 10, så kunne den ikke være i første bil, men ville derfor bliver smidt i anden bil, selvom der stadig var 5 pladser. Så kommer der en ny kunde som kun skal bruge 5 pladser, så ville mit eksempel tage højde for det.

mvh
Avatar billede Syska Mester
11. november 2012 - 17:20 #5
og svar.
Avatar billede juks Novice
11. november 2012 - 17:38 #6
ja men de skal faktisk ikke fyldes optimalt , de skal fyldes efter den forud bestemte rækkefølge
Avatar billede Syska Mester
11. november 2012 - 17:55 #7
Jeg læser kun hvad du skriver, måske jeg har misforstået den del.

Men godt det kom til at virke.
Avatar billede juks Novice
12. november 2012 - 09:16 #8
Jeg havde glemt at ligge den nuværende demand til inden jeg tjekkede op mod max kapaciteten derfor...
Det var så simpelt som dette :-) tak for hjælpen

foreach (PolareCoordinates sw in _sweepVinkler)
            {

             
                    tjekdemand = RuteList.Where(q => q.RuteNr == CurRute).Sum(lt => _kunder[lt.KundeNr].demand);
                    //  if (tjekdemand ==0); CurRute=i; break;
                    tjekdemand = tjekdemand + _kunder[sw.Kunde].demand;
                        if (tjekdemand < maxCap)
                        {
                           
                           
                        }
                        else
                        {
                            CurRute++;
                        }
                 
                 
             
               
                RuteList.Add(new ParallelList { KundeNr = sw.Kunde, RuteNr = CurRute });
          }
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



IT-JOB

Udviklings- og Forenklingsstyrelsen

Kontorchef med ansvar for tværgående service management

De Nationale Geologiske Undersøgelser for Danmark og Grønland (GEUS)

IT-systemadministrator søges til GEUS

Dansk Sygeplejeråd

IT-teknisk medarbejder

Københavns Professionshøjskole

Nytænkende og agil IT-projektleder

Udviklings- og Forenklingsstyrelsen

Tech Lead til Java-backend udviklingsteam