public override void AlwaysPushing(UnitloadList currentListIn) { foreach (Unitload unit in currentListIn) { Processor ProcessorToRelease = (Processor)unit.Location; if (unit.Station.InQueue.IsAvailable == false) { this.Manager.JobManager.BlockedUnitloads.Add(unit); ProcessorToRelease.ChangeBlocked(this.Manager.Time, true); } //block else { //double transferTime = this.Manager.LayoutManager.Layout.DistanceMatrix[(Station)ProcessorToRelease.Parent, unit.Station]; double transferTime = 1; unit.Station.InQueue.Reserved++; unit.InTransfer = true; this.Manager.LayoutManager.Layout.UnitloadsOnMover.Add(unit); ProcessorToRelease.Release(this.Manager.Time, unit); //operation and processor will be selected when the unitload is in inqueue of its station. this.Manager.TriggerStationControllerAlgorithm((Station)ProcessorToRelease.Parent); this.Manager.EventCalendar.ScheduleEnterQueueEvent(this.Manager.Time + transferTime, unit.Station.InQueue, unit); } //go } currentListIn.Clear(); }
public void Execute() { UnitloadList unitloads = this.Manager.JobManager.UnitloadsToDecide; this.PreOperation(unitloads); foreach (Unitload unitload in unitloads) { OperationList operations = new OperationList(); StationList processCells = new StationList(); Station currentStation = unitload.Station; this.SelectOperation(unitload, operations, processCells); //IE486f18 } unitloads.Clear(); this.PostOperation(); }