{"library":"nlopt","title":"NLopt Python Bindings","description":"NLopt is a free/open-source library providing a common interface to a variety of nonlinear optimization algorithms, encompassing both global and local, constrained and unconstrained problems. The `nlopt` Python package offers bindings to this library, enabling Python users to leverage its extensive suite of optimization routines. The current version is 2.10.0, and the project actively maintains and releases new versions, often aligning with updates to the underlying C library.","language":"python","status":"active","last_verified":"Thu May 14","install":{"commands":["pip install nlopt"],"cli":null},"imports":["import nlopt","import numpy as np"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import nlopt\nimport numpy as np\n\n# Objective function to minimize: f(x) = sqrt(x[1])\n# subject to x[1] >= (a*x[0] + b)**3 and x[1] >= 0\n# for a1=2, b1=0, a2=-1, b2=1\n\ndef myfunc(x, grad):\n    if grad.size > 0:\n        grad[0] = 0.0\n        grad[1] = 0.5 / np.sqrt(x[1])\n    return np.sqrt(x[1])\n\ndef myconstraint(x, grad, a, b):\n    if grad.size > 0:\n        grad[0] = 3 * a * (a * x[0] + b)**2\n        grad[1] = -1.0\n    return (a * x[0] + b)**3 - x[1]\n\n# Problem dimension\nn = 2\n\n# Create an optimizer object\nopt = nlopt.opt(nlopt.LD_MMA, n)\n\n# Set minimization objective\nopt.set_min_objective(myfunc)\n\n# Set bounds\nopt.set_lower_bounds([-float('inf'), 0.0]) # x[1] >= 0\n\n# Add nonlinear inequality constraints (h(x) <= 0)\n# Constraint 1: x[1] >= (2*x[0])**3  =>  (2*x[0])**3 - x[1] <= 0\nopt.add_inequality_constraint(lambda x, grad: myconstraint(x, grad, 2.0, 0.0), 1e-8)\n# Constraint 2: x[1] >= (-1*x[0] + 1)**3 => (-1*x[0] + 1)**3 - x[1] <= 0\nopt.add_inequality_constraint(lambda x, grad: myconstraint(x, grad, -1.0, 1.0), 1e-8)\n\n# Set stopping criteria\nopt.set_xtol_rel(1e-4)\nopt.set_maxeval(1000)\n\n# Initial guess\nx0 = np.array([1.234, 5.678])\n\ntry:\n    x_opt = opt.optimize(x0)\n    minf = opt.last_optimum_value()\n    result_code = opt.last_optimize_result()\n    print(f\"Optimized result: x = {x_opt}, f(x) = {minf}, return code: {result_code}\")\nexcept nlopt.RunTimeError as e:\n    print(f\"NLopt failed: {e}\")\n\n# Example of using a derivative-free algorithm\nopt_df = nlopt.opt(nlopt.LN_COBYLA, n)\nopt_df.set_min_objective(myfunc) # Note: grad argument will be empty for derivative-free\nopt_df.set_lower_bounds([-float('inf'), 0.0])\nopt_df.add_inequality_constraint(lambda x, grad: myconstraint(x, grad, 2.0, 0.0), 1e-8)\nopt_df.add_inequality_constraint(lambda x, grad: myconstraint(x, grad, -1.0, 1.0), 1e-8)\nopt_df.set_xtol_rel(1e-4)\n\ntry:\n    x_opt_df = opt_df.optimize(x0)\n    minf_df = opt_df.last_optimum_value()\n    print(f\"Derivative-free result: x = {x_opt_df}, f(x) = {minf_df}\")\nexcept nlopt.RunTimeError as e:\n    print(f\"NLopt (derivative-free) failed: {e}\")","lang":"python","description":"This quickstart demonstrates how to set up and run a constrained minimization problem using NLopt. It defines an objective function and nonlinear inequality constraints, both capable of providing gradients. It then initializes an `nlopt.opt` object with a gradient-based algorithm (`LD_MMA`), sets the objective, bounds, and constraints, and performs the optimization. An example using a derivative-free algorithm (`LN_COBYLA`) is also included to show the common pattern for algorithms that do not utilize gradients.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-14","installed_version":"2.9.1","pypi_latest":"2.10.0","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":3.6,"avg_import_s":0.3,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"nlopt","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"nlopt","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"nlopt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.5,"import_time_s":0.21,"mem_mb":6.8,"disk_size":"87M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"nlopt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.21,"mem_mb":6.8,"disk_size":"87M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"nlopt","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"nlopt","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"nlopt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.5,"import_time_s":0.34,"mem_mb":7.3,"disk_size":"94M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"nlopt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.35,"mem_mb":7.3,"disk_size":"94M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"nlopt","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"nlopt","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"nlopt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.4,"import_time_s":0.33,"mem_mb":7.1,"disk_size":"82M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"nlopt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.42,"mem_mb":7.1,"disk_size":"82M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"nlopt","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"nlopt","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"nlopt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.3,"import_time_s":0.33,"mem_mb":7.7,"disk_size":"82M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"nlopt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.3,"mem_mb":7.7,"disk_size":"82M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"nlopt","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"nlopt","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"nlopt","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":4.2,"import_time_s":0.22,"mem_mb":6.6,"disk_size":"97M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"nlopt","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.32,"mem_mb":6.6,"disk_size":"97M"}]}}