Ejemplo n.º 1
0
        // TODO: rework code from using 1d and 3d methods to just one
        public static int Generate(GenerateOptions opts, ILogger logger, FileWriter writer)
        {
            //TODO: add checks of opts
            opts.OutFile      = opts.OutFile ?? DefaultParams.seriesPath;
            opts.OutTestsFile = opts.OutTestsFile ?? DefaultParams.testsPath;

            logger.LogInformation("Operation started...");

            logger.LogInformation("Generate time-series");
            var rnd      = new Random();
            int distance = rnd.Next(opts.DataCount / 10);

            var generator = new TimeSeriesGenerator(opts.Sigma, opts.R, opts.B);

            var sequence = generator.Generate(DefaultParams.Y0, opts.Step, DefaultParams.skipCount + opts.DataCount);

            sequence = sequence.Skip(DefaultParams.skipCount);

            var testSequence = generator.Generate(DefaultParams.Y0, opts.Step,
                                                  DefaultParams.skipCount + opts.DataCount + distance + opts.TestsCount);

            if (opts.Dimentions == 1)
            {
                Get1dSequence(opts, logger, writer, sequence, testSequence);
            }

            if (opts.Dimentions == 3)
            {
                Get3dSequence(opts, logger, writer, sequence, testSequence);
            }
            //TODO: add write to MongoDb
            logger.LogInformation("The distance between learning sequence and testing sequence = {distance}", distance);
            logger.LogInformation("Operation completed");
#if DEBUG
            Console.ReadLine();
#endif
            return(0);
        }
Ejemplo n.º 2
0
        private static void Get1dSequence(GenerateOptions opts, ILogger logger, FileWriter writer, IEnumerable <Vector3> sequence, IEnumerable <Vector3> testSequence)
        {
            var sequenceX     = sequence.Select(number => number.X);
            var testSequenceX = testSequence.Select(number => number.X);

            if (opts.Normalize)
            {
                logger.LogInformation("Normalize generated series");

                var sec = sequenceX.Concat(testSequenceX);
                sec           = sec.Normalize();
                sequenceX     = sec.Take(sequence.Count());
                testSequenceX = sec.Skip(sequence.Count());
            }

            writer.Write(sequenceX, opts.OutFile);
            logger.LogDebug("Writing sequence to {file}", opts.OutFile);
            logger.LogInformation("Writing sequence to file finished");

            writer.Write(testSequenceX, opts.OutTestsFile);
            logger.LogDebug("Writing testing sequence to {file}", opts.OutTestsFile);
            logger.LogInformation("Writing testing sequence to file finished");
        }
Ejemplo n.º 3
0
        private static void Get3dSequence(GenerateOptions opts, ILogger logger, FileWriter writer, IEnumerable <Vector3> sequence, IEnumerable <Vector3> testSequence)
        {
            if (opts.Normalize)
            {
                logger.LogInformation("Normalize generated series");

                var sec = sequence.Concat(testSequence);
                sec          = sec.Normalize();
                sequence     = sec.Take(sequence.Count());
                testSequence = sec.Skip(sequence.Count());
            }

            var arrSequence     = sequence.Select(vec => new float[] { vec.X, vec.Y, vec.Z });
            var arrTestSequence = testSequence.Select(vec => new float[] { vec.X, vec.Y, vec.Z });

            writer.Write(arrSequence, opts.OutFile);
            logger.LogDebug("Writing sequence to {file}", opts.OutFile);
            logger.LogInformation("Writing sequence to file finished");

            writer.Write(arrTestSequence, opts.OutTestsFile);
            logger.LogDebug("Writing testing sequence to {file}", opts.OutTestsFile);
            logger.LogInformation("Writing testing sequence to file finished");
        }