예제 #1
0
        public IConstraints12ConstraintElement Create(
            IdIndexElement dIndexElement,
            IwIndexElement wIndexElement,
            Id d,
            Il l,
            Ipa pa,
            IP P,
            Iprob prob,
            ITPx x,
            IVariance Variance)
        {
            IConstraints12ConstraintElement constraintElement = null;

            try
            {
                constraintElement = new Constraints12ConstraintElement(
                    dIndexElement,
                    wIndexElement,
                    d,
                    l,
                    pa,
                    P,
                    prob,
                    x,
                    Variance);
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(constraintElement);
        }
예제 #2
0
        public IConstraints13UConstraintElement Create(
            IdIndexElement dIndexElement,
            IwIndexElement wIndexElement,
            Interfaces.Variables.TP.WardSpareBeds.IδPlus δPlus_w,
            Interfaces.Variables.TP.WardDayBedAvailabilityDeviations.IδPlus δPlus_wd)
        {
            IConstraints13UConstraintElement constraintElement = null;

            try
            {
                constraintElement = new Constraints13UConstraintElement(
                    dIndexElement,
                    wIndexElement,
                    δPlus_w,
                    δPlus_wd);
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(constraintElement);
        }
        public Constraints3ConstraintElement(
            IdIndexElement dIndexElement,
            IwIndexElement wIndexElement,
            Ipa pa,
            IA A,
            IP P,
            ISPx x,
            ISPy y)
        {
            Expression LHS = Expression.Sum(
                pa.Value
                .Where(
                    i =>
                    P.IsThereElementAt(
                        wIndexElement,
                        i.pIndexElement)
                    &&
                    A.IsThereElementAt(
                        i.pIndexElement,
                        dIndexElement,
                        i.aIndexElement))
                .Select(
                    i => x.Value[i.pIndexElement, i.aIndexElement]));

            Expression RHS = y.Value[wIndexElement];

            this.Value = LHS <= RHS;
        }
예제 #4
0
        public IConstraints14ConstraintElement Create(
            IdIndexElement dIndexElement,
            IwIndexElement wIndexElement,
            Interfaces.Variables.TP.WardBedOccupancyVariances.IVariance Variance_w,
            Interfaces.Variables.TP.WardDayBedRequirementVariances.IVariance Variance_wd)
        {
            IConstraints14ConstraintElement constraintElement = null;

            try
            {
                constraintElement = new Constraints14ConstraintElement(
                    dIndexElement,
                    wIndexElement,
                    Variance_w,
                    Variance_wd);
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(constraintElement);
        }
예제 #5
0
        public IConstraints13LConstraintElement Create(
            IdIndexElement dIndexElement,
            IwIndexElement wIndexElement,
            ITPy y,
            IδMinus δMinus,
            Iμ μ)
        {
            IConstraints13LConstraintElement constraintElement = null;

            try
            {
                constraintElement = new Constraints13LConstraintElement(
                    dIndexElement,
                    wIndexElement,
                    y,
                    δMinus,
                    μ);
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(constraintElement);
        }
예제 #6
0
        public IConstraints3ConstraintElement Create(
            IdIndexElement dIndexElement,
            IwIndexElement wIndexElement,
            Ipa pa,
            IA A,
            IP P,
            ISPx x,
            ISPy y)
        {
            IConstraints3ConstraintElement constraintElement = null;

            try
            {
                constraintElement = new Constraints3ConstraintElement(
                    dIndexElement,
                    wIndexElement,
                    pa,
                    A,
                    P,
                    x,
                    y);
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(constraintElement);
        }
        public wdCrossJoinElement(
            IwIndexElement wIndexElement,
            IdIndexElement dIndexElement)
        {
            this.wIndexElement = wIndexElement;

            this.dIndexElement = dIndexElement;
        }
        public VarianceResultElement(
            IwIndexElement wIndexElement,
            decimal value)
        {
            this.wIndexElement = wIndexElement;

            this.Value = value;
        }
예제 #9
0
        public γParameterElement(
            IwIndexElement wIndexElement,
            FhirDecimal value)
        {
            this.wIndexElement = wIndexElement;

            this.Value = value;
        }
        public WardNumberAssignedActiveDaysResultElement(
            IwIndexElement wIndexElement,
            int value)
        {
            this.wIndexElement = wIndexElement;

            this.Value = value;
        }
예제 #11
0
        public WParameterElement(
            IwIndexElement wIndexElement,
            ImmutableList <IsIndexElement> value)
        {
            this.wIndexElement = wIndexElement;

            this.Value = value;
        }
예제 #12
0
        public δPlusResultElement(
            IwIndexElement wIndexElement,
            decimal value)
        {
            this.wIndexElement = wIndexElement;

            this.Value = value;
        }
예제 #13
0
        public SPyResultElement(
            IwIndexElement wIndexElement,
            int value)
        {
            this.wIndexElement = wIndexElement;

            this.Value = value;
        }
예제 #14
0
        public WardNumberAssignedOperatingRoomsResultElement(
            IwIndexElement wIndexElement,
            int value)
        {
            this.wIndexElement = wIndexElement;

            this.Value = value;
        }
예제 #15
0
        public PParameterElement(
            IwIndexElement wIndexElement,
            IpIndexElement pIndexElement)
        {
            this.wIndexElement = wIndexElement;

            this.pIndexElement = pIndexElement;
        }
예제 #16
0
 public decimal GetElementAtAsdecimal(
     IwIndexElement wIndexElement)
 {
     return(this.Value
            .Where(x => x.wIndexElement == wIndexElement)
            .Select(x => x.Value.Value.Value)
            .SingleOrDefault());
 }
        public Constraints11ConstraintElement(
            IdIndexElement dIndexElement,
            IwIndexElement wIndexElement,
            Id d,
            Il l,
            Ipa pa,
            IP P,
            Iprob prob,
            ITPx x,
            Iμ μ)
        {
            Expression LHS = μ.Value[wIndexElement, dIndexElement];

            ImmutableList <Tuple <IpIndexElement, IaIndexElement, double> > .Builder builder = ImmutableList.CreateBuilder <Tuple <IpIndexElement, IaIndexElement, double> >();

            foreach (IpIndexElement pIndexElement in pa.Value.Where(i => P.IsThereElementAt(wIndexElement, i.pIndexElement)).Select(w => w.pIndexElement).Distinct())
            {
                foreach (IaIndexElement aIndexElement in pa.Value.Select(w => w.aIndexElement).Distinct())
                {
                    int dLowerBound = aIndexElement.Key <= dIndexElement.Key ? dIndexElement.Key - aIndexElement.Key : d.GetMaximumKey() + dIndexElement.Key - aIndexElement.Key;

                    double RHSSum = 0;

                    for (int w = dLowerBound;
                         w <= l.GetMaximumLengthOfStay();
                         w = w + 1)
                    {
                        RHSSum +=
                            (double)prob.GetElementAtAsdecimal(
                                pIndexElement,
                                l.GetElementAt(
                                    w));
                    }

                    builder.Add(
                        Tuple.Create(
                            pIndexElement,
                            aIndexElement,
                            RHSSum));
                }
            }

            ImmutableList <Tuple <IpIndexElement, IaIndexElement, double> > RHSSums = builder.ToImmutableList();

            Expression RHS = Expression.Sum(
                pa.Value
                .Where(i => P.IsThereElementAt(wIndexElement, i.pIndexElement))
                .Select(
                    y =>
                    RHSSums.Where(w => w.Item1 == y.pIndexElement && w.Item2 == y.aIndexElement).Select(w => w.Item3).SingleOrDefault()
                    *
                    x.Value[
                        y.pIndexElement,
                        y.aIndexElement]));

            this.Value = LHS == RHS;
        }
        public δMinusResultElement(
            IwIndexElement wIndexElement,
            IdIndexElement dIndexElement,
            decimal value)
        {
            this.wIndexElement = wIndexElement;

            this.dIndexElement = dIndexElement;

            this.Value = value;
        }
        public Constraints13UConstraintElement(
            IdIndexElement dIndexElement,
            IwIndexElement wIndexElement,
            Interfaces.Variables.TP.WardSpareBeds.IδPlus δPlus_w,
            Interfaces.Variables.TP.WardDayBedAvailabilityDeviations.IδPlus δPlus_wd)
        {
            Expression LHS = δPlus_wd.Value[wIndexElement, dIndexElement];

            Expression RHS = δPlus_w.Value[wIndexElement];

            this.Value = LHS <= RHS;
        }
예제 #20
0
        public bool IsSurgeonMemberOfSurgicalSpecialty(
            IwIndexElement wIndexElement,
            IsIndexElement sIndexElement)
        {
            bool value = this.Value
                         .Where(x => x.wIndexElement == wIndexElement)
                         .Select(x => x.Value)
                         .SingleOrDefault()
                         .Contains(sIndexElement);

            return(value);
        }
        public Constraints14ConstraintElement(
            IdIndexElement dIndexElement,
            IwIndexElement wIndexElement,
            Interfaces.Variables.TP.WardBedOccupancyVariances.IVariance Variance_w,
            Interfaces.Variables.TP.WardDayBedRequirementVariances.IVariance Variance_wd)
        {
            Expression LHS =
                Variance_wd.Value[wIndexElement, dIndexElement];

            Expression RHS =
                Variance_w.Value[wIndexElement];

            this.Value = LHS <= RHS;
        }
        public Constraints13MConstraintElement(
            IdIndexElement dIndexElement,
            IwIndexElement wIndexElement,
            ITPy y,
            IδPlus δPlus,
            Iμ μ)
        {
            Expression LHS =
                y.Value[wIndexElement]
                -
                μ.Value[wIndexElement, dIndexElement];

            Expression RHS = δPlus.Value[wIndexElement, dIndexElement];

            this.Value = LHS <= RHS;
        }
예제 #23
0
        public IwIndexElement GetSurgicalSpecialtyOfSurgeon(
            IsIndexElement sIndexElement)
        {
            IwIndexElement value = null;

            foreach (IWParameterElement WParameterElement in this.Value)
            {
                if (this.IsSurgeonMemberOfSurgicalSpecialty(
                        WParameterElement.wIndexElement,
                        sIndexElement))
                {
                    value = WParameterElement.wIndexElement;
                }
            }

            return(value);
        }
예제 #24
0
        public int GetElementAt(
            IwIndexElement wIndexElement)
        {
            int value = 0;

            int rounded = (int)Math.Round(
                this.Value[wIndexElement].Value,
                0,
                MidpointRounding.AwayFromZero);

            if (this.Value[wIndexElement].Value.IsAlmost(rounded))
            {
                value = rounded;
            }

            return(value);
        }
예제 #25
0
        public bool IsThereElementAt(
            IwIndexElement wIndexElement,
            IpIndexElement pIndexElement)
        {
            int count = this.Value
                        .Where(x => x.wIndexElement == wIndexElement && x.pIndexElement == pIndexElement)
                        .Distinct()
                        .Count();

            if (count == 1)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public IwIndexElement Create(
            Organization value)
        {
            IwIndexElement indexElement = null;

            try
            {
                indexElement = new wIndexElement(
                    value);
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(indexElement);
        }
        public IWParameterElement Create(
            IwIndexElement wIndexElement,
            ImmutableList <IsIndexElement> value)
        {
            IWParameterElement parameterElement = null;

            try
            {
                parameterElement = new WParameterElement(
                    wIndexElement,
                    value);
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(parameterElement);
        }
예제 #28
0
        public ITPyResultElement Create(
            IwIndexElement wIndexElement,
            int value)
        {
            ITPyResultElement resultElement = null;

            try
            {
                resultElement = new TPyResultElement(
                    wIndexElement,
                    value);
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(resultElement);
        }
예제 #29
0
        public IWardNumberAssignedOperatingRoomsResultElement Create(
            IwIndexElement wIndexElement,
            int value)
        {
            IWardNumberAssignedOperatingRoomsResultElement resultElement = null;

            try
            {
                resultElement = new WardNumberAssignedOperatingRoomsResultElement(
                    wIndexElement,
                    value);
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(resultElement);
        }
예제 #30
0
        public IβParameterElement Create(
            IwIndexElement wIndexElement,
            FhirDecimal value)
        {
            IβParameterElement parameterElement = null;

            try
            {
                parameterElement = new βParameterElement(
                    wIndexElement,
                    value);
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(parameterElement);
        }