Example #1
0
 private void accuracyButton_Click(object sender, EventArgs e)
 {
     frankChart.Series[0].Points.Clear();
     geneticChart.Series[0].Points.Clear();
     annealChart.Series[0].Points.Clear();
     avgChart.Series[0].Points.Clear();
     avgChart.Series[1].Points.Clear();
     avgChart.Series[2].Points.Clear();
     frankChart.Titles.Clear();
     geneticChart.Titles.Clear();
     annealChart.Titles.Clear();
     avgChart.Titles.Clear();
     for (int i = 2; i < numOfIterations.Value; i++)
     {
         CounterResult res = counter.CountTime(10, i,
                                               decimal.ToInt32(sumIntervalStart.Value), decimal.ToInt32(sumIntervalEnd.Value),
                                               decimal.ToInt32(amountIntervalStart.Value), decimal.ToInt32(amountIntervalEnd.Value));
         frankChart.Series[0].Points.AddXY(i, res.FrankBetter / 10);
         geneticChart.Series[0].Points.AddXY(i, res.GeneticBetter / 10);
         annealChart.Series[0].Points.AddXY(i, res.AnnealBetter / 10);
         avgChart.Series[0].Points.AddXY(i, res.FrankBetter / 10);
         avgChart.Series[1].Points.AddXY(i, res.GeneticBetter / 10);
         avgChart.Series[2].Points.AddXY(i, res.AnnealBetter / 10);
     }
     frankChart.ChartAreas["ChartArea1"].AxisY.Title   = "% of better solutions";
     geneticChart.ChartAreas["ChartArea1"].AxisY.Title = "% of better solutions";
     annealChart.ChartAreas["ChartArea1"].AxisY.Title  = "% of better solutions";
     avgChart.ChartAreas["ChartArea1"].AxisY.Title     = "% of better solutions";
     frankChart.Titles.Add("Залежність точності від кількості продуктів");
     geneticChart.Titles.Add("Залежність точності від кількості продуктів");
     annealChart.Titles.Add("Залежність точності від кількості продуктів");
     avgChart.Titles.Add("Залежність точності від кількості продуктів");
 }
Example #2
0
        private void timeButton_Click(object sender, EventArgs e)
        {
            frankChart.Series[0].Points.Clear();
            geneticChart.Series[0].Points.Clear();
            annealChart.Series[0].Points.Clear();
            avgChart.Series[0].Points.Clear();
            avgChart.Series[1].Points.Clear();
            avgChart.Series[2].Points.Clear();
            frankChart.Titles.Clear();
            geneticChart.Titles.Clear();
            annealChart.Titles.Clear();
            avgChart.Titles.Clear();
            for (int i = 2; i < numOfIterations.Value; i++)
            {
                CounterResult res = counter.CountTime(10, i,
                                                      decimal.ToInt32(sumIntervalStart.Value), decimal.ToInt32(sumIntervalEnd.Value),
                                                      decimal.ToInt32(amountIntervalStart.Value), decimal.ToInt32(amountIntervalEnd.Value));
                frankChart.Series[0].Points.AddXY(i, res.WolfAvg);
                geneticChart.Series[0].Points.AddXY(i, res.GeneticAvg);
                annealChart.Series[0].Points.AddXY(i, res.AnnealAvg);
                avgChart.Series[0].Points.AddXY(i, res.WolfAvg);
                avgChart.Series[1].Points.AddXY(i, res.GeneticAvg);
                avgChart.Series[2].Points.AddXY(i, res.AnnealAvg);
            }

            frankChart.ChartAreas["ChartArea1"].AxisY.Title   = "Execution time";
            geneticChart.ChartAreas["ChartArea1"].AxisY.Title = "Execution time";
            annealChart.ChartAreas["ChartArea1"].AxisY.Title  = "Execution time";
            avgChart.ChartAreas["ChartArea1"].AxisY.Title     = "Execution time";
            frankChart.Titles.Add("Залежність часу виконання програми від кількості продуктів");
            geneticChart.Titles.Add("Залежність часу виконання програми від кількості продуктів");
            annealChart.Titles.Add("Залежність часу виконання програми від кількості продуктів");
            avgChart.Titles.Add("Залежність часу виконання програми від кількості продуктів");
        }
Example #3
0
 private void AddInnerOperationResult(CounterResult result)
 {
     if (_innerOperationResults == null)
     {
         _innerOperationResults = new List <CounterResult>();
     }
     _innerOperationResults.Add(result);
 }
Example #4
0
        private static void BuildMessage(CounterResult result, StringBuilder builder, String prefix = "\t")
        {
            builder.AppendLine().Append(prefix).Append(result.Name).Append(": ").Append(result.ElapsedMs).Append(" ms");
            if (result.InnerResults == null)
            {
                return;
            }
            var nextPrefix = prefix + "\t";

            foreach (var inner in result.InnerResults)
            {
                BuildMessage(inner, builder, nextPrefix);
            }
        }
Example #5
0
        public Reader()
        {
            var eventWriter = new EventWriter("CounterResults");

            Receive <Shared.Event>(message =>
            {
                Console.WriteLine($"Message received by Reader {Self}");
                string paymentReference;
                switch ((MessageType)message.MessageType)
                {
                case MessageType.ApprovalStatusChanged:
                    paymentReference = JsonConvert.DeserializeObject <PaymentApprovalStatusChangedMessage>(message.Message).PaymentReference;
                    Console.WriteLine($"**ApprovalStatusChanged Event received for payment {paymentReference}");
                    break;

                case MessageType.PaymentStatusChanged:
                    var pscmessage = JsonConvert.DeserializeObject <PaymentStatusChangedMessage>(message.Message);
                    var calculator = new CustomerPaymentCounterCalculator();
                    var result     = calculator.GetPaymentChanges(pscmessage);

                    var eReader1    = new Hackathon.EventStore.Core.EventReader($"evt-{pscmessage.Payment.PaymentReference}");
                    var allMessages = eReader1.ReadAllMessages(pscmessage.Payment.PaymentReference);

                    var counterResult = new CounterResult
                    {
                        CustomerReference = pscmessage.Customer.CustomerReference,
                        PaymentReference  = pscmessage.Payment.PaymentReference,
                        Increment         = result
                    };

                    eventWriter.WriteEvent(counterResult.AsJsonString(), "IncrementCalculated");
                    Console.WriteLine($"**Event received for payment {pscmessage.Payment.PaymentReference}");
                    break;

                case MessageType.CustomerAccountChanged:
                    paymentReference = JsonConvert.DeserializeObject <PaymentCustomerAccountChangedMessage>(message.Message).PaymentReference;
                    Console.WriteLine($"**CustomerAccountChanged Event received for payment {paymentReference}");
                    break;

                case MessageType.WithdrawalChannelChanged:
                    paymentReference = JsonConvert.DeserializeObject <WithdrawalChannelChangedMessage>(message.Message).PaymentReference;
                    Console.WriteLine($"**WithdrawalChannelChanged Event received for payment {paymentReference}");
                    break;

                default:
                    Console.WriteLine("arrrrr");
                    return;
                }
            });
        }
Example #6
0
        static void Main(string[] args)
        {
            EventStoreLoader.SetupEventStore();
            var eventReader = new EventReader("Payments");
            var eventWriter = new EventWriter("CounterResults");

            eventReader.ConnectToPersistentSubscription("Payments", "Payments_Counter", (_, e) =>
            {
                var data = Encoding.ASCII.GetString(e.Event.Data);
                switch (e.Event.EventType)
                {
                case "PaymentStatusChanged":
                    var pscmessage    = data.ParseJson <PaymentStatusChangedMessage>();
                    var calculator    = new CustomerPaymentCounterCalculator();
                    var result        = calculator.GetPaymentChanges(pscmessage);
                    var eReader1      = new EventReader($"evt-{pscmessage.Payment.PaymentReference}");
                    var allMessages   = eReader1.ReadAllMessages(pscmessage.Payment.PaymentReference);
                    var counterResult = new CounterResult {
                        CustomerReference = pscmessage.Customer.CustomerReference, PaymentReference = pscmessage.Payment.PaymentReference, Increment = result
                    };
                    eventWriter.WriteEvent(counterResult.AsJsonString(), "IncrementCalculated");
                    Console.WriteLine($"**Event received for payment {pscmessage.Payment.PaymentReference}");
                    break;

                case "ApprovalStatusChanged":
                    var asmessage = data.ParseJson <PaymentApprovalStatusChangedMessage>();
                    break;

                case "CustomerAccountChanged":
                    var camessage = data.ParseJson <PaymentCustomerAccountChangedMessage>();
                    break;

                case "WithdrawalChannelChanged":
                    var wcmessage = data.ParseJson <WithdrawalChannelChangedMessage>();
                    break;

                default:
                    Console.WriteLine("Cannot parse event type");
                    return;
                }
            });

            Console.ReadLine();
        }
Example #7
0
        public unsafe IResult Detect(SoftwareBitmap image)
        {
            CounterResult result = new CounterResult()
            {
                Count = 0,
                Image = new SoftwareBitmap(image.BitmapPixelFormat, image.PixelWidth, image.PixelHeight)
            };

            image.CopyTo(result.Image);

            using (BitmapBuffer buffer = result.Image.LockBuffer(BitmapBufferAccessMode.Write))
            {
                using (var reference = buffer.CreateReference())
                {
                    ((IMemoryBufferByteAccess)reference).GetBuffer(out byte *dataInBytes, out uint capacity);

                    // Fill-in the BGRA plane
                    BitmapPlaneDescription bufferLayout = buffer.GetPlaneDescription(0);
                    for (int i = 0; i < bufferLayout.Height; i++)
                    {
                        for (int j = 0; j < bufferLayout.Width; j++)
                        {
                            int b = dataInBytes[bufferLayout.StartIndex + bufferLayout.Stride * i + 4 * j + 0] - Color.B;
                            int g = dataInBytes[bufferLayout.StartIndex + bufferLayout.Stride * i + 4 * j + 1] - Color.G;
                            int r = dataInBytes[bufferLayout.StartIndex + bufferLayout.Stride * i + 4 * j + 2] - Color.R;

                            if (b * b + g * g + r * r < Delta * Delta)
                            {
                                result.Count++;
                                dataInBytes[bufferLayout.StartIndex + bufferLayout.Stride * i + 4 * j + 0] = 0;
                                dataInBytes[bufferLayout.StartIndex + bufferLayout.Stride * i + 4 * j + 1] = 0;
                                dataInBytes[bufferLayout.StartIndex + bufferLayout.Stride * i + 4 * j + 2] = 255;
                                dataInBytes[bufferLayout.StartIndex + bufferLayout.Stride * i + 4 * j + 3] = (byte)255;
                            }
                        }
                    }
                }
            }

            return(result);
        }
Example #8
0
        public async Task <CounterResult> GetValue()
        {
            var random       = new Random().Next(1, 1000);
            var counterState = await this.StateManager.GetOrAddAsync <IReliableDictionary <string, string> >(
                "counterState");

            var cts   = new CancellationTokenSource();
            var token = cts.Token;

            token.ThrowIfCancellationRequested();
            CounterResult result = null;

            await this.circuitBreaker.Invoke(
                async() =>
            {
                // mocking service result. randomly failing the service call.
                var failureSeed = new Random().Next(1, 20);
                if (failureSeed % 3 == 0)
                {
                    throw new ApplicationException();
                }
                Thread.Sleep(TimeSpan.FromSeconds(2));
                result = new CounterResult
                {
                    Value        = random,
                    ReportTime   = DateTime.UtcNow,
                    CircuitState = "Open"
                };
                using (var tx = this.StateManager.CreateTransaction())
                {
                    await counterState.AddOrUpdateAsync(
                        tx,
                        "savedCount",
                        key => JsonConvert.SerializeObject(result),
                        (key, val) => JsonConvert.SerializeObject(result));
                    await tx.CommitAsync();
                }
            },
                async() =>
            {
                using (var tx = this.StateManager.CreateTransaction())
                {
                    // service faulted. read old value and populate.
                    var value = await counterState.TryGetValueAsync(tx, "savedCount");
                    if (value.HasValue)
                    {
                        result = JsonConvert.DeserializeObject <CounterResult>(value.Value);
                    }
                    else
                    {
                        result = new CounterResult {
                            ReportTime = DateTime.UtcNow, Value = 0
                        };
                        await counterState.AddOrUpdateAsync(
                            tx,
                            "savedCount",
                            key => JsonConvert.SerializeObject(result),
                            (key, val) => JsonConvert.SerializeObject(result));
                        await tx.CommitAsync();
                    }

                    result.CircuitState = "Closed";
                }
            });

            return(result);
        }
        public override CounterResult ExecuteCommand()
        {
            Result = new CounterResult();
            StendDLLCommands stend = new StendDLLCommands();

            try
            {
                stend.SetRefClockStend(0, StendSettings.ComPort);
                //Если стенд не оборудован блоком точности хода часов
            } catch (StendConnectionException) { }

            try {
                stend.ErrorClear(StendSettings.ComPort);

                //Если стенд однофазный и у него две токовые цепи, то выбираю первую цепь (A)
                if (StendSettings.OnePhaseTwoCircuits)
                {
                    stend.SelectCurrentCircuit(0, StendSettings.ComPort);
                }

                stend.SetReviseMode(3);

                //Подаю напряжение на счетчики
                stend.AdjustUI(Phase, Rated_Volt, 0, Rated_Freq, PhaseSrequence, IsRevers,
                               Volt_Per, Curr_Per, IABC, CosP, StendSettings.SModel, StendSettings.ComPort);

                //Даю время запуститься счетчикам
                Thread.Sleep(5000);

                if (IsActiveEnergy == 1)
                {
                    StendSettings.Constant = StendSettings.ConstantAP;
                }
                else
                {
                    StendSettings.Constant = StendSettings.ConstantRP;
                }

                //Запускаю тест
                for (int j = 0; j < StendSettings.ActivePlaces.Count; j++)
                {
                    stend.setPulseChannel(StendSettings.ActivePlaces[j], (byte)(2 * (IsActiveEnergy == 1 ? 0 : 1) + IsRevers), StendSettings.ComPort);
                    stend.ConstTestStart(StendSettings.ActivePlaces[j], StendSettings.Constant, StendSettings.ComPort);
                }

                //Подаю ток, который выставлен для испытания
                stend.AdjustUI(Phase, Rated_Volt, Rated_Curr, Rated_Freq, PhaseSrequence, IsRevers,
                               Volt_Per, Curr_Per, IABC, CosP, StendSettings.SModel, StendSettings.ComPort);

                bool[] result = new bool[StendSettings.ActivePlaces.Count];

                while (!Cancel)
                {
                    double count = 0;
                    for (int j = 0; j < StendSettings.ActivePlaces.Count; j++)
                    {
                        if (result[j])
                        {
                            continue;
                        }

                        stend.ConstPulseRead(out double meter_kW, out double std_kW, StendSettings.Constant, StendSettings.ActivePlaces[j], StendSettings.ComPort);

                        //Amount тут используется как количество энергии, которое должно поступить для окончания испытаний
                        count    += std_kW > Amount ? Amount : std_kW;
                        result[j] = std_kW >= Amount;

                        //Высчитываю процент погрешности между энергией, которую накрутил счётчик и которую посчитал эталонный счетчик установки
                        if (result[j])
                        {
                            Result[StendSettings.ActivePlaces[j]] = string.Format("{0:f5}", (100 * (1.0 - (meter_kW / std_kW)))) + "%";
                        }
                    }

                    Progress = ProgressMaxValue * count / (Amount * StendSettings.ActivePlaces.Count);

                    //Дожидаюсь пока получу готовность подсчета всех счетчиков
                    bool exit = true;
                    for (int j = 0; j < StendSettings.ActivePlaces.Count; j++)
                    {
                        exit &= result[j];
                    }
                    if (exit)
                    {
                        break;
                    }

                    Thread.Sleep(400);
                }

                Progress = ProgressMaxValue;
            }
            catch
            {
                Progress = ProgressMinValue;
                throw;
            }
            finally
            {
                stend.ErrorClear(StendSettings.ComPort);
                stend.PowerOff(StendSettings.ComPort);
            }

            return(Result);
        }
Example #10
0
 public void SetUserCancel() => Result = CounterResult.UserCancel;
Example #11
0
 public void SetSuccess() => Result    = CounterResult.Success;
Example #12
0
 public void SetFailure() => Result    = CounterResult.Failure;
Example #13
0
 public void SetUserFault() => Result  = CounterResult.UserFault;