新型生物启发式群体智能优化器
融合灯塔水母生命周期 × 灯塔光传播物理模型
灯塔水母算法(Immortal Jellyfish Algorithm,IJA) 是一种全新的元启发式优化算法,灵感来源于:
提供 Python、C++、Java 三个版本。
──────────────────────────────────────────────────────────────▶ 进度 τ = t/T
[0, 0.15) [0.15, 0.50) [0.50, 0.85) [0.85, 1]
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 水螅体 │ -> │ 横裂生殖 │ -> │ 水母体 │ -> │ 衰老期 │
│ POLYP │ │ STROBILATION │ │ MEDUSA │ │ SENESCENCE │
│ │ │ │ │ │ │ │
│ 莱维飞行 │ │ 自适应 │ │ 灯塔吸引 │ │ 高斯精细 │
│ 全局探索 │ │ 子代克隆 │ │ 开发收敛 │ │ 局部优化 │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
广域搜索 多样化 收敛 精调
核心数学算子:
$$I_{i,s} = \frac{I_0}{1+\kappa|\mathbf{x}_i-\mathbf{g}_s|^2}\,e^{-\lambda\tau} \qquad \text{(灯塔吸引,逆平方光强模型)}$$
$$\mathbf{x}_i^{t+1} = \mathbf{x}_i^t + 0.01(u-l)\cdot L_j(\beta)\cdot(\mathbf{x}_i^t-\mathbf{x}^*) \qquad \text{(莱维飞行探索)}$$
$$\delta_j^t = A_0(1-\tau)^2\sin(2\pi f_p\tau+\phi_i)(u_j-l_j) \qquad \text{(脉冲游泳)}$$
$$\mathbf{x}_i^{\text{opp}} = l_j + u_j - \mathbf{x}_i \qquad \text{(去分化,基于对立学习的重启)}$$
完整数学推导见 docs/algorithm_details.md
实验设置:30 次独立运行,维度 D = 30。
IJA 使用推荐参数;对比算法使用各自文献标准参数。




# 安装依赖
pip install -r requirements.txt
# 运行一个简单示例
python - <<'EOF'
import sys; sys.path.insert(0, "python")
from ija import IJA
import numpy as np
# 最小化 30 维球函数
result = IJA(n=100, max_iter=2000, seed=0).optimize(
lambda x: np.sum(x**2),
dim=30, lb=-100.0, ub=100.0
)
print(f"最优适应度:{result.best_fitness:.6e}")
print(f"函数评估次数:{result.n_function_evals}")
EOF
更多用法示例:python python/examples/quickstart.py
cd cpp
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
./ija_demo # 运行所有 8 个基准函数
cd java
mvn compile
mvn exec:java -Dexec.mainClass="ija.Main"
# 不用 Maven:
javac -d out src/main/java/ija/*.java
java -cp out ija.Main
# 第一步:运行实验(约 30-60 分钟,取决于机器性能)
cd immortal-jellyfish-algorithm
python python/experiments/run_all.py
# 第二步:生成所有图表
python python/experiments/visualize.py
# 生成全部图表但跳过 3D 轨迹图(节省时间)
python python/experiments/visualize.py --skip-slow
immortal-jellyfish-algorithm/
├── python/ ← 主实现(Python)
│ ├── ija/
│ │ ├── __init__.py # 对外 API:IJA, OptimizeResult
│ │ ├── algorithm.py # 主优化器类
│ │ ├── operators.py # 所有数学算子
│ │ ├── lifecycle.py # 相位调度器
│ │ └── archive.py # 拥挤距离精英档案
│ ├── benchmarks/functions.py # 8 个基准函数
│ ├── compare/algorithms.py # PSO、DE、GWO、WOA、SCA
│ ├── experiments/
│ │ ├── run_all.py # 完整实验运行器
│ │ └── visualize.py # 图表生成
│ └── examples/quickstart.py # 4 个带注释的示例
├── cpp/ # C++ 实现(竞赛风格)
│ ├── include/ija.h
│ ├── src/ija.cpp
│ └── CMakeLists.txt
├── java/ # Java 实现(Builder 模式)
│ ├── src/main/java/ija/
│ └── pom.xml
├── docs/algorithm_details.md # 完整数学推导
├── results/ # 图表和 JSON 输出
├── pyproject.toml
├── requirements.txt
├── LICENSE
└── README.md # 英文主页
| 参数 | 推荐值 | 说明 |
|---|---|---|
n |
100 | 种群规模 |
max_iter |
2000 | 最大迭代次数 |
top_k |
5 | 灯塔精英数量 |
levy_beta |
1.5 | 莱维分布指数 |
archive_size |
20 | 精英档案容量 |
age_max |
20 | 停滞阈值(触发去分化) |
decay_lambda |
0.3 | 灯塔光强衰减率 |
alpha_max |
2.5 | 最大步长 |
alpha_min |
0.01 | 最小步长 |
相比同类算法,IJA 的独特设计:
@software{ija2025,
title = {Immortal Jellyfish Algorithm (IJA): A Novel Bio-Inspired Swarm Intelligence Optimizer},
author = {IJA Contributors},
year = {2025},
url = {https://github.com/LangZhong36/immortal-jellyfish-algorithm},
license = {MIT}
}
欢迎 Issue 和 PR!步骤:Fork → 新建分支 → 提交修改 → 发起 Pull Request。三个语言实现应保持功能一致。
MIT — 详见 LICENSE。
⭐ 如果这个项目对你有帮助,欢迎点个 Star!
$ claude mcp add immortal-jellyfish-algorithm \
-- python -m otcore.mcp_server <graph>