Пример #1
0
        public void UpdateStats(ProgrammingProblem prob, SimilarityResult res)
        {
            int    cnt = prob.NumSol * prob.NumSol;
            double sum = 0.0;

            double max = 0.0;

            for (int i = 0; i < prob.NumSol; i++)
            {
                for (int j = 0; j < prob.NumSol; j++)
                {
                    if (i != j)
                    {
                        if (Double.IsNaN(res.getSimilarity(i, j)) == false)
                        {
                            sum += res.getSimilarity(i, j);
                            max  = Math.Max(max, res.getSimilarity(i, j));
                        }
                    }
                }
            }


            double avg = sum / cnt;

            lblAverage.Text = "Average:" + avg.ToString();
            lblMax.Text     = "Max:" + max.ToString();
        }
Пример #2
0
        private void ctrlProblemComparisonResults_Paint(object sender, PaintEventArgs e)
        {
            if (_result != null && _currProblem != null)
            {
                int numSol = _currProblem.ListSolutions.Count;

                Graphics g  = e.Graphics;
                float    dx = this.Width / (float)numSol;
                float    dy = this.Height / (float)numSol;

                //for(int i=0; i<numSol; i++ )
                //{
                //  g.DrawLine(Pens.Black, 0, i * dy, this.Width, i * dy);
                //  g.DrawLine(Pens.Black, i * dx, 0, i * dx, this.Height);
                //}

                for (int i = 0; i < numSol; i++)
                {
                    for (int j = 0; j < numSol; j++)
                    {
                        double measure  = _result.getSimilarity(i, j);
                        int    colorVal = 255 - (int)(measure * 255);

                        Brush myBrush = new SolidBrush(Color.FromArgb(colorVal, colorVal, colorVal));

                        g.FillRectangle(myBrush, i * dx, j * dy, (i + 1) * dx, (j + 1) + dy);

                        myBrush.Dispose();
                    }
                }
            }
            //else
            //  MessageBox.Show("Prdo");
        }
        private void ctrlProblemComparisonFrequency_Paint(object sender, PaintEventArgs e)
        {
            if (_result != null && _currProblem != null)
            {
                int numSol = _currProblem.ListSolutions.Count;

                Graphics g = e.Graphics;
                int[]    count = new int[101];
                int      totalCount = 0;
                int      maxCount = 0, maxI = -1;

                for (int i = 0; i < numSol; i++)
                {
                    for (int j = 0; j < numSol; j++)
                    {
                        if (i != j)
                        {
                            double measure = 100.0 * _result.getSimilarity(i, j);
                            if (Double.IsNaN(measure))
                            {
                                continue;
                            }
                            count[(int)(measure)]++;
                            if (count[(int)(measure)] > maxCount)
                            {
                                maxCount = count[(int)(measure)];
                                maxI     = (int)(measure);
                            }
                        }
                    }
                }

                totalCount = numSol * (numSol - 1);

                float dx = this.Width / (float)(101.0);
                for (int i = 0; i < 101; i++)
                {
                    double x, y, h;
                    x = i * dx;
                    y = (1.1 - (float)(count[i]) / (float)(maxCount)) * this.Height;
                    h = this.Height;
                    g.FillRectangle(new SolidBrush(Color.FromArgb(i * 255 / 101, 0, 0)), (float)x, (float)y, (float)dx, (float)h);
                }


                labelPeak.Text = Convert.ToString(Math.Round((float)(count[maxI]) / (float)(totalCount) * 100.0, 2)) + " - " + Convert.ToString(maxI);
                labelPeak.Top  = 0;
                labelPeak.Left = (int)(maxI * dx);
            }
        }
Пример #4
0
        public void UpdateStats(ProgrammingProblem prob, SimilarityResult res)
        {
            int    cnt = prob.NumSol * prob.NumSol;
            double sum = 0.0;

            for (int i = 0; i < prob.NumSol; i++)
            {
                for (int j = 0; j < prob.NumSol; j++)
                {
                    sum += res.getSimilarity(i, j);
                }
            }

            double avg = sum / cnt;

            lblAverage.Text = "Average:" + avg.ToString();
        }
Пример #5
0
        private void ctrlProblemComparisonFrequency_Paint(object sender, PaintEventArgs e)
        {
            if (_result != null && _currProblem != null)
            {
                int numSol = _currProblem.ListSolutions.Count;

                Graphics g        = e.Graphics;
                int[]    count    = new int[101];
                int      maxCount = -1;

                for (int i = 0; i < numSol; i++)
                {
                    for (int j = 0; j < numSol; j++)
                    {
                        double measure = _result.getSimilarity(i, j);
                        count[(int)(measure)]++;
                        if (count[(int)(measure)] > maxCount)
                        {
                            maxCount = count[(int)(measure)];
                        }
                    }
                }

                Brush myBrush = new SolidBrush(Color.FromArgb(255, 0, 0));

                float dx = this.Width / (float)(101.0);
                for (int i = 0; i <= 101; i++)
                {
                    float x, y, h;
                    x = i * dx;
                    y = maxCount - count[i];
                    h = this.Height - y;
                    g.FillRectangle(myBrush, x, y, dx, h);
                }


                myBrush.Dispose();
            }
        }