Beispiel #1
0
 public override void WriteToConsole(DateTime?clockTime = null)
 {
     foreach (var load in AllLoads)
     {
         Console.Write("Id: {0}\tP_Idx: {1}\tS_Idx: {2}\t", load, LoadProcedureStepIndex[load].Item1, LoadProcedureStepIndex[load].Item2);
         if (Occupying.ContainsKey(load))
         {
             foreach (var res in Occupying[load].SelectMany(i => i))
             {
                 Console.Write("{0} ", res.Tag);
             }
         }
         Console.WriteLine();
     }
     Console.WriteLine();
     foreach (var res in Config.Resources)
     {
         Console.Write("Id: {0}\tOccupied: {1}\tPending: ", res.Id, Occupation.ContainsKey(res) ? Occupation[res].ToString() : "null");
         foreach (var load in PendingLoads[res])
         {
             Console.Write("{0} ", load);
         }
         Console.WriteLine();
     }
 }
Beispiel #2
0
        /// <summary>
        /// Request resources for indexed procedure and step
        /// </summary>
        /// <param name="procedureIdx">Procedure index</param>
        /// <param name="stepIdx">Step index</param>
        /// <returns>Two-dimension list for resources accoridng to # requirement x quantity for each requirement</returns>
        private List <List <Resource> > RqstResources(int procedureIdx, int stepIdx, TLoad load)
        {
            var step      = Config.Procedures[procedureIdx].Steps[stepIdx];
            var resources = new List <List <Resource> >();
            var rqst      = new HashSet <Resource>();

            foreach (var req in step.Requirements)
            {
                var toRqst = ResourcePool[procedureIdx][stepIdx].Where(res => req.Condition(res) && (!Occupation.ContainsKey(res) || Occupation[res].Equals(load)) && !rqst.Contains(res))
                             .Take(req.Quantity).ToList();
                if (toRqst.Count < req.Quantity)
                {
                    return(null);
                }
                foreach (var res in toRqst)
                {
                    rqst.Add(res);
                }
                resources.Add(toRqst);
            }
            return(resources);
        }