diff --git a/app/evaluation.py b/app/evaluation.py index 79484b7..760bc9c 100644 --- a/app/evaluation.py +++ b/app/evaluation.py @@ -19,12 +19,16 @@ def evaluation_function(response, answer, params) -> dict: to output the grading response. """ - rtol = params.get("rtol", 0) - atol = params.get("atol", 0) + if isinstance(answer, list): + rtol = 0 + atol = (answer[1]-answer[0])/2 + answer = (answer[1]+answer[0])/2 + else: + rtol = params.get("rtol", 0) + atol = params.get("atol", 0) is_correct = None real_diff = None - real_diff = abs(response - answer) allowed_diff = atol + rtol * abs(answer) is_correct = real_diff <= allowed_diff diff --git a/app/evaluation_tests.py b/app/evaluation_tests.py index c297065..9bc1979 100644 --- a/app/evaluation_tests.py +++ b/app/evaluation_tests.py @@ -192,6 +192,18 @@ def test_relative_absolute_incorrect(self): self.assertEqual(response.get("is_correct"), False) + def test_range_in_answer(self): + response = 1e6 + params = {} + + answer = [1e5,3e7] + result = evaluation_function(response, answer,params) + self.assertEqual(result.get("is_correct"), True) + + answer = [1e5,5e5] + result = evaluation_function(response, answer,params) + self.assertEqual(result.get("is_correct"), False) + if __name__ == "__main__": unittest.main()