# HeuristicSolver **Repository Path**: shikang999/heuristic-solver ## Basic Information - **Project Name**: HeuristicSolver - **Description**: 一个启发式求解算法框架,用于求解非线性最小化问题。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-18 - **Last Updated**: 2026-02-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HeuristicSolver ### 1. 背景 很多工程问题, 最终都会变成对非线性模型的建模, 进而求解。 对非线性模型的求解, 凸优化里已经有非常成熟的理论支撑且也有对应算法实现。而在非凸理论里, 目前并没有一个对绝大部分非线性问题有效的求解理论支撑。 基于种群思想的启发式求解非线性寻优算法, 因为其喜人的求解水平, 为求解非线性问题开辟了一个路径。 网上有很多基于种群的随机非线性寻优算法, 绝大部分基于Matlab实现, 有少部分基于Python, 而使用C++实现的比较少。由于C++本身的计算效率较高, 因此这里单独开一仓库使用c++实现基本的优化框架。 如果有什么问题,可以给我发邮件: 曾利刚(shikang999@126.com) ### 2. 说明 #### 2.1 语言版本 代码使用c++编写, 编译时开启c++17及以上版本支持. #### 2.2 环境支持 (1) 目前主要在ubuntu使用 (2) 需要Eigen支持 #### 2.3 编译 直接运行build.sh脚本进行编译 Debug模式: ./build.sh -d Release模式: ./build.sh -r #### 2.4 求解器实现 自己单独实现求解器时, 需要重载 BaseSolver 类, 对 solveByIter 函数进行重载即可. solveByIter函数主要实现每个迭代步种群变量的 vecVariable_ 更新. #### 2.5 测试函数添加 如果要添加测试函数, 需要重载 BaseFun 类, 对 calcFun 函数进行重载即可. calcFun函数主要实现最小化目标函数. 具体可以参考 HardFun5_1 类的实现. #### 2.6 加速 本函数在求解时, 单独新建线程进行求解。因此求解器在调用 solve 求解后, 需要调用 waitExit 函数进行等待。如果要同时测试多个求解器, 可以单独开启线程分别求解。 #### 2.7 案例 (1) 求解非线性方程组, 参照 example/exampleSolveEqu.cpp (2) 非线性表达式拟合, 参照 example/exampleSolveFit.cpp (3) 混合非线性规划求解, 参照 example/exampleSolveProg.cpp #### 2.8 其它 (1) 本框架包含c++实现的CEC2017优化算法测试案例,可以直接使用。 (2) 本框架尽量添加一些求解效果较好的求解算法, 以及添加一些有难度的求解测试函数. 在发表对应文章时, 可以使用本框架进行算法编写.