多模态————Flamingo算法

一、Flamingo算法核心算法

        Flamingo又名火烈鸟优化算法,是一种模拟火烈鸟群体行为的元启发式优化算法,属于智能优化算法的范畴,核心灵感来自火烈鸟的群体觅食、社交聚集、迁徙三大行为:

  1. 觅食行为:火烈鸟会朝着食物浓度高的区域移动,对应算法中 “向最优解方向搜索”;
  2. 社交聚集:火烈鸟倾向于聚集在群体中心,避免孤立,对应算法中 “群体协作,平衡探索与开发”;
  3. 迁徙行为:当当前区域食物不足时,火烈鸟会整体迁徙到新区域,对应算法中 “跳出局部最优,全局探索”。

        该算法的核心目标是通过模拟上述行为,在解空间中高效搜索最优解(如最小值 / 最大值问题),相比传统算法(如 PSO、GA),它在平衡 “探索(全局搜索)” 和 “开发(局部求精)” 上表现更优。

二、Flamingo算法数学公式

1.符号定义
x_{i}^{t}

,第 t 代第 i 只火烈鸟的位置。

x_{best}^{t}

,第 t 代全局最优火烈鸟的位置最优解。

x_{mean}^{t}

,第 t 代火烈鸟群体的平均位置。

N,火烈鸟种群规模。

d,解空间维度。

α,觅食步长因子(通常 0<α<1)。

β,聚集因子(通常 β∈[0,2])。

r1​,r2​,随机数(0<r1​,r2​<1)。

P,迁徙概率(通常 P=0.1)。

2.算法计算流程
1. 觅食行为位置更新

火烈鸟向全局最优解方向移动,公式:

X_{i}^{t+1}=X_{i}^{t}+\alpha \cdot r_{}\cdot \left ( X_{best}^{t}-X_{i}^{t} \right )
2. 社交聚集行为位置更新

火烈鸟向群体中心移动,平衡局部搜索,公式:

X_{i}^{t+1}=X_{i}^{t}+\beta \cdot r_{2}\cdot \left ( X_{mean}^{t}-X_{i}^{t} \right )
3. 迁徙行为(全局探索)

当随机数小于迁徙概率 P 时,火烈鸟随机迁徙到新位置,跳出局部最优:

X_{i}^{t+1}=X_{min}^{}+r_{3}\cdot \left ( X_{max}-X_{min} \right )

其中

x_{min},x_{max}

是解空间的上下界,r3​ 是随机数。

4. 综合位置更新

实际实现中,会融合上述三种行为。

三、实例代码解释

模块一:核心库导入
import numpy as np
模块二:定义目标函数
def sphere_function(x): """ Sphere函数:用于测试优化算法的经典函数,最小值在x=0处,值为0 参数x:单个火烈鸟的位置(d维向量) 返回:函数值(越小越优) """ return np.sum(x**2)
模块三:定义 Flamingo 算法类
class FlamingoOptimization: def __init__(self, pop_size=50, dim=2, max_iter=100, x_min=-10, x_max=10, alpha=0.5, beta=1.5, P=0.1): """初始化参数""" self.pop_size = pop_size # 种群规模(火烈鸟数量) self.dim = dim # 解空间维度(比如2维就是找(x1,x2)使函数最小) self.max_iter = max_iter # 最大迭代次数(算法终止条件) self.x_min = x_min # 解空间下界(比如x1/x2的最小值) self.x_max = x_max # 解空间上界 self.alpha = alpha # 觅食步长因子(控制向最优解移动的步长) self.beta = beta # 聚集因子(控制向群体中心移动的步长) self.P = P # 迁徙概率(触发全局探索的概率) # 初始化种群位置:随机生成50个2维向量,每个元素在[-10,10]之间 self.population = np.random.uniform(low=x_min, high=x_max, size=(pop_size, dim)) # 计算每个火烈鸟的适应度(目标函数值) self.fitness = np.array([sphere_function(ind) for ind in self.population]) # 找到初始全局最优:适应度最小的火烈鸟位置和值 self.gbest_pos = self.population[np.argmin(self.fitness)].copy() self.gbest_fit = np.min(self.fitness)
模块四:单次迭代更新逻辑
def update(self): """单次迭代的位置更新逻辑(核心)""" # 计算种群平均位置(社交聚集的中心) mean_pos = np.mean(self.population, axis=0) for i in range(self.pop_size): # 生成随机数(用于公式中的r1, r2, r4) r1 = np.random.random() # 0-1之间的随机数,控制觅食步长的随机性 r2 = np.random.random() # 0-1之间的随机数,控制聚集步长的随机性 r4 = np.random.random() # 0-1之间的随机数,判断是否触发迁徙 if r4 > self.P: # 情况1:不触发迁徙,执行觅食+聚集行为 # 公式:X_i^{t+1} = X_i^t + α*r1*(X_best - X_i) + β*r2*(X_mean - X_i) self.population[i] = self.population[i] + \ self.alpha * r1 * (self.gbest_pos - self.population[i]) + \ self.beta * r2 * (mean_pos - self.population[i]) else: # 情况2:触发迁徙,随机生成新位置(全局探索) # 公式:X_i^{t+1} = X_min + r3*(X_max - X_min) r3 = np.random.random(size=self.dim) # 每个维度生成一个随机数 self.population[i] = self.x_min + r3 * (self.x_max - self.x_min) # 边界处理:确保位置不超出解空间(比如x1/x2不会小于-10或大于10) self.population[i] = np.clip(self.population[i], self.x_min, self.x_max) # 更新所有火烈鸟的适应度 self.fitness = np.array([sphere_function(ind) for ind in self.population]) # 更新全局最优:如果当前迭代的最优比历史最优更好,则替换 current_best_idx = np.argmin(self.fitness) current_best_fit = self.fitness[current_best_idx] if current_best_fit < self.gbest_fit: self.gbest_fit = current_best_fit self.gbest_pos = self.population[current_best_idx].copy()
模块五:运行完整算法
def run(self): """运行完整的Flamingo算法""" for iter_num in range(self.max_iter): self.update() # 每次迭代执行位置更新 # 每10次迭代打印一次结果,监控算法收敛过程 if (iter_num + 1) % 10 == 0: print(f"迭代次数:{iter_num+1:3d} | 全局最优适应度:{self.gbest_fit:.6f}") return self.gbest_pos, self.gbest_fit
模块六:主函数运行
if __name__ == "__main__": # 初始化算法实例 fo = FlamingoOptimization( pop_size=50, # 50只火烈鸟 dim=2, # 2维解空间 max_iter=100, # 迭代100次 x_min=-10, # 解空间下界-10 x_max=10 # 解空间上界10 ) # 运行算法 best_pos, best_fit = fo.run() # 输出最终结果 print("\n==================== 最终结果 ====================") print(f"最优位置:{best_pos}") print(f"最优适应度(函数最小值):{best_fit:.6f}")
运行结果

迭代次数: 10 | 全局最优适应度:0.004721
迭代次数: 20 | 全局最优适应度:0.000925
迭代次数: 30 | 全局最优适应度:0.000121
迭代次数: 40 | 全局最优适应度:0.000121
迭代次数: 50 | 全局最优适应度:0.000121
迭代次数: 60 | 全局最优适应度:0.000121
迭代次数: 70 | 全局最优适应度:0.000121
迭代次数: 80 | 全局最优适应度:0.000121
迭代次数: 90 | 全局最优适应度:0.000121
迭代次数:100 | 全局最优适应度:0.000121

==================== 最终结果 ====================
最优位置:[0.01060456 0.00298532]
最优适应度(函数最小值):0.000121

  • 核心结论:这份结果表明 Flamingo 算法有效收敛到了 Sphere 函数的近最优解,最优位置接近 (0,0),适应度 0.000121 是极小值,算法达到了优化目标;
  • 收敛特征:前 30 次快速收敛,30 次后停滞,体现了元启发式算法 “先探索、后开发” 的典型特征;
  • 结果准确性:最优适应度和最优位置的计算完全匹配,验证了代码实现的正确性,只是受参数 / 迭代次数限制未达到理论最优(0)。

四、总结

  • 核心逻辑:Flamingo 算法通过模拟火烈鸟的觅食(向最优解移动)、聚集(向群体中心移动)、迁徙(全局探索)行为,平衡 “探索” 和 “开发”,实现最优解搜索;
  • 数学核心:位置更新公式分为 “觅食 + 聚集”(局部求精)和 “迁徙”(全局探索)两部分,通过随机数和概率控制行为切换;
  • 代码关键:核心是种群位置的迭代更新,需注意边界处理、适应度计算和全局最优的实时更新,确保算法收敛。

Read more

为省5-10美元差点毁库!Claude一条指令删光200万条数据、网站停摆24小时,创始人坦言:全是我的错

为省5-10美元差点毁库!Claude一条指令删光200万条数据、网站停摆24小时,创始人坦言:全是我的错

编译 | 屠敏 出品 | ZEEKLOG(ID:ZEEKLOGnews) AI 时代,一次看似普通的操作,竟能让整套生产环境与近 200 万条数据瞬间「归零」。 近日,数据科学社区 DataTalks.Club 创始人 Alexey Grigorev 就遭遇了这样的惊魂时刻,他在使用 AI 编程工具 Claude Code 管理网站服务器时,意外清空了平台积累 2.5 年的核心数据,甚至连数据库快照也未能幸免,导致网站停摆整整 24 小时。 这起事故不仅在开发者社区引发热议,更给所有依赖 AI 工具与自动化运维的从业者敲响了警钟。事后,Alexey Grigorev 公开复盘了整个过程,并揭露了此次事故的核心问题。让我们一起看看。 一次看似很普通的网站迁移 这场“删库”事件的前因,其实并不复杂。

By Ne0inhk
星标超 28 万,OpenClaw 两天两次大更!适配GPT 5.4,告别“抽卡式 Prompt”

星标超 28 万,OpenClaw 两天两次大更!适配GPT 5.4,告别“抽卡式 Prompt”

整理 | 梦依丹 出品 | ZEEKLOG(ID:ZEEKLOGnews) “We don’t do small releases.” 这是 OpenClaw 在发布 2026.3.7 版本时写下的一句话。 刚刚过去的周六与周日,这个 GitHub 星标已超 28 万 的 AI Agent 开源项目再次迎来两轮重量级更新。 两天两次更新:OpenClaw 做了一次“真正的大版本升级” 打开 OpenClaw 的 GitHub 更新日志,你会发现这次版本更新的规模确实不小。在 3 月 7 日发布更新后,第二天又迅速推出 2026.3.8-beta.1 和

By Ne0inhk
苹果最贵手机要来了!折叠屏iPhone将于9月亮相;部分高校严禁校内使用OpenClaw;黄仁勋预言:传统软件和APP或将消失 | 极客头条

苹果最贵手机要来了!折叠屏iPhone将于9月亮相;部分高校严禁校内使用OpenClaw;黄仁勋预言:传统软件和APP或将消失 | 极客头条

「极客头条」—— 技术人员的新闻圈! ZEEKLOG 的读者朋友们好,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。(投稿或寻求报道:[email protected]) 整理 | 郑丽媛 出品 | ZEEKLOG(ID:ZEEKLOGnews) 一分钟速览新闻点! * 多所高校要求警惕 OpenClaw 安全风险,部分严禁校内使用 * 荣耀 CEO 李健:荣耀机器人全栈自研,将聚焦消费市场 * 马化腾凌晨 2 点发声:还有一批龙虾系产品陆续赶来 * 前快手语言大模型中心负责人张富峥,已加入智源人工智能研究院,负责 LLM 方向 * 最新全球 AI 应用百强榜发布,豆包/DeepSeek/千问上榜 * 苹果折叠 iPhone 将于九月亮相,融合 iPhone 与 iPad 体验

By Ne0inhk
不止“996”!曝硅谷AI创业圈「极限工作制」:每天16小时、凌晨3点下班、周末也在写代码

不止“996”!曝硅谷AI创业圈「极限工作制」:每天16小时、凌晨3点下班、周末也在写代码

编译 | 郑丽媛 出品 | ZEEKLOG(ID:ZEEKLOGnews) “如果你周日去旧金山的咖啡馆,会发现几乎每个人都在工作。” 这是 AI 创业公司 Mythril 联合创始人 Sanju Lokuhitige 最近最直观的感受。去年 11 月,他特地搬到旧金山,只为了更接近 AI 创业浪潮的中心。但很快,他也被卷入了这股浪潮带来的另一面——一种越来越极端的工作文化。 Lokuhitige 坦言,他现在几乎每天工作 12 小时,每周 7 天。除了每周少数几场刻意安排的社交活动(主要是为了和创业者们建立联系),其余时间几乎都在写代码、做产品。 “有时候我整整一天都在编程,”他说,“我基本没有什么工作与生活的平衡。”而这样的生活,在如今的 AI 创业圈里并不算罕见。 旧金山 AI 创业圈的真实日常 一位在旧金山一家 AI

By Ne0inhk