Ejemplo n.º 1
0
        public ObjectModel(double dt)
        {
            this.dt = dt;

            firstVessel  = new List <BaseBlock>();
            secondVessel = new List <BaseBlock>();
            pipe1        = new ComplexBlock();
            pipe2        = new ComplexBlock();
            pipe3        = new ComplexBlock();
            pipe4        = new ComplexBlock();
            valveLimit   = new LimitBlock(0, 100);

            firstVessel.Add(new APBlock(dt, 30, 0, 150));
            secondVessel.Add(new APBlock(dt, 30, 0, 100));
            pipe1.Blocks.Add(new GainBlock(1));
            pipe2.Blocks.Add(new GainBlock(1));
            pipe3.Blocks.Add(new GainBlock(1));
            pipe3.Blocks.Add(new DelayBlock(1, dt));
            pipe4.Blocks.Add(new GainBlock(1));
            pipe4.Blocks.Add(new DelayBlock(1, dt));

            valve1            = 0;
            valve2            = 0;
            valve3            = 0;
            valve4            = 0;
            Time              = 0;
            firstVesselValue  = 0;
            secondVesselValue = 0;
        }
Ejemplo n.º 2
0
 public ControlSystem(double dt)
 {
     this.dt        = dt;
     objectModel    = new ObjectModel(dt);
     PID            = new PIDBlock(dt, 0, 0.05, 1.8);
     IsManual       = false;
     setpointLimit  = new LimitBlock(0, 100);
     setpointDamper = new APBlock(dt, 3, 0, 100);
 }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            string outFile = @"c:\temp\losses_large_streamed_out";

            var executionDataflowBlockOptionsSingle = new ExecutionDataflowBlockOptions {
                MaxDegreeOfParallelism = 1
            };
            var executionDataflowBlockOptions = new ExecutionDataflowBlockOptions {
                MaxDegreeOfParallelism = 10
            };

            var roundCount = 1000000;

            var dataReader = new DataReaderBlock(DataFormat.Protobuf, roundCount);
            var dataWriter = new DataWriterBlock(outFile, DataFormat.Protobuf, roundCount, executionDataflowBlockOptionsSingle);
            var limiter    = new LimitBlock(300000, executionDataflowBlockOptions);
            var scaler     = new ScaleBlock(0.9m, executionDataflowBlockOptions);
            var risk       = new RiskMeasuresBlock(executionDataflowBlockOptionsSingle);
            var nullTarget = DataflowBlock.NullTarget <Trial>();

            dataReader
            .Then(limiter)
            .Then(scaler)
            .Then(risk)
            .Then(dataWriter)
            .Then(nullTarget);


            dataReader.InputBlock.Post(@"c:\temp\losses_large_streamed_in1");

            var calculationStartDate = DateTime.UtcNow;

            dataReader.InputBlock.Complete();

            while (!dataWriter.GetOutput().Completion.IsCompleted)
            {
                var totalTimeElapsed = Math.Round((DateTime.UtcNow - calculationStartDate).TotalSeconds, 2);
                var calculatedTrials = risk.GetProcessedItemsCount();
                var percentComplete  = (float)Math.Round(calculatedTrials / (float)roundCount * 100, 2);

                Console.WriteLine($"Elapsed: {totalTimeElapsed}s, {calculatedTrials}/{roundCount} ({percentComplete}%)");

                Task[] tasksToWaitFor = { Task.Delay(1000), dataWriter.GetOutput().Completion };
                Task.WaitAny(tasksToWaitFor);
            }
            Console.WriteLine("");
            var res = risk.GetCalculationResult();

            Console.WriteLine(res.ToString());

            Console.ReadKey();
        }
Ejemplo n.º 4
0
 protected SqlSelectBuilderBase LimitBy(Operand limitBy)
 {
     LimitBlock      = new LimitBlock(limitBy);
     CurrentPosition = SqlSelectPosition.Limit;
     return(this);
 }