{"id":17116543,"url":"https://github.com/sovrasov/multicriterial-go","last_synced_at":"2025-03-24T00:52:51.272Z","repository":{"id":94255466,"uuid":"94005130","full_name":"sovrasov/multicriterial-go","owner":"sovrasov","description":"Constrained multi-objective derivative-free global solver","archived":false,"fork":false,"pushed_at":"2017-11-16T13:40:15.000Z","size":130,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-29T07:27:21.161Z","etag":null,"topics":["constrained-optimization","cpp","derivative-free","global-optimization","multiobjective-optimization","nonlinear-optimization","optimization-methods"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sovrasov.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2017-06-11T13:09:15.000Z","updated_at":"2019-12-13T01:14:10.000Z","dependencies_parsed_at":"2023-07-27T12:15:08.796Z","dependency_job_id":null,"html_url":"https://github.com/sovrasov/multicriterial-go","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sovrasov%2Fmulticriterial-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sovrasov%2Fmulticriterial-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sovrasov%2Fmulticriterial-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sovrasov%2Fmulticriterial-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sovrasov","download_url":"https://codeload.github.com/sovrasov/multicriterial-go/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245191626,"owners_count":20575248,"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":["constrained-optimization","cpp","derivative-free","global-optimization","multiobjective-optimization","nonlinear-optimization","optimization-methods"],"created_at":"2024-10-14T17:49:06.010Z","updated_at":"2025-03-24T00:52:51.266Z","avatar_url":"https://github.com/sovrasov.png","language":"C++","readme":"[![Build Status](https://travis-ci.org/sovrasov/multicriterial-go.svg?branch=master)](https://travis-ci.org/sovrasov/multicriterial-go)\n[![Coverage Status](https://coveralls.io/repos/github/sovrasov/multicriterial-go/badge.svg?branch=master)](https://coveralls.io/github/sovrasov/multicriterial-go?branch=master)\n[![License](https://img.shields.io/badge/license-%20MIT-blue.svg)](../master/LICENSE)\n[![Code Health](https://landscape.io/github/sovrasov/multicriterial-go/master/landscape.svg?style=flat)](https://landscape.io/github/sovrasov/multicriterial-go/master)\n# multicriterial-go\nAn implementation of the algorithm to solve multidimensional multicriterial global optimization problems with non-convex constraints. Exact problem statement can be found [here](https://en.wikipedia.org/wiki/Multi-objective_optimization). Description of the implemented method and numerical examples are presented in paper [Sovrasov V.: Parallel Multi-Objective Optimization Method for Finding Complete Set of Weakly Efficient Solutions, Proceedings of the 3rd Ural Workshop on Parallel, Distributed, and Cloud Computing for Young Scientists, Yekaterinburg, Russia, October 19th, 2017](http://ceur-ws.org/Vol-1990/paper-01.pdf).\n\nThe implementation is compact and designed to solve low-dimensional (1-4) problems with\nLipschitzian objectives and constraints (up to 5 constraints and objectives).\nThe method is theoretically proved to converge to all Slater points (in case of\nLipschitzian functions and sufficient reliability parameter `r`).\n\n## How to clone \u0026 build\n```bash\ngit clone --recursive https://github.com/sovrasov/multicriterial-go.git\ncd multicriterial-go\nmkdir build\ncd build\ncmake ..\nmake -j 4\n```\n## Minimal usage example\n```c++\nMCOProblem problem;\n//define problem with two objectives\nproblem.AddCriterion(\n  (const double* y) -\u003e double {\n    return fmin(hypot(y[0], y[1]) + .5, hypot(y[0] - 1.5, y[1] + 1.5));\n  }\n);\nproblem.AddCriterion(\n  (const double* y) -\u003e double {\n    return hypot(y[0] + .5, y[1] - .5);\n  }\n);\n//define search domain\nproblem.SetDomain(2, {-1., -2.}, {2., 1.});\n//set algorithm parameters\nauto parameters = SolverParameters(0.01, //accuracy\n  0, //eps-reserves\n  4, //reliability\n  2, //number of threads\n  2000, //iterations limit\n  4); //local mix parameter\n\nMCOSolver solver;\nsolver.SetParameters(parameters);\nsolver.SetProblem(problem);\nsolver.Solve();\n\nauto solution = solver.GetWeakOptimalPoints();\n\n//print points from Slater set and corresponding values of objectives\nfor(const auto\u0026 x : points)\n{\n  for(int i = 0; i \u003c problem.GetDimension(); i++)\n    cout \u003c\u003c x.y[i] \u003c\u003c \", \";\n  for(int i = 0; i \u003c problem.GetCriterionsNumber() - 1; i++)\n    cout \u003c\u003c x.z[i] \u003c\u003c \", \";\n  cout \u003c\u003c x.z[problem.GetCriterionsNumber() - 1] \u003c\u003c \";\\n\";\n}\n```\n\nThe resulting Slater points are shown on the picture below:\n\n\n\u003cimg src=\"./pics/strongin.png\" width=\"500\"/\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsovrasov%2Fmulticriterial-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsovrasov%2Fmulticriterial-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsovrasov%2Fmulticriterial-go/lists"}