public CLSCOBO_ConsolidationEngine(CLSCOBO_ConsolidationProblem po_ConsolidationProblem) { ao_ConsolidationSolutions = new List<CLSCOBO_ConsolidationSolution>(); as_PointsDistanceMatrix = FillInDistancesMatrix(po_ConsolidationProblem); for(int vi_IterationTotal=1;vi_IterationTotal<=1;vi_IterationTotal++) { vo_ConsolidationSolutions=new List<CLSCOBO_ConsolidationSolution>(); for(int vi_Iteration=0;vi_Iteration<2;vi_Iteration++) { vo_ConsolidationSolution=null; CLSCOBO_ConsolidationSolution vo_PreviousConsolidationSolution=null; if(vi_Iteration==0) { vo_ConsolidationSolution=new CLSCOBO_ConsolidationSolution(po_ConsolidationProblem); vo_ConsolidationSolutions.Add(vo_ConsolidationSolution); } else { vo_PreviousConsolidationSolution=vo_ConsolidationSolutions[0]; while(vo_PreviousConsolidationSolution.TruckItineraries.Count>4) { vo_ConsolidationSolution=new CLSCOBO_ConsolidationSolution(vo_PreviousConsolidationSolution.TruckItineraries, vi_Iteration); if(vo_ConsolidationSolution.TruckItineraries.Count!=0) { vo_ConsolidationSolutions.Add(vo_ConsolidationSolution); } vo_PreviousConsolidationSolution=vo_ConsolidationSolutions[vo_ConsolidationSolutions.Count-1]; } } } ao_ConsolidationSolutions.AddRange(vo_ConsolidationSolutions); vo_ConsolidationSolutions=null; } }
public CLSCOBO_ConsolidationSolution(CLSCOBO_ConsolidationProblem po_ConsolidationProblem) { List<CLSCOBO_DeliveryPoint> vl_DeliveryPoints; al_TruckItineraries = new List<CLSCOBO_TruckItinerary>(); foreach (CLSCOBO_DeliveryPoint vo_DeliveryPoint in po_ConsolidationProblem.Deliveries){ vl_DeliveryPoints = new List<CLSCOBO_DeliveryPoint>(); vl_DeliveryPoints.Add(vo_DeliveryPoint); CLSCOBO_TruckItinerary vo_TruckItinerary = new CLSCOBO_TruckItinerary(po_ConsolidationProblem.OriginPoint, vl_DeliveryPoints); al_TruckItineraries.Add(vo_TruckItinerary); } }
public static CLSCOBO_ConsolidationProblem ReadFile(ref String ps_FileName) { string vs_Line; string vi_OriginDestinationIndicator=""; TextReader vs_TextReader; CLSCOBO_DeliveryPoint vo_DeliveryPoint; CLSCOBO_OriginPoint vo_OriginPoint; CLSCOBO_ConsolidationProblem vo_ConsolidationProblem; try { if(string.IsNullOrEmpty(ps_FileName)) { vo_ConsolidationProblem=ReadDemoData(ref ps_FileName); } else { vo_ConsolidationProblem=new CLSCOBO_ConsolidationProblem(); ps_FileName=System.AppDomain.CurrentDomain.BaseDirectory+(string.IsNullOrEmpty(ps_FileName)?cs_DEMO_DEFAULT_FILE:ps_FileName); vs_TextReader=new StreamReader(ps_FileName); while((vs_Line=vs_TextReader.ReadLine())!=null) { vi_OriginDestinationIndicator=vs_Line.Substring(0, vs_Line.IndexOf(",")); vs_Line=vs_Line.Remove(0, vs_Line.IndexOf(",")+1); if(vi_OriginDestinationIndicator.ToUpper()=="O") { vo_OriginPoint=new CLSCOBO_OriginPoint(vs_Line.Substring(0, vs_Line.IndexOf(","))); vo_ConsolidationProblem.OriginPoint=vo_OriginPoint; } else { vo_DeliveryPoint=new CLSCOBO_DeliveryPoint(vs_Line.Substring(0, vs_Line.IndexOf(","))); vo_DeliveryPoint.Weight=double.Parse(vs_Line.Remove(0, vs_Line.IndexOf(",")+1)); vo_ConsolidationProblem.Deliveries.Add(vo_DeliveryPoint); } } vs_TextReader.Close(); } } catch { vo_ConsolidationProblem=null; } return vo_ConsolidationProblem; }
public static CLSCOBO_ConsolidationProblem ReadDemoData(ref string ps_FileName) { string vs_Line; string vs_FileName; string vs_State=""; string vs_FirstZip=""; string vs_SecondZip=""; string vs_SelectedZip=""; double vd_Weight=0; int vi_RandomPoint=-1; int vi_ChoosenAsOriginPoint=-1; int vi_RandomChoosenPoint=-1; int vi_RandomZipSelected=-1; TextReader vs_TextReader; List<CLSCOBO_DeliveryPoint> vl_DeliveryPoints=null; CLSCOBO_DeliveryPoint vo_TemporaryPoint; CLSCOBO_DeliveryPoint vo_DeliveryPoint; CLSCOBO_OriginPoint vo_OriginPoint; CLSCOBO_ConsolidationProblem vo_ConsolidationProblem; try { vs_FileName=System.AppDomain.CurrentDomain.BaseDirectory+cs_DEMO_DEFAULT_FILE; ps_FileName=cs_DEMO_DEFAULT_FILE; vs_TextReader=new StreamReader(vs_FileName); vl_DeliveryPoints=new List<CLSCOBO_DeliveryPoint>(); while((vs_Line=vs_TextReader.ReadLine())!=null) { vs_SelectedZip=""; vs_State=vs_Line.Substring(0, vs_Line.IndexOf(",")); vs_Line=vs_Line.Remove(0, vs_Line.IndexOf(",")+1); vs_FirstZip=vs_Line.Substring(0, vs_Line.IndexOf(",")); vs_Line=vs_Line.Remove(0, vs_Line.IndexOf(",")+1); vs_SecondZip=vs_Line.Substring(0, vs_Line.IndexOf(",")); vs_Line=vs_Line.Remove(0, vs_Line.IndexOf(",")+1); vd_Weight=double.Parse(vs_Line.Remove(0, vs_Line.IndexOf(",")+1)); vi_RandomZipSelected=GenerateRandomNumber(1, 2); vs_SelectedZip=(vi_RandomZipSelected==1)?(string.IsNullOrEmpty(vs_FirstZip)?vs_SecondZip:vs_FirstZip):(string.IsNullOrEmpty(vs_SecondZip)?vs_FirstZip:vs_SecondZip); vs_SelectedZip=vs_State+" "+vs_SelectedZip; vo_TemporaryPoint=new CLSCOBO_DeliveryPoint(vs_SelectedZip); vo_TemporaryPoint.Weight=vd_Weight; vl_DeliveryPoints.Add(vo_TemporaryPoint); } vs_TextReader.Close(); vi_RandomPoint=GenerateRandomNumber(2, vl_DeliveryPoints.Count-1); vi_ChoosenAsOriginPoint=GenerateRandomNumber(0, vi_RandomPoint); vo_ConsolidationProblem=new CLSCOBO_ConsolidationProblem(); vo_OriginPoint=new CLSCOBO_OriginPoint(vl_DeliveryPoints[vi_ChoosenAsOriginPoint].ZipCode); vo_ConsolidationProblem.OriginPoint=vo_OriginPoint; vl_DeliveryPoints.RemoveAt(vi_ChoosenAsOriginPoint); vi_RandomPoint--; for(int x=1;x<=vi_RandomPoint;x++) { vi_RandomChoosenPoint=GenerateRandomNumber(0, vl_DeliveryPoints.Count-1); vo_DeliveryPoint=vl_DeliveryPoints[vi_RandomChoosenPoint]; vo_ConsolidationProblem.AddDeliveryPoint(vo_DeliveryPoint); vl_DeliveryPoints.RemoveAt(vi_RandomChoosenPoint); } } catch { vo_ConsolidationProblem=null; } return vo_ConsolidationProblem; }
private string[,] FillInDistancesMatrix(CLSCOBO_ConsolidationProblem po_ConsolidationProblem) { string z=""; string[,] vs_PointsDistanceMatrix=new string[po_ConsolidationProblem.Deliveries.Count+2, po_ConsolidationProblem.Deliveries.Count+2]; vs_PointsDistanceMatrix[0, 0]="*"; CLSCOBO_BasePoint vo_BasePoint1=null, vo_BasePoint2=null; for(int x=-1;x<po_ConsolidationProblem.Deliveries.Count;x++) { if(x==-1) { z=po_ConsolidationProblem.OriginPoint.ZipCode; vo_BasePoint1=po_ConsolidationProblem.OriginPoint; } else { z=po_ConsolidationProblem.Deliveries[x].ZipCode; vo_BasePoint1=po_ConsolidationProblem.Deliveries[x]; } vs_PointsDistanceMatrix[x+2, 0]=z; for(int y=-1;y<po_ConsolidationProblem.Deliveries.Count;y++) { if(y==-1) { z=po_ConsolidationProblem.OriginPoint.ZipCode; vo_BasePoint2=po_ConsolidationProblem.OriginPoint; } else { z=po_ConsolidationProblem.Deliveries[y].ZipCode; vo_BasePoint2=po_ConsolidationProblem.Deliveries[y]; } vs_PointsDistanceMatrix[0, y+2]=z; vs_PointsDistanceMatrix[x+2, y+2]=(x==y)?"*":CLSCOBO_ConsolidatorUtils.getDistance(vo_BasePoint1, vo_BasePoint2).ToString(); } } return vs_PointsDistanceMatrix; }
private void LoadFileZips(string ps_FileName) { TextBox vo_TextBox=(TextBox)CLSCOBO_FunctionsRepository.getElement("TxtFileName", ao_WebPage); if(ao_GoogleMap==null) ao_GoogleMap=(GoogleMap)CLSCOBO_FunctionsRepository.getElement("GoogleMap1", ao_WebPage); ao_GoogleMap.Markers.Clear(); ao_GoogleMap.Polylines.Clear(); ao_ConsolidationProblem=null; ao_ConsolidationProblem=CLSCOBO_FunctionsRepository.ReadFile(ref ps_FileName); vo_TextBox.Text=ps_FileName; FillInGraphicData(); }