public static double NormalApproxCmax(Schedule S)
 {
     return(-RobustnessMeasures.NormalBasedEstimatedCmax(S, 0.3).Mean);
 }
Exemplo n.º 2
0
        public void Calculate(Schedule S)
        {
            double _GAMMA = Settings.RM_UFSandBFS_fraction;

            switch (Name)
            {
            case "FS":
                Value = RobustnessMeasures.SoFS(S);
                if (Settings.RMs_USE_MEANS)
                {
                    Value = Value / S.PrecedenceDAG.N;
                }
                break;

            case "BFS":
                Value = RobustnessMeasures.SoBFS(S, _GAMMA);
                if (Settings.RMs_USE_MEANS)
                {
                    Value = Value / S.PrecedenceDAG.N;
                }
                break;

            case "UFS":
                Value = RobustnessMeasures.SoUFS(S, _GAMMA);
                if (Settings.RMs_USE_MEANS)
                {
                    Value = Value / S.PrecedenceDAG.N;
                }
                break;

            case "wUFS":
                Value = RobustnessMeasures.SowUFS(S, _GAMMA);
                if (Settings.RMs_USE_MEANS)
                {
                    Value = Value / S.PrecedenceDAG.N;
                }
                break;

            case "wFS":
                Value = RobustnessMeasures.SowFS(S);
                if (Settings.RMs_USE_MEANS)
                {
                    Value = Value / S.PrecedenceDAG.N;
                }
                break;

            case "TS":
                Value = RobustnessMeasures.SoTS(S);
                if (Settings.RMs_USE_MEANS)
                {
                    Value = Value / S.PrecedenceDAG.N;
                }
                break;

            case "BTS":
                Value = RobustnessMeasures.SoBTS(S, _GAMMA);
                if (Settings.RMs_USE_MEANS)
                {
                    Value = Value / S.PrecedenceDAG.N;
                }
                break;

            case "UTS":
                Value = RobustnessMeasures.SoUTS(S, _GAMMA);
                if (Settings.RMs_USE_MEANS)
                {
                    Value = Value / S.PrecedenceDAG.N;
                }
                break;

            case "wTS":
                Value = RobustnessMeasures.SowTS(S);
                if (Settings.RMs_USE_MEANS)
                {
                    Value = Value / S.PrecedenceDAG.N;
                }
                break;

            case "wUTS":
                Value = RobustnessMeasures.SowUTS(S, _GAMMA);
                if (Settings.RMs_USE_MEANS)
                {
                    Value = Value / S.PrecedenceDAG.N;
                }
                break;

            case "SDR":
                Value = RobustnessMeasures.SoSDR(S);
                if (Settings.RMs_USE_MEANS)
                {
                    Value = Value / S.PrecedenceDAG.N;
                }
                break;

            case "DetCmax":
                Value = S.EstimateCmax();
                break;

            case "NormalApproxCmax":
                Value = RobustnessMeasures.NormalBasedEstimatedCmax(S, 0.3 * 0.3).Mean;
                break;

            case "NormalApprox2Sigma":
                Distribution NormalEstimation = RobustnessMeasures.NormalBasedEstimatedCmax(S, 0.3 * 0.3);
                Value = NormalEstimation.Mean + 2 * Math.Sqrt(NormalEstimation.Variation);
                break;

            default:
                throw new Exception("RM name not recognized");
                break;
            }
        }