Example #1
0
Scheduler::Scheduler( ModelData& md ): data(md.GetData())
{
   methodsSet.resize(data.GetWFCount());
   maxEff = 0.0;
   xmlWriter = unique_ptr<ScheduleToXML>(new ScheduleToXML(data));
   data.SetWfPriorities();
   eff = unique_ptr<Efficiency>(new Efficiency(2.00 / data.GetprocessorsCount(), data.GetT()));
   maxPossible = 0.0;
   for (int i = 0; i < data.GetResourceCount(); i++){
      Intervals initIntervals;
      data.Resources(i).GetCurrentWindows(initIntervals);
      vector <BusyIntervals> current;
      current = initIntervals.GetCurrentIntervals();
      for (int j = 0; j < current.size(); j++){
         BusyIntervals & processorIntervals = current[j];
         for (auto it = processorIntervals.begin(); it != processorIntervals.end(); it++){
            for (int k = 0; k < it->second.size(); k++){
               maxPossible += eff->EfficiencyByPeriod(1, it->second[k].first, it->second[k].second);
            }
         }
      }
   }
   maxPossible = 1.00 - maxPossible;
}