Untitled
unknown
plain_text
a year ago
1.3 kB
3
Indexable
from docplex.mp.model import Model def solve_test_case_selection(lines_covered_by_tests): num_lines = max(max(test) for test in lines_covered_by_tests) # assuming lines are 1-indexed num_tests = len(lines_covered_by_tests) # Create an ILP model instance mdl = Model('test_case_selection') # Decision variables: x[j] == 1 if test j is selected x = mdl.binary_var_list(num_tests, name='x') # Objective: Minimize the number of test cases used mdl.minimize(mdl.sum(x)) # Constraints: Each line must be covered by at least one test case for i in range(1, num_lines + 1): mdl.add_constraint(mdl.sum(x[j] for j, test in enumerate(lines_covered_by_tests) if i in test) >= 1, f'cover_line_{i}') # Solve the model solution = mdl.solve() # Output selected test cases if solution: selected_tests = [j+1 for j, var in enumerate(x) if var.solution_value > 0.5] print("Selected Test Cases:", selected_tests) else: print("No solution found.") # Example usage lines_covered_by_tests = [ [3, 4, 6, 8], [1, 2, 4, 9, 10], [5, 6, 8, 10], [2, 5, 8, 9], [1, 4, 6, 7, 9, 10], [1, 2, 3, 5, 8] ] solve_test_case_selection(lines_covered_by_tests)
Editor is loading...
Leave a Comment