Python打卡训练营学习记录Day12

基于ESP32的智能厨房控制系统开发 随着智能家居技术的发展,越来越多的家庭开始将传统的厨房设备进行智能化改造,以提高烹饪效率和生活质量。智能厨房控制系统是物联网(IoT)应用的重要组成部分,它将家居设备、传感器和网络结合起来,提供便捷的控制与监测功能,使厨房的烹饪过程更加智能、便捷和安全。基于ESP32的智能厨房控制系统不仅能够实现远程控制和监控,还能实现温度、湿度、烹饪状态的实时反馈,甚至具备智能化的推荐和自动化控制能力。ESP32是一款功能强大、集成度高的嵌入式开发平台,具有Wi-Fi和蓝牙双模通信能力,广泛应用于物联网设备的开发。 阅读详情

 

遗传算法

就像在一个大“家族”里,每个成员都有自己独特的“本领”(解决问题的方案)。一开始,大家的“本领”有好有坏。然后,我们挑出那些“本领”比较强的成员,让他们“生孩子”(产生新的方案)。在这个过程中,孩子会继承父母的一些“本领”,但也可能会有一些新的“变化”(变异)。经过很多代后,家族成员的“本领”就会越来越厉害,我们就能找到最厉害的“本领”来解决问题啦。

粒子群算法

想象有一群小虫子在一个大房间里找一颗糖。每只小虫子都知道自己离糖最近的一次位置,也知道所有小虫子里离糖最近的那个位置。然后,小虫子们就根据这两个信息来决定自己下一步往哪里走,走多快。它们不断地调整自己的方向和速度,最后就能找到糖在哪里啦,这个糖的位置就是问题的最优解。

模拟退火算法

把解决问题当成是让一块烧热的铁慢慢变冷。刚开始的时候,铁很烫,它的分子可以到处乱动,就像在尝试各种不同的解决问题的方法。随着温度慢慢降低,分子的活动就越来越小,最后铁冷却下来,达到一个最稳定的状态,这个状态就是我们要找的最好的解决问题的方法。在冷却过程中,即使有时候铁会先进入一个不太好的状态(比如有点歪歪扭扭),但因为温度的变化,它还是有机会调整,最终变成一个最好的形状(最优解)。

下面详细说明粒子群算法:

粒子群算法概述

粒子群算法(Particle Swarm Optimization, PSO)是一种基于群体智能的优化算法,由 Kennedy 和 Eberhart 在 1995 年提出。该算法的灵感来源于鸟群或鱼群的群体行为,通过模拟粒子在搜索空间中的飞行来寻找最优解。

基本原理

在粒子群算法中,每个粒子代表一个潜在的解,粒子在搜索空间中移动,其移动的方向和速度由自身的经验和群体的经验决定。每个粒子有两个重要的属性:位置和速度。

  • 位置:表示粒子在搜索空间中的坐标,对应着一个可能的解。
  • 速度:决定了粒子在搜索空间中的移动方向和距离。

每个粒子会记住自己曾经到达过的最优位置(个体最优位置,pbest),同时整个群体也会记住所有粒子中曾经到达过的最优位置(全局最优位置,gbest)。在每一次迭代中,粒子会根据自身的pbest和群体的gbest来调整自己的速度和位置。

算法步骤

  1. 初始化:随机初始化一群粒子的位置和速度。
  2. 计算适应度值:根据目标函数计算每个粒子的适应度值。
  3. 更新个体最优位置和全局最优位置:对于每个粒子,如果其当前位置的适应度值优于其个体最优位置的适应度值,则更新个体最优位置;如果某个粒子的当前位置的适应度值优于全局最优位置的适应度值,则更新全局最优位置。
  4. 更新粒子的速度和位置:根据以下公式更新粒子的速度和位置:
    • 速度更新公式:vi​(t+1)=w×vi​(t)+c1​×r1​×(pbesti​−xi​(t))+c2​×r2​×(gbest−xi​(t))
    • 位置更新公式:xi​(t+1)=xi​(t)+vi​(t+1)
      其中,vi​(t) 是粒子 i 在第 t 次迭代的速度,xi​(t) 是粒子 i 在第 t 次迭代的位置,w 是惯性权重,c1​ 和 c2​ 是学习因子,r1​ 和 r2​ 是 [0,1] 之间的随机数。
  5. 终止条件判断:如果满足终止条件(如达到最大迭代次数或适应度值达到阈值),则停止迭代,输出全局最优位置;否则,返回步骤 2。

Python 代码实现

下面是一个使用 Python 实现粒子群算法的示例代码,用于求解函数 f(x)=x2 的最小值:

import numpy as np

# 目标函数
def objective_function(x):
    return x ** 2

# 粒子群算法
def pso(objective_function, dim=1, num_particles=30, max_iter=100, w=0.5, c1=1.5, c2=1.5):
    # 初始化粒子的位置和速度
    particles_position = np.random.uniform(-10, 10, (num_particles, dim))
    particles_velocity = np.random.uniform(-1, 1, (num_particles, dim))

    # 初始化个体最优位置和全局最优位置
    pbest_position = particles_position.copy()
    pbest_fitness = np.array([objective_function(p) for p in particles_position])
    gbest_index = np.argmin(pbest_fitness)
    gbest_position = pbest_position[gbest_index]
    gbest_fitness = pbest_fitness[gbest_index]

    # 迭代更新
    for _ in range(max_iter):
        for i in range(num_particles):
            # 更新速度
            r1, r2 = np.random.rand(2)
            particles_velocity[i] = (w * particles_velocity[i] +
                                     c1 * r1 * (pbest_position[i] - particles_position[i]) +
                                     c2 * r2 * (gbest_position - particles_position[i]))
            # 更新位置
            particles_position[i] += particles_velocity[i]

            # 计算新的适应度值
            fitness = objective_function(particles_position[i])

            # 更新个体最优位置
            if fitness < pbest_fitness[i]:
                pbest_fitness[i] = fitness
                pbest_position[i] = particles_position[i]

                # 更新全局最优位置
                if fitness < gbest_fitness:
                    gbest_fitness = fitness
                    gbest_position = particles_position[i]

    return gbest_position, gbest_fitness

# 运行粒子群算法
best_position, best_fitness = pso(objective_function)
print(f"最优位置: {best_position}")
print(f"最优适应度值: {best_fitness}")    

 

代码解释

  1. 目标函数:objective_function 定义了要优化的目标函数,这里是 \(f(x)=x^{2}\)。
  2. 粒子群算法:pso 函数实现了粒子群算法的核心逻辑,包括初始化粒子的位置和速度、更新个体最优位置和全局最优位置、更新粒子的速度和位置等步骤。
  3. 运行算法:调用 pso 函数并输出最优位置和最优适应度值。@浙大疏锦行
Xilinx DDR3 MIG IP核设计--汇总导航 快速上手Xilinx DDR3 IP核----汇总篇 阅读详情

相关推荐

服务器被攻击植入挖矿病毒,CPU占用高问题排查处理(.systemd-service.sh)

客户服务器遭攻击,部署的应用服务经常性被停止,服务器CPU占用居高不下,top查看如下: 可以看到第一个bash任务,占用cpu近400%,非正常的应用程序和脚本任务,多半是被植入了木马信息。 查看该进程的符号连接,发现已经是被删除的状态 /usr/bin/-bash (deleted),无法查看其启动程序的信息 查看定时任务:cat /etc/crontab,发现都是正常的应用程序定时脚本 又用 crontab -l 查看了一下,发现了异常定时任务如下,同top里的异常任务一致...

gottst0113的博客 2118

python打卡训练营学习记录Day12

这三种启发式算法各有特点,适用于不同类型的问题。遗传算法和粒子群算法适合全局优化问题,而模拟退火算法则在解决组合优化问题上表现良好。通过调整参数,可以进一步优化这些算法的性能。@浙大疏锦行。

m0_74839150的博客 356

从jieba分词到BERT-wwm——中文自然语言处理(NLP)基础分享系列(12)

今天是本系列的最后一期,完整代码呈现Huggingface transformers平台上微调BERT-wwm-ext的过程方法。

weixin_49518391的博客 3762

python打卡训练营打卡记录day22

核心影响特征Sex(性别)是决定生存概率的最关键因素,女性更易生存;Fare(票价)高、Age(年龄)小也显著促进生存。客舱等级矛盾Pclass高(舱位等级低,如 3 级舱)反而可能抑制生存,与常识中 “高舱位更易生存” 看似矛盾,需结合数据具体分布进一步验证(如高舱位是否有更多特殊情况)。家庭关系影响弱SibSp(兄弟姐妹 / 配偶数)、Parch(父母 / 子女数)对生存影响较小,仅在特定值时表现出一定规律。@浙大疏锦行。

yorushika_的博客 1542

MaxENT生态位模型实战:从数据准备到论文发表的完整指南

本文提供MaxENT生态位模型从数据准备到论文发表的完整实战指南,涵盖物种分布数据处理、环境变量筛选、参数优化及结果可视化等关键步骤。特别介绍如何通过R语言进行高级建模优化,提升模型AUC值,并分享海洋生物专题研究中的数据处理技巧。适合生态学研究者快速掌握这一强大的物种分布预测工具,产出高质量研究成果。

tensor9flow的博客 301

别再被网站识别成机器人了!用Python的undetected_chromedriver+Selenium实现无痕自动化

本文详细介绍了如何利用Python的undetected_chromedriver和Selenium实现无痕自动化,突破现代网站的反爬系统。通过修正浏览器指纹、模拟人类操作行为,并结合实战案例,帮助开发者构建难以被识别的自动化脚本,适用于电商监控等场景。

weixin_30367169的博客 249

python打卡训练营打卡记录day34

知识点回归CPU性能的查看看架构代际核心数线程数GPU性能的查看看显存看级别看架构代际GPU训练的方法数据和模型移动到GPUdevice上类的call方法为什么定义前向传播时可以直接写作self.fc1(x)作业:复习今天的内容,在巩固下代码。思考下为什么会出现这个问题。检查CUDA是否可用。

yorushika_的博客 1449

【FPGA教程案例49】控制案例1——基于FPGA的PID控制器verilog实现

PID控制器产生于1915年,PID控制律的概念最早是由LYAPIMOV提出的,到目前为止,PID控制器以及改进的PID控制器在工业控制领域里最为常见。PID控制器(比例-积分-微分控制器),由比例单元 P、积分单元 I 和微分单元 D 组成。通过Kp,Ki和Kd三个参数的设定。PID控制器主要适用于基本线性和动态特性不随时间变化的系统。图1为PID控制器的基本结构框图。PID控制器以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。...

FPGA/MATLAB学习教程/源码/项目合作开发 4525

Python打卡训练营学习记录Day25

相信大家在借助ai写代码的时候,经常会遇到try-except的异常处理模块,这是因为大部分大模型在后训练阶段都是经过强化学习训练的,为了确保结果的正确运行,只有采取 try-except的异常处理模块才能提高模型运行成功的概率。但是我们日常写代码的时候,大概率不会采取这些写法。所以我们要适应ai的写法。这也是今天专题的由来。

FanfanPyt的博客 823

MTK(camera篇)Camera整体点亮

本文介绍了在MTK平台上添加新Camera Sensor的驱动开发流程。主要内容包括:1)MTK Camera采用HAL3架构,驱动层主要负责sensor电源控制和寄存器操作;2)详细说明了添加新sensor需要在多个文件中进行的修改,包括设备树配置、内核头文件、驱动列表、电源序列等;3)特别指出需要配置I2C地址表,并导入tuning文件和metadata文件以完善ISP处理流程。文章提供了完整的文件修改清单,涵盖了从内核层到HAL层的完整开发过程,为MTK平台Camera Sensor驱动开发提供了具体

weixin_49303682的博客 360

ParaView :在paraview创建渲染视图

ParaView :在paraview创建渲染视图

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1300

python打卡训练营打卡记录day35

损失曲线特征:从1.0平稳下降至接近0,无震荡分析符合预期:ReLU激活+SGD优化器的标准收敛行为20000轮训练充分,最终损失接近零(测试准确率100%)典型成功训练案例,模型容量与数据复杂度匹配。

yorushika_的博客 1567

MacBook M芯片第二篇:Homebrew安装

Homebrew是MacOS/Linux平台的软件包管理工具,提供便捷的安装、卸载、更新等功能。

码农魏轩 893

Python打卡训练营Day12

作业:今天以自由探索的思路为主,尝试检索资料、视频、文档,用尽可能简短但是清晰的语言看是否能说清楚这三种算法每种算法的实现逻辑,帮助更深入的理解。一、遗传算法(Genetic Algorithm, GA)核心逻辑:模仿生物进化中的"优胜劣汰"机制,通过种群迭代进化寻找最优解。类比:假设你有一群不同基因的鸟(初始种群),目标是找到飞得最高的鸟。通过不断让优秀的鸟交配(交叉)、偶尔基因突变(变异),后代逐渐进化出更强的飞行能力。实现步骤:1. 初始化种群。

2401_89104459的博客 1509

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Python打卡训练营学习记录Day34

上述是在cpu的情况下训练,(即使安装了cuda,但是没有使用cuda),我们借这个机会简单介绍下cpu的性能差异。# 这是Windows专用的库,Linux和MacOS不支持,其他系统自行询问大模型# 我想查看一下CPU的型号和核心数import wmiprint(f"CPU 型号: {processor.Name}")print(f"核心数: {processor.NumberOfCores}")

FanfanPyt的博客 998

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

python打卡训练营打卡记录day51

加载预训练ResNet18# 构建特征提取器,在每个残差块阶段后插入CBAM模块resnet.layer1, # 输出通道64CBAM(64), # CBAM模块(64通道)resnet.layer2, # 输出通道128CBAM(128), # CBAM模块(128通道)resnet.layer3, # 输出通道256CBAM(256), # CBAM模块(256通道)resnet.layer4, # 输出通道512CBAM(512) # CBAM模块(512通道)

yorushika_的博客 1140

python打卡训练营打卡记录day53

原始类别分布从加载数据的输出可知,心脏病数据集共 303 条记录,其中患病(target=1)样本 165 条,健康(target=0)样本 138 条 ,不平衡比例约为0.84:1,属于轻度不平衡数据集,这也是引入 GAN 做数据增强的初衷,试图补充少数类(健康样本相对患病样本是少数类 )数据,优化模型对少数类的识别能力。合成数据分布。

yorushika_的博客 1262

python打卡训练营打卡记录day16

NumPy 数组的维度 (Dimension) 或称为 轴 (Axis) 的概念,与我们日常理解的维度非常相似。直观判断: 数组的维度层数通常可以通过打印输出时**中括号 `[]` 的嵌套层数**来初步确定:一层 [ ]: 一维 (1D) 数组。两层 [ ]: 二维 (2D) 数组。三层 [ ]: 三维 (3D) 数组,依此类推。

yorushika_的博客 1588

Python打卡训练营学习记录Day36

仔细回顾一下神经网络到目前的内容,没跟上进度的同学补一下进度。

FanfanPyt的博客 1095

【Python训练营打卡】day02 @浙大疏锦行

题目: 定义两个字符串变量,str1 赋值为 “Hello”,str2 赋值为 “Python”。将这两个字符串拼接起来(中间加一个空格),并将结果存储在变量 greeting 中;计算 greeting 字符串的长度,存储在变量 length 中;获取 greeting 字符串的第一个字符,存储在变量 first_char 中。然后,使用 f-string 分三行打印出类似以下格式的信息:拼接结果: Hello Python字符串长度: 12第一个字符: H第二个字符:e最后一个字符是:n。

2301_77865880的博客 712

python打卡训练营打卡记录day26

编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。编写一个名为 calculate_average 的函数,该函数可以接收任意数量的数字作为参数(引入可变位置参数 (*args)),并返回它们的平均值。编写一个名为 print_user_info 的函数,该函数接收一个必需的参数 user_id,以及任意数量的额外用户信息(作为关键字参数)。函数的参数类型:位置参数、默认参数、不定参数。user_id 是一个必需的位置参数。

m0_74839150的博客 1510

python打卡训练营打卡记录day40

知识点回顾:彩色和灰度图片测试和训练的规范写法:封装在函数中展平操作:除第一个维度batchsize外全部展平dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropout作业:仔细学习下测试和训练代码的逻辑,这是基础,这个代码框架后续会一直沿用,后续的重点慢慢就是转向模型定义阶段了。昨天我们介绍了图像数据的格式以及模型定义的过程,发现和之前结构化数据的略有不同,主要差异体现在2处:1. 模型定义的时候需要展平图像。

yorushika_的博客 1163

python打卡训练营打卡记录day44

复合缩放(宽度、深度、分辨率均衡调整)在 ImageNet 上学习的全局特征(如大尺寸图像的语义信息)迁移到 CIFAR10 时,需更多 epoch 适配小尺寸(图 2 中准确率上升平缓),但轻量化设计(如 MBConv 模块)减少了过拟合风险。过拟合极低(训练 - 测试差距 < 1%),参数量少(训练速度快 30%+),适合资源受限环境或需要泛化性的任务(如小数据 + 实时推理)。测试准确率略高(+0.77%),训练拟合能力强,适合对精度要求高、允许轻度过拟合的场景(如 CIFAR10 竞赛级优化)。

yorushika_的博客 1221

python打卡训练营学习记录Day11

贝叶斯优化(2种实现逻辑,以及如何避开必须用交叉验证的问题)随机搜索(简单介绍,非重点 实战中很少用到,可以不了解)time库的计时模块,方便后人查看代码运行时长。

m0_74839150的博客 1099

Python训练营打卡DAY12

DAY12未来几天都是五一假期,适当降低内容难度和工作量,祝大家节日快乐!超参数调整专题2三种启发式算法的示例代码:遗传算法、粒子群算法、退火算法学习优化算法的思路(避免浪费无效时间)作业:今天以自由探索的思路为主,尝试检索资料、视频、文档,用尽可能简短但是清晰的语言看是否能说清楚这三种算法每种算法的实现逻辑,帮助更深入的理解。个人理解:这些算法都是网格搜索的优化版本。

2502_91094213的博客 824

【Python训练营打卡】day03 @浙大疏锦行

列表的基础操作。

2301_77865880的博客 882

Python打卡训练营学习记录Day33

定义一个简单的全连接神经网络模型,包含一个输入层、一个隐藏层和一个输出层。定义层数+定义前向传播顺序class MLP(nn.Module): # 定义一个多层感知机(MLP)模型,继承父类nn.Moduledef __init__(self): # 初始化函数super(MLP, self).__init__() # 调用父类的初始化函数# 前三行是八股文,后面的是自定义的self.fc1 = nn.Linear(4, 10) # 输入层到隐藏层。

FanfanPyt的博客 613
上一篇: Python打卡训练营学习记录Day11
下一篇: Python打卡训练营学习记录Day13
FanfanPyt
博客等级 码龄2年 82粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值