[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-SimonBlanke--Gradient-Free-Optimizers":3,"tool-SimonBlanke--Gradient-Free-Optimizers":62},[4,18,26,36,46,54],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",159267,2,"2026-04-17T11:29:14",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":42,"last_commit_at":43,"category_tags":44,"status":17},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[13,45],"插件",{"id":47,"name":48,"github_repo":49,"description_zh":50,"stars":51,"difficulty_score":32,"last_commit_at":52,"category_tags":53,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":55,"name":56,"github_repo":57,"description_zh":58,"stars":59,"difficulty_score":32,"last_commit_at":60,"category_tags":61,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[45,13,15,14],{"id":63,"github_repo":64,"name":65,"description_en":66,"description_zh":67,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":78,"owner_email":79,"owner_twitter":80,"owner_website":80,"owner_url":81,"languages":82,"stars":95,"forks":96,"last_commit_at":97,"license":98,"difficulty_score":42,"env_os":99,"env_gpu":100,"env_ram":101,"env_deps":102,"category_tags":108,"github_topics":109,"view_count":32,"oss_zip_url":80,"oss_zip_packed_at":80,"status":17,"created_at":125,"updated_at":126,"faqs":127,"releases":158},8614,"SimonBlanke\u002FGradient-Free-Optimizers","Gradient-Free-Optimizers","Lightweight optimization with local, global, population-based and sequential techniques across mixed search spaces","Gradient-Free-Optimizers 是一款轻量级的 Python 优化库，专为解决“黑盒函数”的寻优难题而生。在机器学习调参、仿真模拟等场景中，我们常常面临无法计算梯度或梯度获取成本极高的情况，传统优化方法往往束手无策。这款工具通过提供无需梯度的优化方案，让用户只需定义目标函数和搜索空间，即可轻松启动优化流程。\n\n它内置了包括局部搜索、全局搜索、群体智能及贝叶斯优化在内的 21 种经典算法，并统一了调用接口。其独特之处在于能够高效处理由 NumPy 数组定义的混合数值搜索空间，既支持简单的爬山法，也涵盖复杂的序列优化技术。作为 Hyperactive 库的后端核心，它同样支持独立使用，兼顾了灵活性与易用性。\n\n无论是需要快速验证想法的算法工程师、进行超参数调整的研究人员，还是致力于仿真优化的数据科学家，都能从中受益。如果你正在寻找一个简单可靠、无需深入数学推导即可上手的优化工具，Gradient-Free-Optimizers 将是一个理想的选择，帮助你将精力集中在业务逻辑而非优化细节上。","\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\">\n    \u003Cpicture>\n      \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\".\u002Fdocs\u002Fimages\u002Fgradient_logo_dark_c.svg\">\n      \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\".\u002Fdocs\u002Fimages\u002Fgradient_logo_ink_paths.svg\">\n      \u003Cimg src=\".\u002Fdocs\u002Fimages\u002Fgradient_logo_ink_paths.svg\" width=\"400\" alt=\"Gradient-Free-Optimizers Logo\">\n    \u003C\u002Fpicture>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n\u003Ch3 align=\"center\">\nLightweight optimization with local, global, population-based and sequential techniques across mixed search spaces\n\u003C\u002Fh3>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Factions\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fci.yml?style=for-the-badge&logo=githubactions&logoColor=white&label=tests\" alt=\"Tests\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fapp.codecov.io\u002Fgh\u002FSimonBlanke\u002FGradient-Free-Optimizers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcodecov\u002Fc\u002Fgithub\u002FSimonBlanke\u002FGradient-Free-Optimizers?style=for-the-badge&logo=codecov&logoColor=white\" alt=\"Coverage\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cbr>\n\n\u003Ctable align=\"center\">\n  \u003Ctr>\n    \u003Ctd align=\"right\">\u003Cb>Documentation\u003C\u002Fb>\u003C\u002Ftd>\n    \u003Ctd align=\"center\">▸\u003C\u002Ftd>\n    \u003Ctd>\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002F\">Homepage\u003C\u002Fa> ·\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fuser_guide\u002Foptimizers\u002Findex.html\">Optimizers\u003C\u002Fa> ·\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fapi_reference.html\">API Reference\u003C\u002Fa> ·\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fexamples.html\">Examples\u003C\u002Fa>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd align=\"right\">\u003Cb>On this page\u003C\u002Fb>\u003C\u002Ftd>\n    \u003Ctd align=\"center\">▸\u003C\u002Ftd>\n    \u003Ctd>\n      \u003Ca href=\"#key-features\">Features\u003C\u002Fa> ·\n      \u003Ca href=\"#examples\">Examples\u003C\u002Fa> ·\n      \u003Ca href=\"#core-concepts\">Concepts\u003C\u002Fa> ·\n      \u003Ca href=\"#citation\">Citation\u003C\u002Fa>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003Cbr>\n\n---\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSimonBlanke_Gradient-Free-Optimizers_readme_686ffc77d7a3.gif\" width=\"240\" align=\"right\" alt=\"Bayesian Optimization on Ackley Function\">\n\u003C\u002Fa>\n\n**Gradient-Free-Optimizers** is a Python library for gradient-free optimization of black-box functions. It provides a unified interface to 21 optimization algorithms, from simple hill climbing to Bayesian optimization, all operating on discrete numerical search spaces defined via NumPy arrays.\n\nDesigned for hyperparameter tuning, simulation optimization, and any scenario where gradients are unavailable or impractical. The library prioritizes simplicity: define your objective function, specify the search space, and run. It serves as the optimization backend for [Hyperactive](https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FHyperactive) but can also be used standalone.\n\n\u003Cp>\n  \u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fsimonblanke\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLinkedIn-Follow-0A66C2?style=flat-square&logo=linkedin\" alt=\"LinkedIn\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cbr>\n\n## Installation\n\n```bash\npip install gradient-free-optimizers\n```\n\n\u003Cp>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fgradient-free-optimizers\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fgradient-free-optimizers?style=flat-square&color=blue\" alt=\"PyPI\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fgradient-free-optimizers\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fgradient-free-optimizers?style=flat-square\" alt=\"Python\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cdetails>\n\u003Csummary>Optional dependencies\u003C\u002Fsummary>\n\n```bash\npip install gradient-free-optimizers[progress]  # Progress bar with tqdm\npip install gradient-free-optimizers[sklearn]   # scikit-learn for surrogate models\npip install gradient-free-optimizers[full]      # All optional dependencies\n```\n\n\u003C\u002Fdetails>\n\n\u003Cbr>\n\n## Key Features\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fuser_guide\u002Foptimizers\u002Findex.html\">\u003Cb>21 Optimization Algorithms\u003C\u002Fb>\u003C\u002Fa>\u003Cbr>\n      \u003Csub>Local, global, population-based, and sequential model-based optimizers. Switch algorithms with one line of code.\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fapi_reference.html\">\u003Cb>Zero Configuration\u003C\u002Fb>\u003C\u002Fa>\u003Cbr>\n      \u003Csub>Sensible defaults for all parameters. Start optimizing immediately without tuning the optimizer itself.\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fuser_guide\u002Fmemory.html\">\u003Cb>Memory System\u003C\u002Fb>\u003C\u002Fa>\u003Cbr>\n      \u003Csub>Built-in caching prevents redundant evaluations. Critical for expensive objective functions like ML models.\u003C\u002Fsub>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fuser_guide\u002Fsearch_spaces.html\">\u003Cb>Discrete Search Spaces\u003C\u002Fb>\u003C\u002Fa>\u003Cbr>\n      \u003Csub>Define parameter spaces with familiar NumPy syntax using arrays and ranges.\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fuser_guide\u002Fconstraints.html\">\u003Cb>Constraints Support\u003C\u002Fb>\u003C\u002Fa>\u003Cbr>\n      \u003Csub>Define constraint functions to restrict the search space. Invalid regions are automatically avoided.\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\">\u003Cb>Minimal Dependencies\u003C\u002Fb>\u003C\u002Fa>\u003Cbr>\n      \u003Csub>Only pandas required. Optional integrations for progress bars (tqdm) and surrogate models (scikit-learn).\u003C\u002Fsub>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003Cbr>\n\n## Quick Start\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import HillClimbingOptimizer\n\n# Define objective function (maximize)\ndef objective(params):\n    x, y = params[\"x\"], params[\"y\"]\n    return -(x**2 + y**2)  # Negative paraboloid, optimum at (0, 0)\n\n# Define search space\nsearch_space = {\n    \"x\": np.arange(-5, 5, 0.1),\n    \"y\": np.arange(-5, 5, 0.1),\n}\n\n# Run optimization\nopt = HillClimbingOptimizer(search_space)\nopt.search(objective, n_iter=1000)\n\n# Results\nprint(f\"Best score: {opt.best_score}\")\nprint(f\"Best params: {opt.best_para}\")\n```\n\n**Output:**\n```\nBest score: -0.02\nBest params: {'x': 0.1, 'y': 0.1}\n```\n\n\u003Cbr>\n\n## Core Concepts\n\n```mermaid\nflowchart LR\n    O[\"Optimizer\n    ━━━━━━━━━━\n    21 algorithms\"]\n\n    S[\"Search Space\n    ━━━━━━━━━━━━\n    NumPy arrays\"]\n\n    F[\"Objective\n    ━━━━━━━━━━\n    f(params) → score\"]\n\n    D[(\"Search Data\n    ━━━━━━━━━━━\n    history\")]\n\n    O -->|propose| S\n    S -->|params| F\n    F -->|score| O\n\n    O -.-> D\n    D -.->|warm start| O\n```\n\n**Optimizer**: Implements the search strategy. Choose from 21 algorithms across four categories: local search, global search, population-based, and sequential model-based.\n\n**Search Space**: Defines valid parameter combinations as NumPy arrays. Each key is a parameter name, each value is an array of allowed values.\n\n**Objective Function**: Your function to maximize. Takes a dictionary of parameters, returns a score. Use negation to minimize.\n\n**Search Data**: Complete history of all evaluations accessible via `opt.search_data` for analysis and warm-starting future searches.\n\n\u003Cbr>\n\n## Examples\n\n\u003Cdetails open>\n\u003Csummary>\u003Cb>Hyperparameter Optimization\u003C\u002Fb>\u003C\u002Fsummary>\n\n```python\nfrom sklearn.ensemble import GradientBoostingClassifier\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.datasets import load_wine\nimport numpy as np\n\nfrom gradient_free_optimizers import BayesianOptimizer\n\nX, y = load_wine(return_X_y=True)\n\ndef objective(params):\n    model = GradientBoostingClassifier(\n        n_estimators=params[\"n_estimators\"],\n        max_depth=params[\"max_depth\"],\n        learning_rate=params[\"learning_rate\"],\n    )\n    return cross_val_score(model, X, y, cv=5).mean()\n\nsearch_space = {\n    \"n_estimators\": np.arange(50, 300, 10),\n    \"max_depth\": np.arange(2, 10),\n    \"learning_rate\": np.logspace(-3, 0, 20),\n}\n\nopt = BayesianOptimizer(search_space)\nopt.search(objective, n_iter=50)\n```\n\n\u003C\u002Fdetails>\n\n\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Bayesian Optimization\u003C\u002Fb>\u003C\u002Fsummary>\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import BayesianOptimizer\n\ndef ackley(params):\n    x, y = params[\"x\"], params[\"y\"]\n    return -(\n        -20 * np.exp(-0.2 * np.sqrt(0.5 * (x**2 + y**2)))\n        - np.exp(0.5 * (np.cos(2 * np.pi * x) + np.cos(2 * np.pi * y)))\n        + np.e + 20\n    )\n\nsearch_space = {\n    \"x\": np.arange(-5, 5, 0.01),\n    \"y\": np.arange(-5, 5, 0.01),\n}\n\nopt = BayesianOptimizer(search_space)\nopt.search(ackley, n_iter=100)\n```\n\n\u003C\u002Fdetails>\n\n\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Particle Swarm Optimization\u003C\u002Fb>\u003C\u002Fsummary>\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import ParticleSwarmOptimizer\n\ndef rastrigin(params):\n    A = 10\n    values = [params[f\"x{i}\"] for i in range(5)]\n    return -sum(v**2 - A * np.cos(2 * np.pi * v) + A for v in values)\n\nsearch_space = {f\"x{i}\": np.arange(-5.12, 5.12, 0.1) for i in range(5)}\n\nopt = ParticleSwarmOptimizer(search_space, population=20)\nopt.search(rastrigin, n_iter=500)\n```\n\n\u003C\u002Fdetails>\n\n\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Simulated Annealing\u003C\u002Fb>\u003C\u002Fsummary>\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import SimulatedAnnealingOptimizer\n\ndef sphere(params):\n    return -(params[\"x\"]**2 + params[\"y\"]**2)\n\nsearch_space = {\n    \"x\": np.arange(-10, 10, 0.1),\n    \"y\": np.arange(-10, 10, 0.1),\n}\n\nopt = SimulatedAnnealingOptimizer(\n    search_space,\n    start_temp=1.2,\n    annealing_rate=0.99,\n)\nopt.search(sphere, n_iter=1000)\n```\n\n\u003C\u002Fdetails>\n\n\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Constrained Optimization\u003C\u002Fb>\u003C\u002Fsummary>\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import RandomSearchOptimizer\n\ndef objective(params):\n    return params[\"x\"] + params[\"y\"]\n\ndef constraint(params):\n    # Only positions where x + y \u003C 5 are valid\n    return params[\"x\"] + params[\"y\"] \u003C 5\n\nsearch_space = {\n    \"x\": np.arange(0, 10, 0.1),\n    \"y\": np.arange(0, 10, 0.1),\n}\n\nopt = RandomSearchOptimizer(search_space, constraints=[constraint])\nopt.search(objective, n_iter=1000)\n```\n\n\u003C\u002Fdetails>\n\n\u003Cbr>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Memory and Warm Starting\u003C\u002Fb>\u003C\u002Fsummary>\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import HillClimbingOptimizer\n\ndef expensive_function(params):\n    # Simulating an expensive computation\n    return -(params[\"x\"]**2 + params[\"y\"]**2)\n\nsearch_space = {\n    \"x\": np.arange(-10, 10, 0.1),\n    \"y\": np.arange(-10, 10, 0.1),\n}\n\n# First search\nopt1 = HillClimbingOptimizer(search_space)\nopt1.search(expensive_function, n_iter=100, memory=True)\n\n# Continue with warm start using previous search data\nopt2 = HillClimbingOptimizer(search_space)\nopt2.search(expensive_function, n_iter=100, memory_warm_start=opt1.search_data)\n```\n\n\u003C\u002Fdetails>\n\n\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Early Stopping\u003C\u002Fb>\u003C\u002Fsummary>\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import BayesianOptimizer\n\ndef objective(params):\n    return -(params[\"x\"]**2 + params[\"y\"]**2)\n\nsearch_space = {\n    \"x\": np.arange(-10, 10, 0.1),\n    \"y\": np.arange(-10, 10, 0.1),\n}\n\nopt = BayesianOptimizer(search_space)\nopt.search(\n    objective,\n    n_iter=1000,\n    max_time=60,           # Stop after 60 seconds\n    max_score=-0.01,       # Stop when score reaches -0.01\n    early_stopping={       # Stop if no improvement for 50 iterations\n        \"n_iter_no_change\": 50,\n    },\n)\n```\n\n\u003C\u002Fdetails>\n\n\u003Cbr>\n\n## Ecosystem\n\nThis library is part of a suite of optimization tools. For updates on these packages, [follow on GitHub](https:\u002F\u002Fgithub.com\u002FSimonBlanke).\n\n| Package | Description |\n|---------|-------------|\n| [Hyperactive](https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FHyperactive) | Hyperparameter optimization framework with experiment abstraction and ML integrations |\n| [Gradient-Free-Optimizers](https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers) | Core optimization algorithms for black-box function optimization |\n| [Surfaces](https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FSurfaces) | Test functions and benchmark surfaces for optimization algorithm evaluation |\n\n\u003Cbr>\n\n## Documentation\n\n| Resource | Description |\n|----------|-------------|\n| [User Guide](https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fuser_guide.html) | Comprehensive tutorials and explanations |\n| [API Reference](https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fapi_reference.html) | Complete API documentation |\n| [Optimizers](https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fuser_guide\u002Foptimizers\u002Findex.html) | Detailed description of all 21 algorithms |\n| [Examples](https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fexamples.html) | Code examples for various use cases |\n\n\u003Cbr>\n\n## Contributing\n\nContributions welcome! See [CONTRIBUTING.md](.\u002FCONTRIBUTING.md) for guidelines.\n\n- **Bug reports**: [GitHub Issues](https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fissues)\n- **Feature requests**: [GitHub Discussions](https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fdiscussions)\n- **Questions**: [GitHub Issues](https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fissues)\n\n\u003Cbr>\n\n## Citation\n\nIf you use this software in your research, please cite:\n\n```bibtex\n@software{gradient_free_optimizers,\n  author = {Simon Blanke},\n  title = {Gradient-Free-Optimizers: Simple and reliable optimization with local, global, population-based and sequential techniques in numerical search spaces},\n  year = {2020},\n  url = {https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers},\n}\n```\n\n\u003Cbr>\n\n## License\n\n[MIT License](.\u002FLICENSE) - Free for commercial and academic use.\n","\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\">\n    \u003Cpicture>\n      \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\".\u002Fdocs\u002Fimages\u002Fgradient_logo_dark_c.svg\">\n      \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\".\u002Fdocs\u002Fimages\u002Fgradient_logo_ink_paths.svg\">\n      \u003Cimg src=\".\u002Fdocs\u002Fimages\u002Fgradient_logo_ink_paths.svg\" width=\"400\" alt=\"Gradient-Free-Optimizers Logo\">\n    \u003C\u002Fpicture>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n\u003Ch3 align=\"center\">\n在混合搜索空间中，使用局部、全局、群体和序列化技术进行轻量级优化\n\u003C\u002Fh3>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Factions\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fci.yml?style=for-the-badge&logo=githubactions&logoColor=white&label=tests\" alt=\"Tests\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fapp.codecov.io\u002Fgh\u002FSimonBlanke\u002FGradient-Free-Optimizers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcodecov\u002Fc\u002Fgithub\u002FSimonBlanke\u002FGradient-Free-Optimizers?style=for-the-badge&logo=codecov&logoColor=white\" alt=\"Coverage\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cbr>\n\n\u003Ctable align=\"center\">\n  \u003Ctr>\n    \u003Ctd align=\"right\">\u003Cb>文档\u003C\u002Fb>\u003C\u002Ftd>\n    \u003Ctd align=\"center\">▸\u003C\u002Ftd>\n    \u003Ctd>\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002F\">主页\u003C\u002Fa> ·\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fuser_guide\u002Foptimizers\u002Findex.html\">优化算法\u003C\u002Fa> ·\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fapi_reference.html\">API 参考\u003C\u002Fa> ·\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fexamples.html\">示例\u003C\u002Fa>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd align=\"right\">\u003Cb>本页内容\u003C\u002Fb>\u003C\u002Ftd>\n    \u003Ctd align=\"center\">▸\u003C\u002Ftd>\n    \u003Ctd>\n      \u003Ca href=\"#key-features\">主要特性\u003C\u002Fa> ·\n      \u003Ca href=\"#examples\">示例\u003C\u002Fa> ·\n      \u003Ca href=\"#core-concepts\">核心概念\u003C\u002Fa> ·\n      \u003Ca href=\"#citation\">引用\u003C\u002Fa>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003Cbr>\n\n---\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSimonBlanke_Gradient-Free-Optimizers_readme_686ffc77d7a3.gif\" width=\"240\" align=\"right\" alt=\"贝叶斯优化在 Ackley 函数上的应用\">\n\u003C\u002Fa>\n\n**Gradient-Free-Optimizers** 是一个用于黑箱函数无梯度优化的 Python 库。它提供了一个统一的接口，支持 21 种优化算法，从简单的爬山法到贝叶斯优化，所有算法均作用于通过 NumPy 数组定义的离散数值搜索空间。\n\n该库专为超参数调优、仿真优化以及任何梯度不可用或不切实际的场景而设计。其核心理念是简单易用：只需定义目标函数、指定搜索空间并运行即可。它是 [Hyperactive](https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FHyperactive) 的优化后端，但也可独立使用。\n\n\u003Cp>\n  \u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fsimonblanke\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLinkedIn-Follow-0A66C2?style=flat-square&logo=linkedin\" alt=\"LinkedIn\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cbr>\n\n## 安装\n\n```bash\npip install gradient-free-optimizers\n```\n\n\u003Cp>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fgradient-free-optimizers\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fgradient-free-optimizers?style=flat-square&color=blue\" alt=\"PyPI\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fgradient-free-optimizers\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fgradient-free-optimizers?style=flat-square\" alt=\"Python\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cdetails>\n\u003Csummary>可选依赖\u003C\u002Fsummary>\n\n```bash\npip install gradient-free-optimizers[progress]  # 带有 tqdm 的进度条\npip install gradient-free-optimizers[sklearn]   # 用于代理模型的 scikit-learn\npip install gradient-free-optimizers[full]      # 所有可选依赖\n```\n\n\u003C\u002Fdetails>\n\n\u003Cbr>\n\n## 主要特性\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fuser_guide\u002Foptimizers\u002Findex.html\">\u003Cb>21 种优化算法\u003C\u002Fb>\u003C\u002Fa>\u003Cbr>\n      \u003Csub>包括局部、全局、群体和基于模型的序列化优化方法。只需一行代码即可切换算法。\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fapi_reference.html\">\u003Cb>零配置\u003C\u002Fb>\u003C\u002Fa>\u003Cbr>\n      \u003Csub>所有参数均有合理默认值，无需调整优化器本身即可立即开始优化。\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fuser_guide\u002Fmemory.html\">\u003Cb>内存系统\u003C\u002Fb>\u003C\u002Fa>\u003Cbr>\n      \u003Csub>内置缓存机制可避免重复评估，对于像机器学习模型这样昂贵的目标函数尤为重要。\u003C\u002Fsub>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fuser_guide\u002Fsearch_spaces.html\">\u003Cb>离散搜索空间\u003C\u002Fb>\u003C\u002Fa>\u003Cbr>\n      \u003Csub>使用熟悉的 NumPy 语法，通过数组和范围定义参数空间。\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\"https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fuser_guide\u002Fconstraints.html\">\u003Cb>约束支持\u003C\u002Fb>\u003C\u002Fa>\u003Cbr>\n      \u003Csub>可通过定义约束函数来限制搜索空间，无效区域将被自动避开。\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\">\u003Cb>极简依赖\u003C\u002Fb>\u003C\u002Fa>\u003Cbr>\n      \u003Csub>仅需 pandas；还可选择集成 tqdm 进度条和 scikit-learn 代理模型等可选组件。\u003C\u002Fsub>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003Cbr>\n\n## 快速入门\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import HillClimbingOptimizer\n\n# 定义目标函数（最大化）\ndef objective(params):\n    x, y = params[\"x\"], params[\"y\"]\n    return -(x**2 + y**2)  # 负抛物面，最优解在 (0, 0)\n\n# 定义搜索空间\nsearch_space = {\n    \"x\": np.arange(-5, 5, 0.1),\n    \"y\": np.arange(-5, 5, 0.1),\n}\n\n# 运行优化\nopt = HillClimbingOptimizer(search_space)\nopt.search(objective, n_iter=1000)\n\n# 结果\nprint(f\"最佳得分: {opt.best_score}\")\nprint(f\"最佳参数: {opt.best_para}\")\n```\n\n**输出：**\n```\n最佳得分: -0.02\n最佳参数: {'x': 0.1, 'y': 0.1}\n```\n\n\u003Cbr>\n\n## 核心概念\n\n```mermaid\nflowchart LR\n    O[\"优化器\n    ━━━━━━━━━━\n    21种算法\"]\n\n    S[\"搜索空间\n    ━━━━━━━━━━━━\n    NumPy数组\"]\n\n    F[\"目标函数\n    ━━━━━━━━━━\n    f(params) → score\"]\n\n    D[(\"搜索数据\n    ━━━━━━━━━━━\n    历史记录\")]\n\n    O -->|提出| S\n    S -->|参数| F\n    F -->|得分| O\n\n    O -.-> D\n    D -.->|热启动| O\n```\n\n**优化器**: 实现搜索策略。从四类共21种算法中选择：局部搜索、全局搜索、基于种群的优化以及基于序列模型的优化。\n\n**搜索空间**: 将有效的参数组合定义为 NumPy 数组。每个键是参数名，每个值是允许取值的数组。\n\n**目标函数**: 您希望最大化的函数。接受一个包含参数的字典，返回一个得分。若需最小化，可对结果取负值。\n\n**搜索数据**: 所有评估的完整历史记录可通过 `opt.search_data` 访问，用于分析和未来搜索的热启动。\n\n\u003Cbr>\n\n## 示例\n\n\u003Cdetails open>\n\u003Csummary>\u003Cb>超参数优化\u003C\u002Fb>\u003C\u002Fsummary>\n\n```python\nfrom sklearn.ensemble import GradientBoostingClassifier\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.datasets import load_wine\nimport numpy as np\n\nfrom gradient_free_optimizers import BayesianOptimizer\n\nX, y = load_wine(return_X_y=True)\n\ndef objective(params):\n    model = GradientBoostingClassifier(\n        n_estimators=params[\"n_estimators\"],\n        max_depth=params[\"max_depth\"],\n        learning_rate=params[\"learning_rate\"],\n    )\n    return cross_val_score(model, X, y, cv=5).mean()\n\nsearch_space = {\n    \"n_estimators\": np.arange(50, 300, 10),\n    \"max_depth\": np.arange(2, 10),\n    \"learning_rate\": np.logspace(-3, 0, 20),\n}\n\nopt = BayesianOptimizer(search_space)\nopt.search(objective, n_iter=50)\n```\n\n\u003C\u002Fdetails>\n\n\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>贝叶斯优化\u003C\u002Fb>\u003C\u002Fsummary>\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import BayesianOptimizer\n\ndef ackley(params):\n    x, y = params[\"x\"], params[\"y\"]\n    return -(\n        -20 * np.exp(-0.2 * np.sqrt(0.5 * (x**2 + y**2)))\n        - np.exp(0.5 * (np.cos(2 * np.pi * x) + np.cos(2 * np.pi * y)))\n        + np.e + 20\n    )\n\nsearch_space = {\n    \"x\": np.arange(-5, 5, 0.01),\n    \"y\": np.arange(-5, 5, 0.01),\n}\n\nopt = BayesianOptimizer(search_space)\nopt.search(ackley, n_iter=100)\n```\n\n\u003C\u002Fdetails>\n\n\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>粒子群优化\u003C\u002Fb>\u003C\u002Fsummary>\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import ParticleSwarmOptimizer\n\ndef rastrigin(params):\n    A = 10\n    values = [params[f\"x{i}\"] for i in range(5)]\n    return -sum(v**2 - A * np.cos(2 * np.pi * v) + A for v in values)\n\nsearch_space = {f\"x{i}\": np.arange(-5.12, 5.12, 0.1) for i in range(5)}\n\nopt = ParticleSwarmOptimizer(search_space, population=20)\nopt.search(rastrigin, n_iter=500)\n```\n\n\u003C\u002Fdetails>\n\n\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>模拟退火\u003C\u002Fb>\u003C\u002Fsummary>\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import SimulatedAnnealingOptimizer\n\ndef sphere(params):\n    return -(params[\"x\"]**2 + params[\"y\"]**2)\n\nsearch_space = {\n    \"x\": np.arange(-10, 10, 0.1),\n    \"y\": np.arange(-10, 10, 0.1),\n}\n\nopt = SimulatedAnnealingOptimizer(\n    search_space,\n    start_temp=1.2,\n    annealing_rate=0.99,\n)\nopt.search(sphere, n_iter=1000)\n```\n\n\u003C\u002Fdetails>\n\n\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>约束优化\u003C\u002Fb>\u003C\u002Fsummary>\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import RandomSearchOptimizer\n\ndef objective(params):\n    return params[\"x\"] + params[\"y\"]\n\ndef constraint(params):\n    # 只有 x + y \u003C 5 的位置才是有效的\n    return params[\"x\"] + params[\"y\"] \u003C 5\n\nsearch_space = {\n    \"x\": np.arange(0, 10, 0.1),\n    \"y\": np.arange(0, 10, 0.1),\n}\n\nopt = RandomSearchOptimizer(search_space, constraints=[constraint])\nopt.search(objective, n_iter=1000)\n```\n\n\u003C\u002Fdetails>\n\n\u003Cbr>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>内存与热启动\u003C\u002Fb>\u003C\u002Fsummary>\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import HillClimbingOptimizer\n\ndef expensive_function(params):\n    # 模拟昂贵的计算\n    return -(params[\"x\"]**2 + params[\"y\"]**2)\n\nsearch_space = {\n    \"x\": np.arange(-10, 10, 0.1),\n    \"y\": np.arange(-10, 10, 0.1),\n}\n\n# 第一次搜索\nopt1 = HillClimbingOptimizer(search_space)\nopt1.search(expensive_function, n_iter=100, memory=True)\n\n# 使用之前的搜索数据进行热启动继续搜索\nopt2 = HillClimbingOptimizer(search_space)\nopt2.search(expensive_function, n_iter=100, memory_warm_start=opt1.search_data)\n```\n\n\u003C\u002Fdetails>\n\n\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>提前停止\u003C\u002Fb>\u003C\u002Fsummary>\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import BayesianOptimizer\n\ndef objective(params):\n    return -(params[\"x\"]**2 + params[\"y\"]**2)\n\nsearch_space = {\n    \"x\": np.arange(-10, 10, 0.1),\n    \"y\": np.arange(-10, 10, 0.1),\n}\n\nopt = BayesianOptimizer(search_space)\nopt.search(\n    objective,\n    n_iter=1000,\n    max_time=60,           # 60秒后停止\n    max_score=-0.01,       # 得分达到 -0.01 时停止\n    early_stopping={       # 如果连续50次迭代没有改进则停止\n        \"n_iter_no_change\": 50,\n    },\n)\n```\n\n\u003C\u002Fdetails>\n\n\u003Cbr>\n\n## 生态系统\n\n本库是优化工具套件的一部分。如需了解这些包的最新动态，请在 [GitHub](https:\u002F\u002Fgithub.com\u002FSimonBlanke) 上关注。\n\n| 软件包 | 描述 |\n|---------|-------------|\n| [Hyperactive](https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FHyperactive) | 超参数优化框架，提供实验抽象和机器学习集成 |\n| [Gradient-Free-Optimizers](https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers) | 黑箱函数优化的核心算法 |\n| [Surfaces](https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FSurfaces) | 用于优化算法评估的测试函数和基准曲面 |\n\n\u003Cbr>\n\n## 文档\n\n| 资源 | 描述 |\n|----------|-------------|\n| [用户指南](https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fuser_guide.html) | 全面的教程和说明 |\n| [API 参考](https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fapi_reference.html) | 完整的 API 文档 |\n| [优化器](https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fuser_guide\u002Foptimizers\u002Findex.html) | 对所有 21 种算法的详细描述 |\n| [示例](https:\u002F\u002Fgradient-free-optimizers.readthedocs.io\u002Fen\u002Flatest\u002Fexamples.html) | 各种用例的代码示例 |\n\n\u003Cbr>\n\n## 贡献\n\n欢迎贡献！请参阅 [CONTRIBUTING.md](.\u002FCONTRIBUTING.md) 获取指南。\n\n- **错误报告**: [GitHub Issues](https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fissues)\n- **功能请求**: [GitHub Discussions](https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fdiscussions)\n- **问题咨询**: [GitHub Issues](https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fissues)\n\n\u003Cbr>\n\n## 引用\n\n如果您在研究中使用本软件，请引用：\n\n```bibtex\n@software{gradient_free_optimizers,\n  author = {Simon Blanke},\n  title = {无梯度优化器：在数值搜索空间中使用局部、全局、群体和序列方法进行简单可靠的优化},\n  year = {2020},\n  url = {https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers},\n}\n```\n\n\u003Cbr>\n\n## 许可证\n\n[MIT 许可证](.\u002FLICENSE) - 允许用于商业和学术用途。","# Gradient-Free-Optimizers 快速上手指南\n\n**Gradient-Free-Optimizers** 是一个轻量级的 Python 库，专为无需梯度的黑盒函数优化设计。它提供了 21 种优化算法（从简单的爬山法到贝叶斯优化），适用于超参数调优、仿真优化等场景。其核心优势在于零配置启动、支持离散搜索空间以及内置的记忆缓存系统。\n\n## 环境准备\n\n*   **操作系统**：Linux, macOS, Windows\n*   **Python 版本**：3.8 及以上\n*   **核心依赖**：\n    *   `numpy` (必需)\n    *   `pandas` (必需)\n*   **可选依赖**（按需安装）：\n    *   `tqdm`：用于显示优化进度条\n    *   `scikit-learn`：用于基于代理模型的优化器（如贝叶斯优化）\n\n## 安装步骤\n\n使用 pip 进行安装。国内开发者推荐使用清华或阿里镜像源以加速下载。\n\n**基础安装：**\n```bash\npip install gradient-free-optimizers -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n**安装完整功能（包含进度条和机器学习模型支持）：**\n```bash\npip install \"gradient-free-optimizers[full]\" -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 基本使用\n\n以下是最简单的使用示例，演示如何使用**爬山算法 (Hill Climbing)** 在离散空间中寻找函数的最大值。\n\n### 1. 定义目标函数与搜索空间\n目标函数接收一个参数字典并返回得分（分数越高越好）。搜索空间通过 NumPy 数组定义每个参数的可选值。\n\n### 2. 运行优化\n实例化优化器并调用 `search` 方法。\n\n```python\nimport numpy as np\nfrom gradient_free_optimizers import HillClimbingOptimizer\n\n# 1. 定义目标函数 (最大化)\n# 这里是一个负抛物线函数，最优解在 (0, 0)，最大值为 0\ndef objective(params):\n    x, y = params[\"x\"], params[\"y\"]\n    return -(x**2 + y**2)\n\n# 2. 定义搜索空间\n# 使用 NumPy arange 定义离散的参数范围\nsearch_space = {\n    \"x\": np.arange(-5, 5, 0.1),\n    \"y\": np.arange(-5, 5, 0.1),\n}\n\n# 3. 初始化优化器并运行\n# n_iter 指定迭代次数\nopt = HillClimbingOptimizer(search_space)\nopt.search(objective, n_iter=1000)\n\n# 4. 获取结果\nprint(f\"最佳得分：{opt.best_score}\")\nprint(f\"最佳参数：{opt.best_para}\")\n```\n\n**输出示例：**\n```text\n最佳得分：-0.02\n最佳参数：{'x': 0.1, 'y': 0.1}\n```\n\n### 核心概念简述\n*   **Optimizer**: 选择算法类（如 `BayesianOptimizer`, `ParticleSwarmOptimizer` 等），库内共提供 21 种算法。\n*   **Search Space**: 必须是字典格式，值为 NumPy 数组，表示该参数所有可能的离散取值。\n*   **Objective**: 你的业务逻辑函数，返回标量分数。若需最小化损失，请在函数内部返回负值（例如 `return -loss`）。\n*   **Memory**: 库内置缓存机制，自动避免对相同参数组合的重复计算，特别适合耗时较长的评估函数。","某工业仿真工程师正在调整复杂的流体动力学模拟参数，以最小化能耗并最大化输出效率，但模拟过程耗时且无法提供梯度信息。\n\n### 没有 Gradient-Free-Optimizers 时\n- 工程师只能依赖手动试错或简单的网格搜索，面对混合了整数（如管道数量）和浮点数（如流速系数）的参数空间，效率极低。\n- 由于缺乏统一的接口，尝试切换不同优化策略（如从随机搜索切换到贝叶斯优化）需要重写大量底层代码，开发成本高昂。\n- 在仿真模型作为“黑盒”且计算昂贵的情况下，传统基于梯度的方法完全失效，导致难以在有限时间内找到全局最优解。\n- 每次实验需耗费数小时，有限的计算资源被浪费在低效的探索上，项目进度严重滞后。\n\n### 使用 Gradient-Free-Optimizers 后\n- 利用其支持的 21 种无梯度算法（如进化策略或贝叶斯优化），轻松处理离散与连续混合的搜索空间，自动快速锁定最优参数组合。\n- 通过统一的 Python 接口，工程师仅需定义目标函数和搜索范围，即可一键切换多种高级优化器，无需关心底层实现细节。\n- 针对高成本的仿真黑盒函数，采用基于代理模型的序贯优化技术，用极少的迭代次数即可逼近全局最优，大幅减少模拟运行次数。\n- 原本需要数周的参数调优工作缩短至几天完成，显著提升了研发迭代速度和最终产品的能效表现。\n\nGradient-Free-Optimizers 让工程师在面对昂贵且不可导的黑盒问题时，能以最低代码成本实现高效、智能的全局参数寻优。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSimonBlanke_Gradient-Free-Optimizers_686ffc77.gif","SimonBlanke","Simon Blanke","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FSimonBlanke_f39c4702.jpg","Engineering @ HENSOLDT | Author of Gradient-Free-Optimizers & @hyperactive-project ","Hensoldt","Germany","simon.blanke.opensource@pm.me",null,"https:\u002F\u002Fgithub.com\u002FSimonBlanke",[83,87,91],{"name":84,"color":85,"percentage":86},"Python","#3572A5",74.4,{"name":88,"color":89,"percentage":90},"Jupyter Notebook","#DA5B0B",25.5,{"name":92,"color":93,"percentage":94},"Makefile","#427819",0.1,1268,95,"2026-04-14T09:36:35","MIT","未说明 (通常支持所有主流操作系统)","不需要 GPU","未说明",{"notes":103,"python":104,"dependencies":105},"这是一个轻量级库，核心依赖极少（仅需 pandas）。可选依赖包括用于进度条的 tqdm 和用于代理模型（如贝叶斯优化）的 scikit-learn。该库专注于无梯度优化，适用于超参数调整和仿真优化场景。","3.8+",[106,107],"numpy","pandas",[13,45,14],[110,111,112,113,114,115,116,117,118,119,120,121,122,123,124],"optimization","gradient-free-optimization","bayesian-optimization","particle-swarm-optimization","evolution-strategies","simulated-annealing","random-search","hill-climbing","meta-heuristic","machine-learning","tree-of-parzen-estimator","hyperparameter-optimization","blackbox-optimization","constrained-optimization","nelder-mead","2026-03-27T02:49:30.150509","2026-04-18T02:20:25.459097",[128,133,138,143,148,153],{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},38580,"这些无梯度优化方法可以应用于 LLaMA 或 BERT 等大模型的训练吗？","目前该库主要针对低维搜索空间设计。虽然有用户尝试将其用于神经网络优化（例如在 20 维空间中经过 1500 个 epoch 将 MSE 损失降至 0.07-0.1），但与传统 SGD 优化器相比（SGD 可在少于 10 个 epoch 内达到相同损失且速度更快），其实际价值有限。维护者表示目前不直接支持大模型训练，但会关注相关进展，未来可能会启动新项目专门探讨此话题。","https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fissues\u002F49",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},38581,"为什么某些算法（如随机爬山法）在多次迭代后仍然没有改进或无法收敛？","这通常不是早期停止（early_stopping）功能的故障，而是算法本身的特性所致。`StochasticHillClimbing` 是模拟退火等 MCMC 方法的父类，具有随机行为。当算法已经相对接近最优解时，`SimulatedAnnealing` 和 `ParallelTempering` 等行为可能类似于随机搜索。如果减小步长（step_size）未带来预期改进，可能是因为陷入了局部最优或随机性导致。建议参考文档中关于 `p_accept` 参数的说明，并观察搜索路径以调整参数。","https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fissues\u002F84",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},38582,"在高维搜索空间（例如大于 20 维）中进行初始化时遇到“内存溢出（out-of-memory）”错误怎么办？","该问题已在 v1.0.5 版本中修复。维护者针对 `init-vertices` 部分创建了修复程序，并针对高于 30 维的情况在 `init-grid` 中内置了变通方案。对于超过 30 维的网格初始化属于小众案例，当前版本已做处理以避免内存迅速增加。请确保升级到 v1.0.5 或更高版本。","https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fissues\u002F1",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},38583,"Powell 方法在改变方向时存在角度限制的错误，该如何解决？","这是一个已知缺陷，在当前实现中方向改变仅限于正交（90°）。该问题已在 v1.10.0 版本中通过重新实现该优化器得到修复。请升级库至 v1.10.0 或更高版本以解决此问题。","https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fissues\u002F51",{"id":149,"question_zh":150,"answer_zh":151,"source_url":152},38584,"如何在搜索空间中使用整数参数而不被自动转换为浮点数类型？","这是一个已知问题，整数参数在优化过程中可能被转换为 `numpy.float64`，导致在需要整数的上下文中报错（如 `range()` 函数）。该问题已通过 Pull Request #17 及后续提交修复。请确保使用修复后的版本，并在定义搜索空间时注意参数类型，或者升级到包含此修复的最新版本以避免类型错误。","https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fissues\u002F15",{"id":154,"question_zh":155,"answer_zh":156,"source_url":157},38585,"该库是否支持网格搜索（Grid Search）优化器？","是的，该库已支持网格搜索优化器。由社区贡献的实现已合并，可在 Gradient-Free-Optimizers v0.5.0 及以上版本中使用。该实现满足特定需求：在达到 `n_iter` 次迭代后停止而非遍历整个搜索空间，且位置不会在优化开始时预计算以节省内存。更多详情可参考 optimization-tutorial 仓库中的教程。","https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fissues\u002F10",[159,164,169,174,179,184,189,194,199,204,209,214,219,224,229],{"id":160,"version":161,"summary_zh":162,"released_at":163},314481,"v1.11.1","**完整变更日志**: https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fcompare\u002Fv1.11.0...v1.11.1","2026-03-15T11:57:44",{"id":165,"version":166,"summary_zh":167,"released_at":168},314482,"v1.11.0","**完整变更日志**: https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fcompare\u002Fv1.10.1...v1.11.0","2026-03-14T16:00:55",{"id":170,"version":171,"summary_zh":172,"released_at":173},314483,"v1.10.1","### 修复\n- `search()` 中的 `optimum=\"minimum\"` 参数对实际优化没有任何影响。目标适配器接收到的是原始函数，而不是取负后的函数，因此优化器会无视 `optimum` 设置而始终进行最大化。取负操作仅应用于进度条的显示。\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fcompare\u002Fv1.10.0...v1.10.1","2026-02-19T23:55:35",{"id":175,"version":176,"summary_zh":177,"released_at":178},314484,"v1.10.0","### 新增\n- 新的优化器模块（`optimizers\u002F`），采用模板方法模式，并提供显式的钩子方法（`_iterate_continuous_batch`、`_iterate_categorical_batch`、`_iterate_discrete_batch`）\n- 扩展了搜索空间的维度类型：连续型 `(min, max)` 元组、分类型 `[\"a\", \"b\"]` 列表，以及离散数值型 NumPy 数组\n- `DimensionType` 枚举、`DimensionInfo` 数据类和 `DimensionMasks`，用于实现维度感知的向量化操作\n- 通过 `DimensionIteratorMixin` 实现对包含 1000 多维的搜索空间的自动向量化\n- 为 `GridSearchOptimizer` 和 `DirectAlgorithm` 添加了 `resolution` 参数，以处理连续型维度\n- 在 DIRECT 算法中引入混合类型距离度量（类似 Gower 度量），适用于异构维度\n- 在 `ResultsManager` 中实现了搜索数据的惰性构建，以降低优化过程中的内存占用\n- 在 `CoreOptimizer` 中通过属性 setter 进行状态管理，并自动跟踪历史记录\n- 扩展了所有优化器的搜索空间测试用例\n- 增加了混合型和大规模搜索空间的示例\n- 更新了 Sphinx 文档站点，包括首页、徽标和导航\n\n### 变更\n- 所有优化器均已重新实现，以符合新的模板方法架构\n- 保留了旧版优化器的实现于 `optimizers_legacy\u002F` 目录中（不作为公共 API 的一部分）\n- 恢复 SciPy 作为核心依赖项\n- 重写了壁面裁剪算法\n- 重构了优化器的初始化流程（`finish_initialization` 和 `_generate_position` 模式）\n- 增强了转换器的功能，增加了维度类型分析（`_analyze_dimension_types`）\n- 更新了 CI 工作流配置\n\n### 修复\n- 下山单纯形法及其他优化器中的 `finish_initialization` 方法\n- 顺序模型优化器中的 `_move_random` 方法\n- 优化器子类中初始位置及 `evaluate_init` 方法覆盖的问题\n- 评估过程中出现空分数的边缘情况","2026-02-16T17:34:10",{"id":180,"version":181,"summary_zh":182,"released_at":183},314485,"v1.9.0","### 新增\n- 用于纯 Python 数组操作、无需 NumPy 的私有数组后端（`_array_backend`）\n- 用于数学运算、无需 SciPy 的私有数学后端（`_math_backend`）\n- 原生 `DecisionTreeRegressor` 实现\n- 原生 `ExtraTreesRegressor` 实现\n- 原生 `RandomForestRegressor` 实现\n- 原生 `GradientBoostingRegressor` 实现\n- 当 `tqdm` 不可用时的后备实现 `SimpleProgressBar` 类\n- 为 `EvolutionStrategyOptimizer` 添加自适应 Sigma 参数\n- 为 Powell 法添加 `convergence_threshold` 参数\n- 为所有优化器类及 `Search` 类添加类型提示\n- 为所有优化器类提供全面的文档字符串\n- 集成 ReadTheDocs 的 Sphinx 文档\n- 为所有优化器类别编写 API 测试\n\n### 变更\n- `scikit-learn` 现在是可选依赖项（默认使用原生估计器）\n- `SciPy` 现在是可选依赖项\n- `tqdm` 现在是可选依赖项\n- 完全重写 Powell 法，改进了线搜索算法\n- 重新整理 README，并新增三维优化动画\n- 将 CI 工作流整合为单一的 `ci.yml`\n- 重构测试目录结构（`tests\u002Ftest_main\u002F`、`tests\u002Ftest_internal\u002F` 等）\n- 改进错误信息，增加可操作的建议\n\n### 移除\n- `BayesianRidge` 估计器\n- 高斯过程回归器中的线性 GP 选项\n\n### 修复\n- Powell 法中的黄金分割搜索算法\n- 修复可变默认参数的反模式问题（将 `constraints=[]` 改为 `constraints=None`）\n- 补齐内部装饰器中缺失的 `@functools.wraps`\n- 修复打印耗时中的除零边界情况\n- 修复 `evaluate` 方法中的 bug","2026-01-15T19:39:18",{"id":185,"version":186,"summary_zh":187,"released_at":188},314486,"v1.8.1","### 构建\n- 修复在使用 twine 上传时出现的错误：[\"无法识别或格式错误的字段: 'license-file'](https:\u002F\u002Fgithub.com\u002Fpypa\u002Ftwine\u002Fissues\u002F1216)","2025-12-29T10:22:25",{"id":190,"version":191,"summary_zh":192,"released_at":193},314487,"v1.8.0","### Python 版本支持\n- 移除了对 Python 3.9 的支持\n- 新增了对 Python 3.14 的支持\n- 更新了 macOS、Ubuntu 和 Windows 平台的 CI 工作流\n\n### 包元数据\n- 在 `pyproject.toml` 中添加了关键字和分类器，以提升在 PyPI 上的可发现性\n\n### 测试改进\n- 优化了测试套件，使其运行速度更快\n- 减少了多个测试文件中的测试迭代次数\n- 添加了 `optimizers_representative` 参数化配置，用于子集测试\n- 修复了偶发的测试失败：\n  - `test_inf_nan_1`: 将概率性验证的下界从 10 放宽至 5\n  - `test_start_temp_1`: 添加了确定性的随机种子，并放宽了断言条件以允许相等","2025-12-29T10:09:42",{"id":195,"version":196,"summary_zh":197,"released_at":198},314488,"v1.7.2","## 变更内容\n* 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fpull\u002F64 中将 pytest 从 8.3.4 升级至 8.3.5\n* ⚡️ 由 @misrasaurabh1 在 https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fpull\u002F69 中将函数 `normalize` 的执行速度提升 79%\n* ⚡️ 由 @misrasaurabh1 在 https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fpull\u002F68 中将函数 `normalize` 的执行速度提升 90%\n* 由 @smilingprogrammer 在 https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fpull\u002F71 中修复了“添加对目标函数最大化和最小化的支持”这一问题\n* ⚡️ 由 @misrasaurabh1 在 https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fpull\u002F67 中将方法 `LipschitzFunction.find_best_slope` 的执行速度提升 81%\n* 由 @emmanuel-ferdman 在 https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fpull\u002F79 中解决了 NumPy 库的警告问题\n* 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fpull\u002F81 中将 pytest 从 8.3.5 升级至 8.4.0\n* 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fpull\u002F83 中将 pytest 从 8.4.0 升级至 8.4.1\n* 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fpull\u002F88 中将 pytest 从 8.4.1 升级至 8.4.2\n\n## 新贡献者\n* @misrasaurabh1 在 https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fpull\u002F69 中做出了首次贡献\n* @smilingprogrammer 在 https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fpull\u002F71 中做出了首次贡献\n* @emmanuel-ferdman 在 https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fpull\u002F79 中做出了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FSimonBlanke\u002FGradient-Free-Optimizers\u002Fcompare\u002Fv1.7.1...v1.7.2","2025-09-25T17:43:44",{"id":200,"version":201,"summary_zh":202,"released_at":203},314489,"v1.7.1","- 为公共 API 类添加文档字符串\n- 添加类型提示\n- 放弃对 Python 3.8 的支持","2024-12-07T12:30:38",{"id":205,"version":206,"summary_zh":207,"released_at":208},314490,"v1.6.0","  - 添加对 NumPy 2.x 的支持\n  - 添加对 Pandas 2.x 的支持\n  - 添加对 Python 3.12 的支持\n  - 将 setup.py 迁移到 pyproject.toml\n  - 将项目结构改为 src 目录布局","2024-08-14T15:05:08",{"id":210,"version":211,"summary_zh":212,"released_at":213},314491,"v1.5.0","- add Genetic algorithm optimizer\r\n- add Differential evolution optimizer\r\n","2024-07-29T13:04:25",{"id":215,"version":216,"summary_zh":217,"released_at":218},314492,"v1.4.0","- add Grid search parameter that changes direction of search\r\n- add SMBO parameter that enables to avoid replacement of the sampling\r\n- fix bug in transition probability of stochastic-hill-climbing and simulated-annealing","2024-05-11T14:59:21",{"id":220,"version":221,"summary_zh":222,"released_at":223},314493,"v1.3.0","add support for constrained optimization","2023-04-11T08:48:45",{"id":225,"version":226,"summary_zh":227,"released_at":228},314494,"v1.2.0","- add DIRECT algorithm\r\n- automatically add random initial positions if necessary (often requested)","2023-02-28T10:46:04",{"id":230,"version":231,"summary_zh":231,"released_at":232},314495,"v1.0.1","2021-12-01T14:55:42"]