Пример #1
0
        public void Add(MissionParameter parameter, bool replaceExisting = false)
        {
            CheckConsistency(parameter);

            switch (parameter)
            {
            case ConstantOutputMissionParameter comp:
                break;

            case ConstantMissionParameter cmp:
                break;

            case VariableMissionParameter vmp:
                break;

            default:
                break;
            }

            if (!parameters.ContainsKey(parameter.Name))
            {
                parameters.Add(parameter.Name, parameter);
            }
            else if (replaceExisting)
            {
                parameters[parameter.Name] = parameter;
            }
        }
Пример #2
0
        private void CheckConsistency(MissionParameter parameter)
        {
            Check("Number of Samples", parameter.Samples, Samples);
            Check("Duration", parameter.Duration, Duration);
            Check("Start", parameter.Start, Start);

            void Check(string name, double v1, double v2)
            {
                if (v1 != v2)
                {
                    throw new ArgumentException($"The parameter '{name}' is not consistenst with the segment '{name}'. {v1} vs {v2}");
                }
            }
        }
Пример #3
0
        public void Remove(MissionParameter parameter)
        {
            switch (parameter)
            {
            case ConstantOutputMissionParameter comp:
                break;

            case ConstantMissionParameter cmp:
                break;

            case VariableMissionParameter vmp:
                break;

            default:
                break;
            }

            if (parameters.ContainsKey(parameter.Name))
            {
                parameters.Remove(parameter.Name);
            }
        }
Пример #4
0
        public (int[] variableIn, int[] constantIn, int[] variableOut, int[] constantOut, List <MissionParameter> missionParameters) GetComponentCalssificationAndIndices(WorkflowComponent component)
        {
            var variableInputs  = new List <string>();
            var constantInputs  = new List <string>();
            var variableOutputs = new List <string>();
            var constantOutputs = new List <string>();

            var modelDataDict     = new Dictionary <string, int>();
            var missionParameters = new List <MissionParameter>(component.ModelDataInputs.Count + component.ModelDataOutputs.Count);

            for (int i = 0; i < component.ModelDataInputs.Count; i++)
            {
                Data   data = component.ModelDataInputs[i];
                string name = data.Name;

                try
                {
                    MissionParameter parameter = parameters[name];
                    missionParameters.Add(parameter);

                    if (parameter is VariableMissionParameter vmp)
                    {
                        variableInputs.Add(name);
                    }
                    else if (parameter is ConstantMissionParameter cmp)
                    {
                        constantInputs.Add(name);
                    }
                }
                catch (KeyNotFoundException knfe)
                {
                    throw new KeyNotFoundException($"No parameter for variable '{data}' was found in segment {Name}", knfe);
                }

                modelDataDict[name] = i;
            }

            for (int i = 0; i < component.ModelDataOutputs.Count; i++)
            {
                Data   data = component.ModelDataInputs[i];
                string name = data.Name;

                try
                {
                    MissionParameter parameter = parameters[name];
                    missionParameters.Add(parameter);

                    if (parameter is VariableMissionParameter vmp)
                    {
                        variableOutputs.Add(name);
                    }
                    else if (parameter is ConstantMissionParameter cmp)
                    {
                        constantOutputs.Add(name);
                    }
                }
                catch (KeyNotFoundException knfe)
                {
                    throw new KeyNotFoundException($"No parameter for variable '{data}' was found in segment {Name}", knfe);
                }

                modelDataDict[name] = i;
            }

            int[] variableIn  = variableInputs.Select(v => modelDataDict[v]).ToArray();
            int[] constantIn  = constantInputs.Select(v => modelDataDict[v]).ToArray();
            int[] variableOut = variableOutputs.Select(v => modelDataDict[v]).ToArray();
            int[] constantOut = constantOutputs.Select(v => modelDataDict[v]).ToArray();

            return(variableIn, constantIn, variableOut, constantOut, missionParameters);
        }