Exemplo n.º 1
0
        public void ConnectJobTypesAndOperations()
        {
            JobTypeList jobTypes = this.jobManager.JobMix.JobTypes;

            foreach (JobType jobType in jobTypes)
            {
                foreach (JobRoute jobRoute in jobType.Alternates)
                {
                    foreach (string operationName in jobRoute.OperationNames)
                    {
                        Operation operation = this.layoutManager.Layout.Operations[operationName];
                        jobRoute.Operations.Add(operation);
                    }
                }
                jobType.InputStation  = this.layoutManager.Layout.Stations[jobType.InputStationName];
                jobType.OutputStation = this.layoutManager.Layout.Stations[jobType.OutputStationName];
                if (!this.layoutManager.Layout.InputStations.Contains(jobType.InputStation))
                {
                    this.layoutManager.Layout.InputStations.Add(jobType.InputStation);
                }
                if (!this.layoutManager.Layout.OutputStations.Contains(jobType.OutputStation))
                {
                    this.layoutManager.Layout.OutputStations.Add(jobType.OutputStation);
                }
            }
        }
Exemplo n.º 2
0
 public AddJobDialog()
 {
     this.InitializeComponent();
     JobTypeList     = EnumHelper.EnumToList <ServiceType>();
     PayModeList     = EnumHelper.EnumToList <TripPayMode>();
     SelectedJobType = JobTypeList.FirstOrDefault();
     SelectedPayMode = PayModeList.FirstOrDefault();
     DefaultIndex    = 0;
 }
        void SetEditMode()
        {
            IsEditMode = true;
            IsViewMode = false;
            IsNewMode  = false;

            // set up picker selected indexes
            JobTypeSelected = JobTypeList.FindIndex(JobDetails.JobType);

            JobEditContent = new JobEditContent();
            CurrentView    = JobEditContent;
        }
Exemplo n.º 4
0
        public void PrepareInitialArrivals()
        {
            JobTypeList jobTypes = this.jobManager.JobMix.JobTypes;

            foreach (JobType jobType in jobTypes)
            {
                double arrivalTime = jobType.Arrival.GenerateValue();
                if (arrivalTime <= this.parameter.Configuration.FinalArrivalTime)
                {
                    this.eventCalendar.ScheduleArrivalEvent(arrivalTime, jobType);
                }
            }
        }
Exemplo n.º 5
0
        public void PrepareArrivalsFromTrace()
        {
            DataSet arrivals = new DataSet();

            arrivals.ReadXml(this.parameter.Configuration.TracePath);
            if (arrivals.Tables.Count > 0)
            {
                JobTypeList jobTypes = this.jobManager.JobMix.JobTypes;
                foreach (DataRow currentRow in arrivals.Tables[0].Rows)
                {
                    double arrivalTime = Double.Parse(currentRow["Time"].ToString());
                    string typeName    = currentRow["Type"].ToString();
                    this.jobManager.BatchList.Add(Int32.Parse(currentRow["Batch"].ToString()));
                    this.eventCalendar.ScheduleArrivalEvent(arrivalTime, jobTypes[typeName]);
                }
            }
        }
Exemplo n.º 6
0
 public JobMix()
 {
     this.jobTypes = new JobTypeList();
 }
Exemplo n.º 7
0
 public JobMix(string nameIn, FLOWObject parentIn)
     : base(nameIn, parentIn)
 {
     this.jobTypes = new JobTypeList();
 }
Exemplo n.º 8
0
        public override Event GetEvent(SimulationManager managerIn)
        {
            JobTypeList jobTypes = managerIn.JobManager.JobMix.JobTypes;

            return(new ArrivalEvent(this.Time, managerIn, jobTypes[this.jobType]));
        }
Exemplo n.º 9
0
        protected void PerformCyclicalOrder(Station inputStationIn)
        {
            UnitloadListStringDictionary unitloads = new UnitloadListStringDictionary();
            UnitloadList      orderedUnitloads     = new UnitloadList();
            JobTypeList       jobTypes             = new JobTypeList();
            int               totalRelease         = 0;
            MovableObjectList queueContent         = inputStationIn.InQueue.Content;

            foreach (Unitload unitload in queueContent)
            {
                if (unitload.EntryTime == this.Manager.Time)
                {
                    Job currentJob = (Job)unitload.Parent;
                    if (unitloads.ContainsKey(currentJob.JobType.Name) == false)
                    {
                        UnitloadList jobList = new UnitloadList();
                        unitloads.Add(currentJob.JobType.Name, jobList);
                        jobList.Add(unitload);
                        jobTypes.Add(currentJob.JobType);
                    }
                    else
                    {
                        UnitloadList jobList = unitloads[currentJob.JobType.Name];
                        jobList.Add(unitload);
                    }
                    totalRelease++;
                }
            }
            int[] frequency       = new int[jobTypes.Count];
            int[] remaining       = new int[jobTypes.Count];
            int[] minimumPosition = new int[jobTypes.Count];
            int   index           = 0;

            foreach (JobType jobType in jobTypes)
            {
                UnitloadList jobList = unitloads[jobType.Name];
                frequency[index]         = (int)Math.Ceiling((double)totalRelease / jobList.Count);
                remaining[index]         = jobList.Count;
                minimumPosition[index++] = 0;
            }
            while (totalRelease != 0)
            {
                int leastPosition = Int32.MaxValue;
                for (int i = 0; i < jobTypes.Count; i++)
                {
                    if (minimumPosition[i] < leastPosition)
                    {
                        leastPosition = minimumPosition[i];
                    }
                }
                int mostRemaining    = 0;
                int selectedJobIndex = -1;
                for (int i = 0; i < jobTypes.Count; i++)
                {
                    if (minimumPosition[i] == leastPosition)
                    {
                        if (mostRemaining < remaining[i])
                        {
                            mostRemaining    = remaining[i];
                            selectedJobIndex = i;
                        }
                    }
                }
                remaining[selectedJobIndex] = remaining[selectedJobIndex] - 1;
                if (remaining[selectedJobIndex] == 0)
                {
                    minimumPosition[selectedJobIndex] = Int32.MaxValue;
                }
                else
                {
                    if (minimumPosition[selectedJobIndex] <= orderedUnitloads.Count)
                    {
                        minimumPosition[selectedJobIndex] = minimumPosition[selectedJobIndex] + frequency[selectedJobIndex];
                    }
                }
                totalRelease--;
                UnitloadList jobList = unitloads[jobTypes[selectedJobIndex].Name];
                orderedUnitloads.Add(jobList[0]);
                jobList.RemoveAt(0);
            }
            queueContent.RemoveRange(queueContent.Count - orderedUnitloads.Count, orderedUnitloads.Count);
            foreach (Unitload unitload in orderedUnitloads)
            {
                queueContent.Add(unitload);
            }
        }