Ejemplo n.º 1
0
        public override void CreateFolder()
        {
            base.CreateFolder();

            // Add custom metadata for Latin Hypercube
            metadata.AddAttribute("Type", "DesignsStudy");
            //metadata.AddAttribute("WorkflowName", component.Name);

            metadata.AddTag("Name", "Latin Hypercube Sampling");

            metadata.AddParameter(new IntegerData("ID"));

            var dummy = new DoubleVectorData(Input.Name, "", null, (Input as DoubleData).DecimalPlaces, Input.Unit);

            metadata.AddParameter(dummy, new XElement("IntegralFactor",
                                                      new XAttribute("InitialValue", X0),
                                                      new XAttribute("FinalValue", Xn),
                                                      new XAttribute("Step", H)));

            dummy = new DoubleVectorData($"d{Output.Name}/d{Input.Name}", "", null, (Output as DoubleData).DecimalPlaces, Output.Unit);
            metadata.AddParameter(dummy, new XElement("IntegralResponse"));

            dummy = new DoubleVectorData(Output.Name, "", null, (Output as DoubleData).DecimalPlaces, Output.Unit);
            metadata.AddParameter(dummy, new XElement("IntegralResponse", new XAttribute("InitialValue", X0)));

            metadata.Save();
        }
Ejemplo n.º 2
0
        private void WriteLinetoCSVArray(CSVFiler csvFile, double[] x, double[] e, double[] y)
        {
            csvFile.NewRow();

            csvFile.AddToRow(0 /*IntegerVectorData.ValueToString(i)*/);
            csvFile.AddToRow(DoubleVectorData.ValueToString(x));
            csvFile.AddToRow(DoubleVectorData.ValueToString(e));
            csvFile.AddToRow(DoubleVectorData.ValueToString(y));

            csvFile.WriteRow();
        }
        private void WriteResults()
        {
            //using (var csvFile = new CSVFiler(CsvPath))
            //{
            //	var parametersLookup = Mission.Segments.SelectMany(s => s.Parameters.Select(p => (p, s.Times))).ToLookup(t => t.Item1.Data.Name);

            //	csvFile.NewRow();
            //	csvFile.AddToRow(1);

            //	foreach (var data in Mission.Data)
            //	{
            //		var tuples = parametersLookup[data.Name];
            //		double[] times = tuples.Select(t => t.Item2).Aggregate(new List<double>(), (t, l) =>
            //		{
            //			t.AddRange(l);
            //			return t;
            //		}, t => t.ToArray());

            //		var values = tuples.Select(t =>
            //		{
            //			(MissionParameter parameter, double[] timeArray) = t;
            //			var vals = new double[0];
            //			if (parameter is ConstantMissionParameter constantParameter)
            //			{
            //				if (constantParameter.Data.Value is double d)
            //				{
            //					vals = MathNet.Numerics.Generate.Repeat(timeArray.Length, d);

            //				}
            //				else if (constantParameter.Data.Value is int i)
            //				{
            //					vals = MathNet.Numerics.Generate.Repeat(timeArray.Length, (double)i);
            //				}
            //			}
            //			else if (parameter is VariableMissionParameter variableParameter)
            //			{
            //				vals = variableParameter.Values.Cast<double>().ToArray();
            //			}
            //			return vals;
            //		}).Aggregate(new List<double>(), (t, l) =>
            //		{
            //			t.AddRange(l);
            //			return t;
            //		}, t => t.ToArray());

            //		csvFile.AddToRow(DoubleVectorData.ValueToString(times));
            //		csvFile.AddToRow(DoubleVectorData.ValueToString(values));
            //	}

            //	csvFile.WriteRow();
            //}

            using (var csvFile = new CSVFiler(CsvPath))
            {
                csvFile.NewRow();
                csvFile.AddToRow(1);

                foreach (var segment in Mission.Segments)
                {
                    double[] times = segment.Times;
                    csvFile.AddToRow(DoubleVectorData.ValueToString(times));

                    foreach (var parameter in segment.Parameters)
                    {
                        var values = new double[0];
                        if (parameter is ConstantMissionParameter constantParameter)
                        {
                            if (constantParameter.Data.Value is double d)
                            {
                                values = MathNet.Numerics.Generate.Repeat(times.Length, d);
                            }
                            else if (constantParameter.Data.Value is int i)
                            {
                                values = MathNet.Numerics.Generate.Repeat(times.Length, (double)i);
                            }
                        }
                        else if (parameter is VariableMissionParameter variableParameter)
                        {
                            values = variableParameter.Values.Cast <double>().ToArray();
                        }
                        csvFile.AddToRow(DoubleVectorData.ValueToString(values));
                    }
                }

                csvFile.WriteRow();
            }
        }