Exemple #1
0
        public SimilarityResult BatchAnalyze(ICodeSimilarityMetricCalculator selMetric, ProgrammingProblem problem)
        {
            DateTime         current = DateTime.Now;
            SimilarityResult result  = new SimilarityResult(problem, selMetric);

            StudentSolution[] solutions = new StudentSolution[problem.NumSol];
            for (int i = 0; i < problem.NumSol; i++)
            {
                solutions[i] = result.getSimilarityObject(i, i).Solution1;
            }

            double [,] tmp = new double[problem.NumSol, problem.NumSol];
            tmp            = selMetric.BatchSimilarityMeasure(solutions);

            for (int i = 0; i < problem.NumSol; i++)
            {
                for (int j = 0; j < problem.NumSol; j++)
                {
                    if (i != j)
                    {
                        double measure = tmp[i, j];

                        result.setSimilarity(i, j, measure);
                        result.setSimilarity(j, i, measure);
                    }
                    else
                    {
                        result.setSimilarity(i, i, 1.0); // neæemo ga usporeðivati sa samim sobom
                    }
                }
            }
            System.Windows.Forms.MessageBox.Show("Runtime: " + DateTime.Now.Subtract(current).ToString());
            return(result);
        }
Exemple #2
0
        public SimilarityResult Analyze(ICodeSimilarityMetricCalculator selMetric, ProgrammingProblem problem)
        {
            DateTime         current = DateTime.Now;
            SimilarityResult result  = new SimilarityResult(problem, selMetric);

            for (int i = 0; i < problem.NumSol; i++)
            {
                for (int j = 0; j < problem.NumSol; j++)
                {
                    if (i != j)
                    {
                        StudentSolution sol1 = result.getSimilarityObject(i, j).Solution1;
                        StudentSolution sol2 = result.getSimilarityObject(i, j).Solution2;

                        double measure = selMetric.CalculateSimilarityMeasure(sol1, sol2);

                        result.setSimilarity(i, j, measure);
                        result.setSimilarity(j, i, measure);
                    }
                    else
                    {
                        result.setSimilarity(i, i, 1.0); // neæemo ga usporeðivati sa samim sobom
                    }
                }
            }
            System.Windows.Forms.MessageBox.Show("Runtime: " + DateTime.Now.Subtract(current).ToString());
            return(result);
        }
Exemple #3
0
        public SimilarityResult(ProgrammingProblem inProblem, ICodeSimilarityMetricCalculator inMetric)
        {
            _usedMetric = inMetric;

            int numSol = inProblem.ListSolutions.Count;

            _matSolutionsSimilarity = new SolutionsSimilarity[numSol, numSol];
            for (int i = 0; i < numSol; i++)
            {
                for (int j = 0; j < numSol; j++)
                {
                    _matSolutionsSimilarity[i, j] = new SolutionsSimilarity();

                    _matSolutionsSimilarity[i, j].Solution1         = inProblem.ListSolutions[i];
                    _matSolutionsSimilarity[i, j].Solution2         = inProblem.ListSolutions[j];
                    _matSolutionsSimilarity[i, j].SimilarityMeasure = 0.0;
                }
            }
        }
Exemple #4
0
        private void cmdBatchAnalyze_Click(object sender, EventArgs e)
        {
            int selMetricInd = cmbSelMetric.SelectedIndex;

            if (selMetricInd > -1 && _controller.CurrProblem != null)
            {
                ICodeSimilarityMetricCalculator selMetric = _controller.CSCManager.ListDefinedMetrics[selMetricInd];

                SimilarityResult res = _controller.CSCManager.BatchAnalyze(selMetric, _controller.CurrProblem);

                ctrlResults.setProblemAndResult(_controller.CurrProblem, res);
                ctrlResults.Invalidate();

                UpdateStats(_controller.CurrProblem, res);
            }
            else
            {
                MessageBox.Show("Metric or curr.problem NOT selected !!!");
            }
        }