{"id":15539651,"url":"https://github.com/thchang/delaunaysearch","last_synced_at":"2025-03-28T23:43:47.942Z","repository":{"id":157742152,"uuid":"198139828","full_name":"thchang/DelaunaySearch","owner":"thchang","description":"Delaunay Search Black-Box Optimizer in Python 3","archived":false,"fork":false,"pushed_at":"2021-08-13T21:31:19.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-10-09T12:58:49.014Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/thchang.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":"2019-07-22T03:25:46.000Z","updated_at":"2021-08-13T21:31:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"6a6f686a-9ff5-4b89-9124-f7689fcf960a","html_url":"https://github.com/thchang/DelaunaySearch","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/thchang%2FDelaunaySearch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thchang%2FDelaunaySearch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thchang%2FDelaunaySearch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thchang%2FDelaunaySearch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thchang","download_url":"https://codeload.github.com/thchang/DelaunaySearch/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246117690,"owners_count":20726068,"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":[],"created_at":"2024-10-02T12:11:01.484Z","updated_at":"2025-03-28T23:43:47.923Z","avatar_url":"https://github.com/thchang.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Delaunay Search Black-Box Optimizer\n\nThis repo contains a Python 3 implementation of an experimental Delaunay\nmesh refinedment based black-box optimizer.\nThe Delaunay search technique is intended for usage with expensive black-box\nfunctions in situations where the user already has a significant database of\npre-evaluated cost values.\nTo refine the current database toward the true minima, a Delaunay triangulation\n(unstructured mesh) is implemented over the dataset.\nIn each iteration:\n - The objective value at the circumcenter of each element in the mesh is\n   estimated based on the average linearly extrapolated value predicted by\n   its d+1 neighboring cells.\n - The candidate cell with the lowest predicted objective value is subdivided\n   by way of a function evaluation at its circumcenter.\n\nFor objective functions with Lipschitz continuous first derivatives, the\nlinear fit in each Delaunay cell will converge to the average gradient in that\ncell almost surely as more data is sampled.\nTherefore, the Delaunay search will converge to a local minima.\n\nThis is experimental research code, and is not yet suitable for all use\ncases.\nIn particular, if the global minimum is not in the convex hull of the provided\ndata set, then the Delaunay search can never reach it.\n\n## Contents\n\nNote that all test functions have been shifted so that their global minima\nhas value f(x) = 0.\n\n - delsearch.py contains the DelaunaySearch subroutine and an optional main\n   program which uses a quadratic function and latin hypercube design for\n   testing.\n - Rosenbrock.py contains a 2D test function with a single minima at the\n   bottom of a shallow \"banana shaped\" Rosenbrock valley at (0,0).\n - Griewank.py contains a 2D test function with many local minima, and\n   a single global minima at (0,0).\n - Michaelwicz.py contains a 2D test function with a single global minima\n   at approximately (2.2, 1.57), amid large flat ridges and sharp narrow\n   valleys.\n\n## Prerequisites\n\nThe DelaunaySearch function is written for Python 3 and depends on several\nother python modules that can be installed via pip3.\n - numpy for numerical linear algebra\n - scipy.spatial for their Delaunay qhull wrapper\n - matplotlib.pyplot for visualizing results\n - pyDOE for their lhs (latin hypercube design) function\n\n### User Interface\n\nTo use DelaunaySearch, call\n``\n[minind, x, f] = DelaunaySearch(data, obj_func, budget)\n``\nwhere\n - data is a python list containing the input data set (the first d entries\nin each row are the coordinates of the points, and the last entry is the\nobjective value),\n - obj\\_func is the objective function,\n - budget (optional) is the function evaluation budget\n - minind is the index of the minimum objective value observed\n - x is a list of design points evaluated (including those provided in data)\n - f is a list of corresponding objective values\n\n### Test cases\n\nTo optimize a 2 dimensional quadratic using a latin hypercube design and\nvisualize the results in matplotlib:\n\n``\npython3 delsearch.py\n``\n\nTo do the same for the Rosenbrock, Griewank, and Michaelwicz functions,\nexecute ``python3 Rosenbrock.py``, ``python3 Griewank.py``, and\n``python3 Michaelwicz.py`` respectively.\n\n## Author\n\n* **Tyler H. Chang** - *Primary author*\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthchang%2Fdelaunaysearch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthchang%2Fdelaunaysearch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthchang%2Fdelaunaysearch/lists"}