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(); }
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(); } }