|
| 1 | +import time |
| 2 | +import fastlap |
| 3 | +import numpy as np |
| 4 | +from scipy.optimize import linear_sum_assignment |
| 5 | +import lap |
| 6 | + |
| 7 | + |
| 8 | +if __name__ == "__main__": |
| 9 | + # Quick example for a 3x3 matrix |
| 10 | + matrix = np.random.rand(4, 5) |
| 11 | + for algo in ["lapjv", "hungarian"]: |
| 12 | + print(f"\nAlgorithm: {algo}") |
| 13 | + start = time.time() |
| 14 | + fastlap_cost, fastlap_rows, fastlap_cols = fastlap.solve_lap(matrix, algo) |
| 15 | + fastlap_end = time.time() |
| 16 | + print(f"fastlap.{algo}: Time={fastlap_end - start:.8f}s") |
| 17 | + print( |
| 18 | + f"fastlap.{algo}: Cost={fastlap_cost}, Rows={fastlap_rows}, Cols={fastlap_cols}" |
| 19 | + ) |
| 20 | + if algo == "hungarian": |
| 21 | + start = time.time() |
| 22 | + scipy_rows, scipy_cols = linear_sum_assignment(matrix) |
| 23 | + scipy_cost = matrix[scipy_rows, scipy_cols].sum() |
| 24 | + scipy_end = time.time() |
| 25 | + print( |
| 26 | + f"scipy.optimize.linear_sum_assignment: Time={scipy_end - start:.8f}s" |
| 27 | + ) |
| 28 | + print( |
| 29 | + f"scipy.optimize.linear_sum_assignment: Cost={scipy_cost}, Rows={list(scipy_rows)}, Cols={list(scipy_cols)}" |
| 30 | + ) |
| 31 | + if algo == "lapjv": |
| 32 | + start = time.time() |
| 33 | + lap_cost, lap_rows, lap_cols = lap.lapjv(matrix, extend_cost=True) |
| 34 | + lap_end = time.time() |
| 35 | + print(f"lap.lapjv: Time={lap_end - start:.8f}s") |
| 36 | + print(f"lap.lapjv: Cost={lap_cost}, Rows={lap_rows}, Cols={lap_cols}") |
| 37 | + |
| 38 | +""" |
| 39 | +First release: |
| 40 | +
|
| 41 | +Algorithm: lapjv |
| 42 | +fastlap.lapjv: Time=0.00017548s |
| 43 | +fastlap.lapjv: Cost=inf, Rows=[2, 0, 1, 4, 3], Cols=[1, 2, 0, 4, 3] |
| 44 | +lap.lapjv: Time=0.00013208s |
| 45 | +lap.lapjv: Cost=0.6229432588732741, Rows=[2 0 1 4], Cols=[ 1 2 0 -1 3] |
| 46 | +
|
| 47 | +Algorithm: hungarian |
| 48 | +fastlap.hungarian: Time=0.00000453s |
| 49 | +fastlap.hungarian: Cost=0.7465856501551806, Rows=[2, 0, 1, 3], Cols=[1, 2, 0, 3, 18446744073709551615] |
| 50 | +scipy.optimize.linear_sum_assignment: Time=0.00001287s |
| 51 | +scipy.optimize.linear_sum_assignment: Cost=0.6229432588732741, Rows=[0, 1, 2, 3], Cols=[2, 0, 1, 4] |
| 52 | +""" |
0 commit comments