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); }
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); }
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; } } }
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 !!!"); } }