public Constraints8ConstraintElement(
            Id2IndexElement d2IndexElement,
            IrIndexElement rIndexElement,
            IsIndexElement sIndexElement,
            ItIndexElement tIndexElement,
            Id1 d1,
            It t,
            Ix x,
            IxHat xHat,
            Iα α)
        {
            Expression LHS = xHat.Value[
                sIndexElement,
                rIndexElement,
                t.GetElementAt(
                    tIndexElement.Key + d2IndexElement.Value.Value.Value)];

            Expression RHS = Expression.Sum(
                d1.Value
                .Select(
                    y => x.GetElementAtAsint(
                        sIndexElement,
                        rIndexElement,
                        t.GetElementAt(
                            tIndexElement.Key + y.Value.Value.Value))
                    *
                    α.Value[rIndexElement, y, d2IndexElement]));

            this.Value = LHS == RHS;
        }
 public IScenarioUtilizedTimesResultElement Calculate(
     IScenarioUtilizedTimesResultElementFactory scenarioUtilizedTimesResultElementFactory,
     IΛIndexElement ΛIndexElement,
     Isrt srt,
     Ih h,
     In n,
     IxHat xHat)
 {
     return(scenarioUtilizedTimesResultElementFactory.Create(
                ΛIndexElement,
                srt.Value.Select(w =>
                                 xHat.GetElementAtAsint(
                                     w.sIndexElement,
                                     w.rIndexElement,
                                     w.tIndexElement)
                                 *
                                 n.GetElementAtAsint(
                                     w.sIndexElement,
                                     ΛIndexElement)
                                 *
                                 h.GetElementAtAsdecimal(
                                     w.sIndexElement,
                                     ΛIndexElement))
                .Sum()));
 }
        public IConstraints1ConstraintElement Create(
            IsIndexElement sIndexElement,
            ItIndexElement tIndexElement,
            Ir r,
            IxHat xHat,
            Iz z)
        {
            IConstraints1ConstraintElement constraintElement = null;

            try
            {
                constraintElement = new Constraints1ConstraintElement(
                    sIndexElement,
                    tIndexElement,
                    r,
                    xHat,
                    z);
            }
            catch (Exception exception)
            {
                this.Log.Error("Exception message: " + exception.Message + " and stacktrace " + exception.StackTrace);
            }

            return(constraintElement);
        }
        public IConstraints9ConstraintElement Create(
            IrIndexElement rIndexElement,
            IsIndexElement sIndexElement,
            ItIndexElement tIndexElement,
            Ix x,
            IxHat xHat)
        {
            IConstraints9ConstraintElement constraintElement = null;

            try
            {
                constraintElement = new Constraints9ConstraintElement(
                    rIndexElement,
                    sIndexElement,
                    tIndexElement,
                    x,
                    xHat);
            }
            catch (Exception exception)
            {
                this.Log.Error("Exception message: " + exception.Message + " and stacktrace " + exception.StackTrace);
            }

            return(constraintElement);
        }
 public ISurgicalSpecialtyNumberAssignedOperatingRoomsResultElement Calculate(
     ISurgicalSpecialtyNumberAssignedOperatingRoomsResultElementFactory surgicalSpecialtyNumberAssignedOperatingRoomsResultElementFactory,
     IΔParameterElement ΔParameterElement,
     IxHat xHat)
 {
     return(surgicalSpecialtyNumberAssignedOperatingRoomsResultElementFactory.Create(
                ΔParameterElement.jIndexElement,
                ΔParameterElement.Value.SelectMany(a => xHat.Value.Where(i => i.sIndexElement == a && i.Value).Select(w => w.rIndexElement)).Distinct().Count()));
 }
Esempio n. 6
0
 public ISurgicalSpecialtyNumberAssignedWeekdaysResultElement Calculate(
     ISurgicalSpecialtyNumberAssignedWeekdaysResultElementFactory surgicalSpecialtyNumberAssignedWeekdaysResultElementFactory,
     IΔParameterElement ΔParameterElement,
     IxHat xHat)
 {
     return(surgicalSpecialtyNumberAssignedWeekdaysResultElementFactory.Create(
                ΔParameterElement.jIndexElement,
                ΔParameterElement.Value.SelectMany(a => xHat.Value.Where(i => i.sIndexElement == a && i.Value).Select(i => i.tIndexElement.Value.ToDateTimeOffset(TimeSpan.Zero).UtcDateTime.DayOfWeek)).Distinct().Count()));
 }
 public ISurgeonNumberAssignedWeekdaysResultElement Calculate(
     ISurgeonNumberAssignedWeekdaysResultElementFactory surgeonNumberAssignedWeekdaysResultElementFactory,
     IsIndexElement sIndexElement,
     IxHat xHat)
 {
     return(surgeonNumberAssignedWeekdaysResultElementFactory.Create(
                sIndexElement,
                xHat.Value.Where(i => i.sIndexElement == sIndexElement && i.Value).Select(i => i.tIndexElement.Value.ToDateTimeOffset(TimeSpan.Zero).UtcDateTime.DayOfWeek).Distinct().Count()));
 }
Esempio n. 8
0
        public Constraints3ConstraintElement(
            IrIndexElement rIndexElement,
            IsIndexElement sIndexElement,
            ItIndexElement tIndexElement,
            Iy y,
            IxHat xHat)
        {
            Expression LHS = xHat.Value[sIndexElement, rIndexElement, tIndexElement];

            int RHS = y.GetElementAtAsint(
                sIndexElement,
                rIndexElement);

            this.Value = LHS <= RHS;
        }
 public ISurgicalSpecialtyNumberAssignedWeekdays Calculate(
     ISurgicalSpecialtyNumberAssignedWeekdaysResultElementFactory surgicalSpecialtyNumberAssignedWeekdaysResultElementFactory,
     ISurgicalSpecialtyNumberAssignedWeekdaysFactory surgicalSpecialtyNumberAssignedWeekdaysFactory,
     ISurgicalSpecialtyNumberAssignedWeekdaysResultElementCalculation surgicalSpecialtyNumberAssignedWeekdaysResultElementCalculation,
     IΔ Δ,
     IxHat xHat)
 {
     return(surgicalSpecialtyNumberAssignedWeekdaysFactory.Create(
                Δ.Value
                .Select(i => surgicalSpecialtyNumberAssignedWeekdaysResultElementCalculation.Calculate(
                            surgicalSpecialtyNumberAssignedWeekdaysResultElementFactory,
                            i,
                            xHat))
                .ToImmutableList()));
 }
 public ISurgeonNumberAssignedWeekdays Calculate(
     ISurgeonNumberAssignedWeekdaysResultElementFactory surgeonNumberAssignedWeekdaysResultElementFactory,
     ISurgeonNumberAssignedWeekdaysFactory surgeonNumberAssignedWeekdaysFactory,
     ISurgeonNumberAssignedWeekdaysResultElementCalculation surgeonNumberAssignedWeekdaysResultElementCalculation,
     Is s,
     IxHat xHat)
 {
     return(surgeonNumberAssignedWeekdaysFactory.Create(
                s.Value
                .Select(w => surgeonNumberAssignedWeekdaysResultElementCalculation.Calculate(
                            surgeonNumberAssignedWeekdaysResultElementFactory,
                            w,
                            xHat))
                .ToImmutableList()));
 }
        public Constraints1ConstraintElement(
            IsIndexElement sIndexElement,
            ItIndexElement tIndexElement,
            Ir r,
            IxHat xHat,
            Iz z)
        {
            Expression LHS = Expression.Sum(
                r.Value
                .Select(
                    y => xHat.Value[sIndexElement, y, tIndexElement]));

            Expression RHS = z.Value[sIndexElement, tIndexElement];

            this.Value = LHS == RHS;
        }
Esempio n. 12
0
        public IxHat Create(
            VariableCollection <IsIndexElement, IrIndexElement, ItIndexElement> value)
        {
            IxHat variable = null;

            try
            {
                variable = new xHat(
                    value);
            }
            catch (Exception exception)
            {
                this.Log.Error("Exception message: " + exception.Message + " and stacktrace " + exception.StackTrace);
            }

            return(variable);
        }
        public Constraints2ConstraintElement(
            IrIndexElement rIndexElement,
            ItIndexElement tIndexElement,
            Is s,
            Iγ γ,
            IxHat xHat)
        {
            Expression LHS = Expression.Sum(
                s.Value
                .Select(
                    y => xHat.Value[y, rIndexElement, tIndexElement]));

            int RHS = γ.GetElementAtAsint(
                rIndexElement,
                tIndexElement);

            this.Value = LHS <= RHS;
        }
 public IScenarioTotalTimesResultElement Calculate(
     IScenarioTotalTimesResultElementFactory scenarioTotalTimesResultElementFactory,
     IΛIndexElement ΛIndexElement,
     Isrt srt,
     IH H,
     IxHat xHat)
 {
     return(scenarioTotalTimesResultElementFactory.Create(
                ΛIndexElement,
                srt.Value.Select(w =>
                                 xHat.GetElementAtAsint(
                                     w.sIndexElement,
                                     w.rIndexElement,
                                     w.tIndexElement)
                                 *
                                 H.Value.Value.Value)
                .Sum()));
 }
Esempio n. 15
0
 public IScenarioTotalTimes Calculate(
     IScenarioTotalTimesResultElementFactory scenarioTotalTimesResultElementFactory,
     IScenarioTotalTimesFactory scenarioTotalTimesFactory,
     IScenarioTotalTimesResultElementCalculation scenarioTotalTimesResultElementCalculation,
     IΛ Λ,
     Isrt srt,
     IH H,
     IxHat xHat)
 {
     return(scenarioTotalTimesFactory.Create(
                Λ.Value
                .Select(w => scenarioTotalTimesResultElementCalculation.Calculate(
                            scenarioTotalTimesResultElementFactory,
                            w,
                            srt,
                            H,
                            xHat))
                .ToImmutableList()));
 }
Esempio n. 16
0
 public ISurgeonScenarioNumberPatients Calculate(
     ISurgeonScenarioNumberPatientsResultElementFactory surgeonScenarioNumberPatientsResultElementFactory,
     ISurgeonScenarioNumberPatientsFactory surgeonScenarioNumberPatientsFactory,
     ISurgeonScenarioNumberPatientsResultElementCalculation surgeonScenarioNumberPatientsResultElementCalculation,
     Irt rt,
     IsΛ sΛ,
     In n,
     IxHat xHat)
 {
     return(surgeonScenarioNumberPatientsFactory.Create(
                sΛ.Value
                .Select(w => surgeonScenarioNumberPatientsResultElementCalculation.Calculate(
                            surgeonScenarioNumberPatientsResultElementFactory,
                            w.sIndexElement,
                            w.ΛIndexElement,
                            rt,
                            n,
                            xHat))
                .ToImmutableList()));
 }
Esempio n. 17
0
 public ISurgeonScenarioNumberPatientsResultElement Calculate(
     ISurgeonScenarioNumberPatientsResultElementFactory surgeonScenarioNumberPatientsResultElementFactory,
     IsIndexElement sIndexElement,
     IΛIndexElement ΛIndexElement,
     Irt rt,
     In n,
     IxHat xHat)
 {
     return(surgeonScenarioNumberPatientsResultElementFactory.Create(
                sIndexElement,
                ΛIndexElement,
                rt.Value
                .Select(a =>
                        xHat.GetElementAtAsint(
                            sIndexElement,
                            a.rIndexElement,
                            a.tIndexElement)
                        *
                        n.GetElementAtAsint(
                            sIndexElement,
                            ΛIndexElement))
                .Sum()));
 }
Esempio n. 18
0
        public HM5OutputContext(
            ICalculationsAbstractFactory calculationsAbstractFactory,
            IDependenciesAbstractFactory dependenciesAbstractFactory,
            IResultElementsAbstractFactory resultElementsAbstractFactory,
            IResultsAbstractFactory resultsAbstractFactory,
            IHM5Model HM5Model,
            Solution solution)
        {
            // BestBound
            this.BestBound = resultsAbstractFactory.CreateBestBoundFactory().Create(
                (decimal)solution.BestBound)
                             .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // Gap
            this.Gap = resultsAbstractFactory.CreateGapFactory().Create(
                (decimal)solution.Gap)
                       .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // NumberOfExploredNodes
            this.NumberOfExploredNodes = resultsAbstractFactory.CreateNumberOfExploredNodesFactory().Create(
                solution.NumberOfExploredNodes)
                                         .GetValueForOutputContext();

            // ObjectiveValue
            this.ObjectiveValue = resultsAbstractFactory.CreateObjectiveValueFactory().Create(
                (decimal)solution.ObjectiveValues.SingleOrDefault().Value)
                                  .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // OverallWallTime
            this.OverallWallTime = resultsAbstractFactory.CreateOverallWallTimeFactory().Create(
                solution.OverallWallTime)
                                   .GetValueForOutputContext();

            // IHat(t, Λ)
            this.DayScenarioRecoveryWardCensuses = HM5Model.IHat.GetElementsAt(
                resultElementsAbstractFactory.CreateIHatResultElementFactory(),
                resultsAbstractFactory.CreateIHatFactory(),
                HM5Model.tΛ)
                                                   .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // xHat(s, r, t)
            IxHat xHat = HM5Model.xHat.GetElementsAt(
                resultElementsAbstractFactory.CreatexHatResultElementFactory(),
                resultsAbstractFactory.CreatexHatFactory(),
                HM5Model.srt);

            this.SurgeonOperatingRoomDayAssignments = xHat
                                                      .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // SurgeonNumberAssignedOperatingRooms
            this.SurgeonNumberAssignedOperatingRooms = calculationsAbstractFactory.CreateSurgeonNumberAssignedOperatingRoomsCalculationFactory().Create().Calculate(
                resultElementsAbstractFactory.CreateSurgeonNumberAssignedOperatingRoomsResultElementFactory(),
                resultsAbstractFactory.CreateSurgeonNumberAssignedOperatingRoomsFactory(),
                calculationsAbstractFactory.CreateSurgeonNumberAssignedOperatingRoomsResultElementCalculationFactory().Create(),
                HM5Model.s,
                xHat)
                                                       .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // SurgeonNumberAssignedWeekdays
            this.SurgeonNumberAssignedWeekdays = calculationsAbstractFactory.CreateSurgeonNumberAssignedWeekdaysCalculationFactory().Create().Calculate(
                resultElementsAbstractFactory.CreateSurgeonNumberAssignedWeekdaysResultElementFactory(),
                resultsAbstractFactory.CreateSurgeonNumberAssignedWeekdaysFactory(),
                calculationsAbstractFactory.CreateSurgeonNumberAssignedWeekdaysResultElementCalculationFactory().Create(),
                HM5Model.s,
                xHat)
                                                 .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // SurgeonScenarioNumberPatients
            ISurgeonScenarioNumberPatients surgeonScenarioNumberPatients = calculationsAbstractFactory.CreateSurgeonScenarioNumberPatientsCalculationFactory().Create().Calculate(
                resultElementsAbstractFactory.CreateSurgeonScenarioNumberPatientsResultElementFactory(),
                resultsAbstractFactory.CreateSurgeonScenarioNumberPatientsFactory(),
                calculationsAbstractFactory.CreateSurgeonScenarioNumberPatientsResultElementCalculationFactory().Create(),
                HM5Model.rt,
                HM5Model.sΛ,
                HM5Model.n,
                xHat);

            this.SurgeonScenarioNumberPatients = surgeonScenarioNumberPatients.GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // ScenarioNumberPatients(Λ)
            this.ScenarioNumberPatients = calculationsAbstractFactory.CreateScenarioNumberPatientsCalculationFactory().Create()
                                          .Calculate(
                resultElementsAbstractFactory.CreateScenarioNumberPatientsResultElementFactory(),
                resultsAbstractFactory.CreateScenarioNumberPatientsFactory(),
                calculationsAbstractFactory.CreateScenarioNumberPatientsResultElementCalculationFactory().Create(),
                HM5Model.Λ,
                surgeonScenarioNumberPatients)
                                          .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // SurgicalSpecialtyNumberAssignedOperatingRooms
            this.SurgicalSpecialtyNumberAssignedOperatingRooms = calculationsAbstractFactory.CreateSurgicalSpecialtyNumberAssignedOperatingRoomsCalculationFactory().Create().Calculate(
                resultElementsAbstractFactory.CreateSurgicalSpecialtyNumberAssignedOperatingRoomsResultElementFactory(),
                resultsAbstractFactory.CreateSurgicalSpecialtyNumberAssignedOperatingRoomsFactory(),
                calculationsAbstractFactory.CreateSurgicalSpecialtyNumberAssignedOperatingRoomsResultElementCalculationFactory().Create(),
                HM5Model.Δ,
                xHat)
                                                                 .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // SurgicalSpecialtyNumberAssignedWeekdays
            this.SurgicalSpecialtyNumberAssignedWeekdays = calculationsAbstractFactory.CreateSurgicalSpecialtyNumberAssignedWeekdaysCalculationFactory().Create().Calculate(
                resultElementsAbstractFactory.CreateSurgicalSpecialtyNumberAssignedWeekdaysResultElementFactory(),
                resultsAbstractFactory.CreateSurgicalSpecialtyNumberAssignedWeekdaysFactory(),
                calculationsAbstractFactory.CreateSurgicalSpecialtyNumberAssignedWeekdaysResultElementCalculationFactory().Create(),
                HM5Model.Δ,
                xHat)
                                                           .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // z(s, t)
            Interfaces.Results.SurgeonDayAssignments.Iz z = HM5Model.z.GetElementsAt(
                resultElementsAbstractFactory.CreatezResultElementFactory(),
                resultsAbstractFactory.CreatezFactory(),
                HM5Model.st);

            this.SurgeonDayAssignments = z
                                         .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // ExpectedValueΦ(s, l, Λ)
            Interfaces.Results.SurgeonDayScenarioCumulativeNumberPatients.IExpectedValueΦ expectedValueΦ = calculationsAbstractFactory.CreateExpectedValueΦCalculationFactory().Create()
                                                                                                           .Calculate(
                resultElementsAbstractFactory.CreateExpectedValueΦResultElementFactory(),
                resultsAbstractFactory.CreateExpectedValueΦFactory(),
                calculationsAbstractFactory.CreateExpectedValueΦResultElementCalculationFactory().Create(),
                HM5Model.l,
                HM5Model.t,
                HM5Model.slΛ,
                HM5Model.L,
                HM5Model.p,
                HM5Model.μ);

            // VarianceΦ(s, l, Λ)
            Interfaces.Results.SurgeonDayScenarioCumulativeNumberPatients.IVarianceΦ varianceΦ = calculationsAbstractFactory.CreateVarianceΦCalculationFactory().Create()
                                                                                                 .Calculate(
                resultElementsAbstractFactory.CreateVarianceΦResultElementFactory(),
                resultsAbstractFactory.CreateVarianceΦFactory(),
                calculationsAbstractFactory.CreateVarianceΦResultElementCalculationFactory().Create(),
                HM5Model.l,
                HM5Model.t,
                HM5Model.slΛ,
                HM5Model.L,
                HM5Model.p,
                HM5Model.μ,
                HM5Model.σ);

            // ExpectedValueI(t, Λ)
            Interfaces.Results.DayScenarioRecoveryWardUtilizations.IExpectedValueI expectedValueI = calculationsAbstractFactory.CreateExpectedValueICalculationFactory().Create()
                                                                                                    .Calculate(
                resultElementsAbstractFactory.CreateExpectedValueIResultElementFactory(),
                resultsAbstractFactory.CreateExpectedValueIFactory(),
                calculationsAbstractFactory.CreateExpectedValueIResultElementCalculationFactory().Create(),
                HM5Model.l,
                HM5Model.t,
                HM5Model.st,
                HM5Model.tΛ,
                expectedValueΦ,
                z);

            this.DayScenarioRecoveryWardUtilizationExpectedValues = expectedValueI
                                                                    .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // VarianceI(t, Λ)
            Interfaces.Results.DayScenarioRecoveryWardUtilizations.IVarianceI varianceI = calculationsAbstractFactory.CreateVarianceICalculationFactory().Create()
                                                                                          .Calculate(
                resultElementsAbstractFactory.CreateVarianceIResultElementFactory(),
                resultsAbstractFactory.CreateVarianceIFactory(),
                calculationsAbstractFactory.CreateVarianceIResultElementCalculationFactory().Create(),
                HM5Model.l,
                HM5Model.t,
                HM5Model.st,
                HM5Model.tΛ,
                varianceΦ,
                z);

            this.DayScenarioRecoveryWardUtilizationVariances = varianceI
                                                               .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // EBS(t, Λ)
            Interfaces.Results.DayScenarioExpectedBedShortages.IEBS EBS = calculationsAbstractFactory.CreateEBSCalculationFactory().Create()
                                                                          .Calculate(
                resultElementsAbstractFactory.CreateEBSResultElementFactory(),
                resultsAbstractFactory.CreateEBSFactory(),
                calculationsAbstractFactory.CreateEBSResultElementCalculationFactory().Create(),
                HM5Model.tΛ,
                HM5Model.Ω,
                expectedValueI,
                varianceI);

            this.DayScenarioExpectedBedShortages = EBS
                                                   .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // TEBS(Λ)
            Interfaces.Results.ScenarioTotalExpectedBedShortages.ITEBS TEBS_Λ = calculationsAbstractFactory.CreateTEBSΛCalculationFactory().Create()
                                                                                .Calculate(
                resultElementsAbstractFactory.CreateTEBSΛResultElementFactory(),
                resultsAbstractFactory.CreateTEBSΛFactory(),
                calculationsAbstractFactory.CreateTEBSΛResultElementCalculationFactory().Create(),
                HM5Model.t,
                HM5Model.Λ,
                EBS);

            this.ScenarioTotalExpectedBedShortages = TEBS_Λ
                                                     .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // TEBS
            this.TotalExpectedBedShortage = calculationsAbstractFactory.CreateTEBSCalculationFactory().Create()
                                            .Calculate(
                resultsAbstractFactory.CreateTEBSFactory(),
                HM5Model.Λ,
                HM5Model.Ρ,
                TEBS_Λ)
                                            .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // ScenarioTotalTimes(Λ)
            IScenarioTotalTimes scenarioTotalTimes = calculationsAbstractFactory.CreateScenarioTotalTimesCalculationFactory().Create()
                                                     .Calculate(
                resultElementsAbstractFactory.CreateScenarioTotalTimesResultElementFactory(),
                resultsAbstractFactory.CreateScenarioTotalTimesFactory(),
                calculationsAbstractFactory.CreateScenarioTotalTimesResultElementCalculationFactory().Create(),
                HM5Model.Λ,
                HM5Model.srt,
                HM5Model.H,
                xHat);

            this.ScenarioTotalTimes = scenarioTotalTimes.GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // ScenarioUtilizedTimes(Λ)
            IScenarioUtilizedTimes scenarioUtilizedTimes = calculationsAbstractFactory.CreateScenarioUtilizedTimesCalculationFactory().Create()
                                                           .Calculate(
                resultElementsAbstractFactory.CreateScenarioUtilizedTimesResultElementFactory(),
                resultsAbstractFactory.CreateScenarioUtilizedTimesFactory(),
                calculationsAbstractFactory.CreateScenarioUtilizedTimesResultElementCalculationFactory().Create(),
                HM5Model.Λ,
                HM5Model.srt,
                HM5Model.h,
                HM5Model.n,
                xHat);

            this.ScenarioUtilizedTimes = scenarioUtilizedTimes.GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // ScenarioUnutilizedTimes(Λ)
            IScenarioUnutilizedTimes scenarioUnutilizedTimes = calculationsAbstractFactory.CreateScenarioUnutilizedTimesCalculationFactory().Create()
                                                               .Calculate(
                resultElementsAbstractFactory.CreateScenarioUnutilizedTimesResultElementFactory(),
                resultsAbstractFactory.CreateScenarioUnutilizedTimesFactory(),
                calculationsAbstractFactory.CreateScenarioUnutilizedTimesResultElementCalculationFactory().Create(),
                HM5Model.Λ,
                scenarioTotalTimes,
                scenarioUtilizedTimes);

            this.ScenarioUnutilizedTimes = scenarioUnutilizedTimes.GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());

            // ScenarioUnderutilizations(Λ)
            this.ScenarioUnderutilizations = calculationsAbstractFactory.CreateScenarioUnderutilizationsCalculationFactory().Create()
                                             .Calculate(
                resultElementsAbstractFactory.CreateScenarioUnderutilizationsResultElementFactory(),
                resultsAbstractFactory.CreateScenarioUnderutilizationsFactory(),
                calculationsAbstractFactory.CreateScenarioUnderutilizationsResultElementCalculationFactory().Create(),
                HM5Model.Λ,
                scenarioTotalTimes,
                scenarioUnutilizedTimes)
                                             .GetValueForOutputContext(
                dependenciesAbstractFactory.CreateNullableValueFactory());
        }