{"id":21186478,"url":"https://github.com/thieu1995/pfevaluator","last_synced_at":"2025-08-14T18:45:12.221Z","repository":{"id":57452090,"uuid":"335557543","full_name":"thieu1995/pfevaluator","owner":"thieu1995","description":"pfevaluator: A library for evaluating performance metrics of Pareto fronts in multiple/many objective optimization problems","archived":false,"fork":false,"pushed_at":"2023-08-19T06:44:01.000Z","size":59,"stargazers_count":35,"open_issues_count":1,"forks_count":9,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-31T05:58:15.873Z","etag":null,"topics":["error-ratio","generational-distance","hyperarea-ratio","hypervolume","inverted-generational-distance","maximum-pareto-front-error","maximum-spread","pareto-front","reference-front","reference-point","spacing-metric","spacing-to-extent","true-pareto-front","uniform-distribution"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thieu1995.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-02-03T08:33:26.000Z","updated_at":"2025-06-23T07:44:19.000Z","dependencies_parsed_at":"2025-07-10T05:05:33.221Z","dependency_job_id":null,"html_url":"https://github.com/thieu1995/pfevaluator","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/thieu1995/pfevaluator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thieu1995%2Fpfevaluator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thieu1995%2Fpfevaluator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thieu1995%2Fpfevaluator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thieu1995%2Fpfevaluator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thieu1995","download_url":"https://codeload.github.com/thieu1995/pfevaluator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thieu1995%2Fpfevaluator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270466805,"owners_count":24588793,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-14T02:00:10.309Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["error-ratio","generational-distance","hyperarea-ratio","hypervolume","inverted-generational-distance","maximum-pareto-front-error","maximum-spread","pareto-front","reference-front","reference-point","spacing-metric","spacing-to-extent","true-pareto-front","uniform-distribution"],"created_at":"2024-11-20T18:23:55.327Z","updated_at":"2025-08-14T18:45:12.139Z","avatar_url":"https://github.com/thieu1995.png","language":"Python","readme":"# pfevaluator: A library for evaluating performance metrics of Pareto fronts in multiple/many objective optimization problems\n\n\n[![GitHub release](https://img.shields.io/badge/release-1.4.3-yellow.svg)](https://github.com/thieu1995/pfpfevaluator/releases)\n[![Wheel](https://img.shields.io/pypi/wheel/gensim.svg)](https://pypi.python.org/pypi/pfevaluator) \n[![PyPI version](https://badge.fury.io/py/pfevaluator.svg)](https://badge.fury.io/py/pfevaluator)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pfevaluator.svg)\n![PyPI - Status](https://img.shields.io/pypi/status/pfevaluator.svg)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/pfevaluator.svg)\n[![Downloads](https://static.pepy.tech/badge/pfevaluator)](https://pepy.tech/project/pfevaluator)\n![GitHub Release Date](https://img.shields.io/github/release-date/thieu1995/pfevaluator.svg)\n[![Documentation Status](https://readthedocs.org/projects/pfevaluator/badge/?version=latest)](https://pfevaluator.readthedocs.io/en/latest/?badge=latest)\n[![Chat](https://img.shields.io/badge/Chat-on%20Telegram-blue)](https://t.me/+fRVCJGuGJg1mNDg1)\n![GitHub contributors](https://img.shields.io/github/contributors/thieu1995/pfevaluator.svg)\n[![GitTutorial](https://img.shields.io/badge/PR-Welcome-%23FF8300.svg?)](https://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project)\n[![DOI](https://zenodo.org/badge/280617738.svg)](https://zenodo.org/badge/latestdoi/280617738)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n\n---\n\u003e \"Knowledge is power, sharing it is the premise of progress in life. It seems like a burden to someone, but it is the only way to achieve immortality.\"\n\u003e  --- [Thieu Nguyen](https://www.researchgate.net/profile/Thieu_Nguyen6)\n---\n\n## Introduction\n\n\n### Dependencies\n* Python (\u003e= 3.6)\n* Numpy (\u003e= 1.18.1)\n* pygmo (\u003e= 2.13.0) \n\n### User installation\nInstall the [current PyPI release](https://pypi.python.org/pypi/pfevaluator):\n```bash\npip install pfevaluator     \n```\n\nOr install the development version from GitHub:\n```bash\npip install git+https://github.com/thieu1995/pfevaluator\n```\n\n### Pareto front Performance Metrics\n\n##### Closeness: Metrics Measuring the Closeness of the Solutions to the True Pareto Front\n1. GD: Generational Distance\n2. IGD: Inverted Generational Distance\n3. MPFE: Maximum Pareto Front Error\n\n##### Closeness - Diversity: Metrics Measuring the Closeness of the Solutions to the True Pareto Front\n1. HV: Hyper Volume (Using Different Library)\n2. HAR: Hyper Area Ratio (Using Different Library)\n\n##### Distribution: Metrics Focusing on Distribution of the Solutions\n1. UD: Uniform Distribution\n2. S: Spacing\n3. STE: Spacing To Extend\n4. NDC: Number of Distinct Choices (Not Implemented Yet)\n\n##### Ratio: Metrics Assessing the Number of Pareto Optimal Solutions in the Set\n1. RNI: Ratio of Non-dominated Individuals\n2. ER: Error Ratio\n3. ONVG: Overall Non-dominated Vector Generation\n4. PDI: Pareto Dominance Indicator (Not Implemented Yet)\n\n##### Spread: Metrics Concerning Spread of the Solutions\n1. MS: Maximum Spread \n\n\n### Examples\n```code \n\n+ front: the file contains class Metric for evaluating all posible solution (population of obtained fronts).\n+ pfront (Pareto front): the file contains class Metric for evaluating the obtained front from each test case.\n+ tpfront: (True pareto front): the file contains class Metric for evaluating the obtained front and True pareto front\n (Reference front). Means, you need to pass the Reference front in this class.\n\n+ True pareto front (Reference front) can be obtained by:\n    1) You provide it (If you know the True Pareto front for your problem)\n    2) Calculate from all possible fronts obtained from all test case.\n        + Assumption you have N1 algorithms to test. \n        + Each algorithm give you a Obtained front. \n        + Each algorithm you run N2 independent trials --\u003e Number of all possible fronts: N1 * N2 \n        + Pass all N1*N2 front in our function to calculate the Non-donminated Solutions (Reference front\n - Approximate Pareto front - True Pareto front)\n\n\nimport pfevaluator\n\n## Some avaiable performance metrics for evaluate each type of Pareto front.\npfront_metrics = [\"UD\", \"NDC\"]\ntpfront_metrics = [\"ER\", \"ONVG\", \"MS\", \"GD\", \"IDG\", \"MPFE\", \"S\", \"STE\"]\nvolume_metrics = [\"HV\", \"HAR\"]\n\npm = pfevaluator.metric_pfront(obtained_front, pfront_metrics)              # Evaluate for each algorithm in each trial\ntm = pfevaluator.metric_tpfront(obtained_front, reference_front, tpfront_metrics)        # Same above\nvm = pfevaluator.metric_volume(obtained_front, reference_front, volume_metrics, None, all_fronts=matrix_fitness)\n\n## obtained_front: is your front you found in each test case (each trial of each algorithm)\n## reference_front (True Pareto front): is your True Pareto front of your problem.\n##      If you don't know your True Pareto front, do the above step to get it from population of obtained fronts.\n##      Using this function: reference_front = pfevaluator.find_reference_front(matrix_fitness)\n##          matrix_fitness is all of your fronts in all test cases.\n\n## The results is dict such as:     pm = { \"UD\": 0.2, \"NDC\": 0.1 } \n\n```\n\n* The full test case in the file: examples/full.py\n\n\n### Important links\n\n* Official source code repo: https://github.com/thieu1995/pfevaluator\n* Download releases: https://pypi.org/project/pfevaluator/\n* Issue tracker: https://github.com/thieu1995/pfevaluator/issues\n* Change log: https://github.com/thieu1995/pfevaluator/blob/master/ChangeLog.md\n\n* This project also related to my another projects which are \"meta-heuristics\" and \"neural-network\", check it here\n    * https://github.com/thieu1995/opfunu\n    * https://github.com/thieu1995/metaheuristics\n    * https://github.com/thieu1995/mealpy\n    * https://github.com/thieu1995/permetrics\n    * https://github.com/chasebk\n   \n## Contributions \n\n### Citation\n+ If you use pfevaluator in your project, please cite my works: \n```code \n@article{nguyen2019efficient,\n  title={Efficient Time-Series Forecasting Using Neural Network and Opposition-Based Coral Reefs Optimization},\n  author={Nguyen, Thieu and Nguyen, Tu and Nguyen, Binh Minh and Nguyen, Giang},\n  journal={International Journal of Computational Intelligence Systems},\n  volume={12},\n  number={2},\n  pages={1144--1161},\n  year={2019},\n  publisher={Atlantis Press}\n}\n```\n\n### Documents:\n\n1. Yen, G. G., \u0026 He, Z. (2013). Performance metric ensemble for multiobjective evolutionary algorithms. IEEE Transactions on Evolutionary Computation, 18(1), 131-144.\n2. Panagant, N., Pholdee, N., Bureerat, S., Yildiz, A. R., \u0026 Mirjalili, S. (2021). A Comparative Study of Recent Multi-objective Metaheuristics for Solving Constrained Truss Optimisation Problems. Archives of Computational Methods in Engineering, 1-17.\n3. Knowles, J., \u0026 Corne, D. (2002, May). On metrics for comparing nondominated sets. In Proceedings of the 2002 Congress on Evolutionary Computation. CEC'02 (Cat. No. 02TH8600) (Vol. 1, pp. 711-716). IEEE.\n4. Yen, G. G., \u0026 He, Z. (2013). Performance metric ensemble for multiobjective evolutionary algorithms. IEEE Transactions on Evolutionary Computation, 18(1), 131-144.\n5. Guerreiro, A. P., Fonseca, C. M., \u0026 Paquete, L. (2020). The hypervolume indicator: Problems and algorithms. arXiv preprint arXiv:2005.00515.\n\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthieu1995%2Fpfevaluator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthieu1995%2Fpfevaluator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthieu1995%2Fpfevaluator/lists"}