{"id":19575097,"url":"https://github.com/nitsas/pareto-approximator","last_synced_at":"2025-07-05T00:05:41.241Z","repository":{"id":145879506,"uuid":"3212056","full_name":"nitsas/pareto-approximator","owner":"nitsas","description":"Approximate the Pareto set using the chord algorithm. (multiobjective optimization, c++)","archived":false,"fork":false,"pushed_at":"2014-10-31T22:17:50.000Z","size":584,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-26T11:25:19.430Z","etag":null,"topics":["algorithm","c-plus-plus","multiobjective-optimization"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nitsas.png","metadata":{"files":{"readme":"README.txt","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-01-18T20:24:16.000Z","updated_at":"2017-02-24T12:35:58.000Z","dependencies_parsed_at":"2023-03-23T22:00:32.898Z","dependency_job_id":null,"html_url":"https://github.com/nitsas/pareto-approximator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nitsas/pareto-approximator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitsas%2Fpareto-approximator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitsas%2Fpareto-approximator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitsas%2Fpareto-approximator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitsas%2Fpareto-approximator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nitsas","download_url":"https://codeload.github.com/nitsas/pareto-approximator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitsas%2Fpareto-approximator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263636791,"owners_count":23492304,"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","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":["algorithm","c-plus-plus","multiobjective-optimization"],"created_at":"2024-11-11T06:45:43.069Z","updated_at":"2025-07-05T00:05:41.218Z","avatar_url":"https://github.com/nitsas.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"Author:  Christos Nitsas\nDate:    2012-2013\n\n\nApproximate the Pareto set of a multiobjective optimization problem using \nthe Chord and PGEN algorithms. (both algorithms based on the weighted \nsum method)\n\nThe software presented here is general and can be applied to any \nmulticriteria optimization problem, as long as that problem has a COMB \nroutine that optimizes (minimizes) linear combinations of the objectives.\n\nPlease read [1] for more info on the Chord algorithm. (biobjective case)\n\nPlease read [2] for more info on the PGEN algorithm. (3+ objectives)\n\n\nIn-code comments:\n------------------------------\nIn-code comments follow the Doxygen QT style so if you don't understand some\nsymbol in the comments (comments contain symbols/commands similar to Latex) or \nare just curious about Doxygen please check here:\nhttp://www.stack.nl/~dimitri/doxygen/docblocks.html\nand here:\nhttp://www.stack.nl/~dimitri/doxygen/manual.html\n\n\nRequirements:\n------------------------------\n1. The Armadillo C++ linear algebra library is required (chiefly) for some \n   linear algebra operations inside the Facet class (and some less important \n   operations elsewhere). The earliest version I've tried is 3.6.1 and it \n   worked. \n   (you can find it on http://arma.sourceforge.net/)\n2. The Qhull program (specifically \"qconvex\") is required by PGEN to compute \n   the convex hull of sets of points. \n   (you can find it on http://www.qhull.org/)\n\n\nUsage:\n------------------------------\nLet's say that we have a specific instance S of a multicriteria optimization \nproblem P and we want to use Chord or PGEN to approximate its Pareto set. We \nwill need to create a class that inherits from BaseProblem, let's call it \nMyProblem, (we can put any problem specific data (e.g. graphs e.t.c.) inside \nMyProblem) and implement MyProblem's comb() function. comb() is declared \nvirtual (and null) in BaseProblem and used by the Chord and PGEN algorithms \nto access the problem's Pareto set (i.e. generate Pareto points).\n\nThe comb() function is the implementation of the theoretical COMB routine. \n(see below for more info on the COMB routine)\n\nPlease check the examples (./examples/) and experiments \n(./experiments/vs_namoa_star/) for examples of how to use the software.\n\n\nWhat is the COMB routine:\n------------------------------\nThe COMB routine is a routine that optimizes (minimizes) linear combinations \nof the objective functions. We give it a set of weights w_{i} and it \noptimizes (minimizes) the combined objective:\n\\f$ w_{1} f_{1} + w_{2} f_{2} + ... + w_{n} f_{n} \\f$,\nwhere f_{i} is the ith objective function. The COMB routine is specific to \nthe underlying problem (in this case Multicriteria Shortest Paths). Chord \nand PGEN use the COMB routine as a black-box to generate Pareto optimal \npoints (on the convex hull of the Pareto set).\n\nWe have assumed (w.l.o.g.) that all objectives are supposed to be minimized. \nIf some objectives are maximization objectives they can easily be converted \nto equivalent minimization objectives.\n\n\nReferences:\n------------------------------\n[1] C. Daskalakis, I. Diakonikolas and M. Yannakakis: \"How good is the Chord \nalgorithm?\". Proceedings of the Twenty-First Annual ACM-SIAM Symposium on \nDiscrete Algorithms. Society for Industrial and Applied Mathematics, 2010.\n\n[2] D. L. Craft, T. F. Halabi, H. A. Shih and T. R. Bortfeld: \"Approximating \nconvex Pareto surfaces in multiobjective radiotherapy planning\". Med. Phys., \n33, pp. 3399-3407, 2006.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitsas%2Fpareto-approximator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnitsas%2Fpareto-approximator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitsas%2Fpareto-approximator/lists"}