Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-07-26 08:22:17

0001 import argparse
0002 import csv
0003 import logging
0004 import pathlib
0005 
0006 log = logging.getLogger("find_pareto_set")
0007 
0008 
0009 def main():
0010     parser = argparse.ArgumentParser()
0011 
0012     parser.add_argument(
0013         "db",
0014         type=pathlib.Path,
0015         help="the CSV database file",
0016     )
0017 
0018     parser.add_argument(
0019         "-v",
0020         "--verbose",
0021         help="enable verbose output",
0022         action="store_true",
0023     )
0024 
0025     args = parser.parse_args()
0026 
0027     logging.basicConfig(
0028         level=logging.DEBUG if (args.verbose or False) else logging.INFO,
0029         format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
0030     )
0031 
0032     results = []
0033 
0034     total_results = 0
0035 
0036     with open(args.db, "r") as f:
0037         reader = csv.DictReader(f)
0038         for i in reader:
0039             total_results += 1
0040             if i["success"] != "0":
0041                 results.append({k: float(v) for k, v in i.items()})
0042 
0043     log.info(
0044         "Database contained %d results of which %d are valid",
0045         total_results,
0046         len(results),
0047     )
0048 
0049     pareto_set = []
0050 
0051     for i, m in enumerate(results):
0052         for j, n in enumerate(results):
0053             if i == j:
0054                 continue
0055 
0056             if (
0057                 n["rec_throughput"] <= m["rec_throughput"]
0058                 and n["efficiency"] >= m["efficiency"]
0059                 and n["fake_rate"] <= m["fake_rate"]
0060                 and n["duplicate_rate"] <= m["duplicate_rate"]
0061             ):
0062                 log.debug(
0063                     "Removing %s from the Pareto set because %s is superior",
0064                     str(n),
0065                     str(m),
0066                 )
0067                 break
0068         else:
0069             pareto_set.append(m)
0070 
0071     log.info("Pareto set contains %d elements:", len(pareto_set))
0072 
0073     for i in sorted(pareto_set, key=lambda x: x["rec_throughput"], reverse=True):
0074         log.info(
0075             "  Eff. %.2f, fake rate %.2f, duplicate rate %.2f with reciprocal througput %.1fms is achieved by setup {%s}",
0076             100.0 * i["efficiency"],
0077             i["fake_rate"],
0078             i["duplicate_rate"],
0079             i["rec_throughput"] * 1000.0,
0080             ", ".join(
0081                 "%s: %s" % (k, str(v))
0082                 for k, v in i.items()
0083                 if k
0084                 not in [
0085                     "efficiency",
0086                     "fake_rate",
0087                     "duplicate_rate",
0088                     "rec_throughput",
0089                     "success",
0090                 ]
0091             ),
0092         )
0093 
0094 
0095 if __name__ == "__main__":
0096     main()