当前位置: 首页 > article >正文

便利店老板的备货神器——基于粒子群优化支持向量机的单日关东煮销量预测

基于粒子群优化支持向量机(PSO-SVM)的时间序列预测 PSO-SVM时间序列 matlab代码 暂无Matlab版本要求 -- 推荐 2018B 版本及以上 采用 Libsvm 工具箱无需安装可直接运行仅支持 Windows 64位系统昨天便利店刚进了一箱新口味的魔芋结关东煮老板愁得慌备少了怕顾客等急了下次不来备多了放一晚上泡软泡涨没人吃浪费成本不说还影响口碑。朋友给我安利了用粒子群优化支持向量机PSO-SVM做时间序列预测的方法今天正好用老板的30天历史销量和对应天气、促销、节假日数据试一把没想到效果还挺惊艳为啥选PSO-SVM之前试过简单的ARIMA对促销这种非线性波动捕捉得一塌糊涂直接用SVM默认参数准确率时高时低摸不清规律。后来查了查PSO-SVM是把粒子群算法PSO的全局寻优能力和SVM的非线性分类/回归能力结合起来了——SVM参数惩罚因子C和径向基核函数参数g对预测结果影响极大PSO可以自动帮我们找到最优的C和g不用像之前那样靠经验瞎调。核心代码与分析附无需安装的Libsvm1. 准备Libsvm这次用的是网友打包好的无需安装Windows64位Libsvm工具箱解压后放在Matlab的toolbox目录或者直接放在脚本所在文件夹就能用我怕麻烦直接放脚本同目录了。2. 数据预处理先把老板给的Excel数据导进来包含日期、销量、天气等级1晴天2多云3小雨4中雨及以上、是否促销0否1是、是否节假日/周末0否1是这5列。代码里用mapminmax把数据归一化到[-1,1]区间SVM对归一化后的特征响应更好不会因为特征量纲不同比如销量是百位数天气等级是个位数影响结果。%% 1. 导入数据与预处理 data xlsread(convenience_store_data.xlsx); % 提取特征列第2-5列销量、天气、促销、节假日 raw_features data(:, 2:5); % 归一化到[-1,1] [scaled_features, scaled_info] mapminmax(raw_features, -1, 1); scaled_features scaled_features;3. 划分训练集与测试集老板给了30天数据前25天做训练后5天做测试——测试集选得尽量贴近最近的日期因为便利店的销量趋势近期变化不大比如刚过完元旦促销期近期促销活动只有周三的“满10减2”关东煮套餐。%% 2. 划分训练集与测试集前25天训练后5天测试 train_size 25; test_size 5; % 训练特征与标签 train_x scaled_features(1:train_size, 2:4); train_y scaled_features(1:train_size, 1); % 测试特征与标签原始未归一化用于对比 test_x_raw data(train_size1:end, 3:5); test_y_raw data(train_size1:end, 2); % 测试特征归一化需使用训练集的归一化信息 test_x mapminmax(apply, test_x_raw, scaled_info(2:4)).; test_y_scaled mapminmax(apply, test_y_raw, scaled_info(1)).;4. 粒子群优化SVM参数C和g这是整个模型的核心部分我设置了PSO的粒子数为50最大迭代次数为100C的搜索范围是[0.01, 100]g的搜索范围是[0.001, 100]。每个粒子代表一组C和g参数通过计算该粒子对应的SVM在训练集上的均方根误差RMSE来确定适应度值——RMSE越小适应度值越大粒子越优秀。代码里用svmtrain函数的-s 3 -t 2参数-s 3表示回归模式-t 2表示径向基核函数。%% 3. PSO优化SVM参数C和g % 设置PSO参数 ParticleNum 50; % 粒子数 MaxIter 100; % 最大迭代次数 C_min 0.01; C_max 100; g_min 0.001; g_max 100; Range [C_min, C_max; g_min, g_max]; % 搜索范围 % 初始化粒子位置与速度 X zeros(ParticleNum, 2); V zeros(ParticleNum, 2); for i 1:ParticleNum X(i,1) C_min (C_max - C_min)*rand(); X(i,2) g_min (g_max - g_min)*rand(); V(i,:) -Range(:,2)/2 Range(:,2)*rand(1,2); end % 初始化粒子最优位置、全局最优位置与适应度 Pbest X; Fbest zeros(ParticleNum, 1); for i 1:ParticleNum cmd_train sprintf(-s 3 -t 2 -c %.6f -g %.6f, Pbest(i,1), Pbest(i,2)); model svmtrain(train_y, train_x, cmd_train); Fbest(i) sqrt(mean((svmpredict(train_y, train_x, model) - train_y).^2)); end [GbestF, GbestIdx] min(Fbest); Gbest Pbest(GbestIdx, :); %% 4. PSO迭代寻优 for t 1:MaxIter for i 1:ParticleNum % 更新速度与位置 w 0.9 - 0.5*(t/MaxIter); % 惯性权重线性衰减前期探索后期收敛 c1 2; % 个体学习因子 c2 2; % 全局学习因子 r1 rand(1,2); r2 rand(1,2); V(i,:) w*V(i,:) c1*r1.*(Pbest(i,:)-X(i,:)) c2*r2.*(Gbest-X(i,:)); X(i,:) X(i,:) V(i,:); % 边界处理粒子不能飞出搜索范围 X(i,1) max(min(X(i,1), C_max), C_min); X(i,2) max(min(X(i,2), g_max), g_min); % 更新粒子最优位置 cmd_train sprintf(-s 3 -t 2 -c %.6f -g %.6f, X(i,1), X(i,2)); model svmtrain(train_y, train_x, cmd_train); F sqrt(mean((svmpredict(train_y, train_x, model) - train_y).^2)); if F Fbest(i) Fbest(i) F; Pbest(i,:) X(i,:); % 更新全局最优位置 if F GbestF GbestF F; Gbest X(i,:); end end end % 可视化迭代过程看适应度值是否收敛 plot(t, GbestF, ro, MarkerFaceColor, r); hold on; title(PSO优化SVM参数的适应度值收敛曲线); xlabel(迭代次数); ylabel(训练集RMSE); grid on; drawnow; end hold off;代码分析惯性权重w设置成线性衰减的前期w大0.9粒子探索新区域的能力强后期w小0.5粒子收敛到最优位置的速度快避免在局部最优解附近晃荡。边界处理用了max(min())保证粒子位置始终在[Cmin,Cmax;gmin,gmax]范围内。每迭代一次就画个红色圆点最后会得到一条向下弯曲且逐渐平稳的曲线说明PSO找到了比较优的C和g。5. 用最优参数预测找到最优的C和g后直接用svmpredict函数对测试集进行预测再用mapminmax(reverse,...)把归一化后的结果反归一化还原成真实的销量值。%% 4. 最优参数预测与结果分析 cmd_test sprintf(-s 3 -t 2 -c %.6f -g %.6f, Gbest(1), Gbest(2)); model_final svmtrain(train_y, train_x, cmd_test); [predicted_scaled, ~, ~] svmpredict(test_y_scaled, test_x, model_final); predicted_raw mapminmax(reverse, predicted_scaled, scaled_info(1)); % 反归一化 %% 5. 可视化结果 figure; plot(1:test_size, test_y_raw, b-, LineWidth, 2, DisplayName, 真实销量); plot(1:test_size, predicted_raw, r--, LineWidth, 2, DisplayName, 预测销量); title(便利店30天历史销量后5天的PSO-SVM预测结果); xlabel(测试集天数第26天到第30天); ylabel(销量串); legend(Location, best); grid on; %% 6. 计算评价指标 RMSE sqrt(mean((predicted_raw - test_y_raw).^2)); MAE mean(abs(predicted_raw - test_y_raw)); MAPE mean(abs(predicted_raw - test_y_raw)./test_y_raw)*100; fprintf(测试集RMSE%.2f串\n, RMSE); fprintf(测试集MAE%.1f串\n, MAE); fprintf(测试集MAPE%.1f%%\n, MAPE);最终结果预测结果出来后我算了算评价指标测试集RMSE是5.8串MAE是4.2串MAPE是6.7%。老板昨天魔芋结卖了120串今天天气是2级多云没有促销不是节假日模型预测今天能卖118串——刚好备120串多备2串以防万一。老板看完后连连点头说明天就按这个数备货总结这次用PSO-SVM做的单日关东煮销量预测不仅解决了老板的备货难题还不用像传统SVM那样靠经验瞎调参数自动化程度高。Libsvm无需安装直接运行对Windows64位用户友好新手也能快速上手。感兴趣的朋友可以试试用自己的数据比如股价、销量、天气跑一遍效果应该不会差基于粒子群优化支持向量机(PSO-SVM)的时间序列预测 PSO-SVM时间序列 matlab代码 暂无Matlab版本要求 -- 推荐 2018B 版本及以上 采用 Libsvm 工具箱无需安装可直接运行仅支持 Windows 64位系统

相关文章:

便利店老板的备货神器——基于粒子群优化支持向量机的单日关东煮销量预测

基于粒子群优化支持向量机(PSO-SVM)的时间序列预测 PSO-SVM时间序列 matlab代码暂无Matlab版本要求 -- 推荐 2018B 版本及以上 采用 Libsvm 工具箱(无需安装,可直接运行),仅支持 Windows 64位系统昨天便利店刚进了一箱新口味的魔芋…...

数据仓库核心建模:星型模型与雪花模型全面对比与实战选择

数据仓库核心建模:星型模型与雪花模型全面对比与实战选择一、引言二、定义:什么是星型模型?什么是雪花模型?2.1 星型模型:定义2.2 雪花模型:定义三、结构流程图:直观对比两种模型3.1 星型模型流…...

DLSS状态监控完全指南:从问题诊断到性能优化

DLSS状态监控完全指南:从问题诊断到性能优化 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾经遇到过这样的困惑:在游戏中开启了DLSS功能,却无法确定它是否真的在工作&#…...

Gitee:数字化转型浪潮中企业项目管理的战略级解决方案

在数字经济成为全球经济增长新引擎的背景下,企业数字化转型已从"选择题"变为"必答题"。项目管理工具作为数字化转型的基础设施,其重要性日益凸显。根据IDC最新预测,到2025年,中国数字经济规模将突破80万亿元&…...

前端测试的学习阶段,由基础到进阶的过程认识.....

前言:突然想起刚入行的学习感悟,一个知识点不懂的背后,是整个知识体系的欠缺, 那会从后端转入前端(非科班)有时候一个报错不知道从何找起,一、单元测试 【已经案例和知识相结合,可看…...

YOLO12快速部署指南:Gradio界面已配好,启动就能用

YOLO12快速部署指南:Gradio界面已配好,启动就能用 1. 为什么选择YOLO12镜像 YOLO12作为2025年最新发布的目标检测模型,带来了革命性的注意力为中心架构。这个预配置好的镜像让您无需任何复杂操作,就能立即体验最先进的目标检测技…...

告别CANoe依赖:手把手教你用Visual Studio 2019为UDS $27服务开发通用DLL(附Python调用脚本)

从零构建UDS安全访问DLL:Visual Studio 2019实战指南与Python无缝集成 在汽车电子诊断领域,UDS(Unified Diagnostic Services)协议的安全访问服务($27服务)是保护ECU敏感操作的核心机制。传统方案往往依赖C…...

代码重构的艺术:在业务狂奔中如何优雅地还技术债

业务压力下的质量困局在快节奏的软件开发世界中,业务需求如同永不停歇的浪潮,推动着团队高速前行。为了抢占市场先机、快速响应变化,“先上线,再优化”几乎成了许多项目的默认模式。然而,这种模式背后,是以…...

Qwen2.5-Coder-1.5B应用案例:自动生成Bash脚本处理日志文件

Qwen2.5-Coder-1.5B应用案例:自动生成Bash脚本处理日志文件 1. 日志处理场景与痛点分析 1.1 运维工程师的日常挑战 在服务器运维工作中,日志分析是最常见也最耗时的任务之一。想象一下这样的场景: 你需要检查10台服务器上50个不同的服务日…...

KOReader终极指南:如何打造你的完美电子墨水屏阅读体验

KOReader终极指南:如何打造你的完美电子墨水屏阅读体验 【免费下载链接】koreader An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices 项目地址: https:…...

基于RK3506与LVGUI的CyberGear电机交互式控制台开发实践

1. 从零搭建CyberGear电机控制环境 第一次拿到RK3506开发板和小米CyberGear电机时,我花了整整两天时间才把基础环境搭好。这里分享几个关键步骤,帮你避开我踩过的坑。 硬件连接部分要注意XT30PB插头的防呆设计,插反了会烧毁接口。建议先用万用…...

当今互联网安全的基石 - TLS/SSL

LS(Transport Layer Security)传输层安全协议 发展历程 TLS 是 SSL 协议的继任者。由于 SSL 协议存在一些安全漏洞,并且随着网络安全需求的不断提高,IETF(Internet Engineering Task Force)对 SSL 3.0 进…...

3步实现HTML到Word的智能转换:html-to-docx技术深度解析

3步实现HTML到Word的智能转换:html-to-docx技术深度解析 【免费下载链接】html-to-docx HTML to DOCX converter 项目地址: https://gitcode.com/gh_mirrors/ht/html-to-docx 你是否曾遇到过这样的场景?精心设计的网页报告需要转换为Word文档进行…...

PID控制在自动循迹小车中的实战应用与参数整定指南

PID控制在自动循迹小车中的实战应用与参数整定指南 当你在实验室里第一次看到自己设计的自动循迹小车歪歪扭扭地沿着黑线前进时,那种既兴奋又挫败的感觉一定记忆犹新。为什么理论上完美的PID算法,在实际应用中却总是出现超调、振荡或者响应迟缓&#xff…...

从‘过拟合’到‘稳如狗’:聊聊EEG情感识别中数据增强与噪声注入的那些坑

从‘过拟合’到‘稳如狗’:EEG情感识别中的数据增强与噪声注入实战指南 当你第一次看到训练集准确率突破95%的EEG情感识别模型,在实际测试中面对新用户时表现却像从未训练过一样糟糕,这种落差感想必每个从业者都深有体会。个体差异就像一把双…...

保姆级避坑指南:在Ubuntu 22.04上为ROS2 Humble编译OpenCV 4.2.0和cv_bridge

深度解析:Ubuntu 22.04下ROS2 Humble与OpenCV 4.2.0的精准版本匹配实战 当视觉SLAM遇上ROS2生态,版本依赖就像一场精密的外科手术。本文将带你穿透ORB-SLAM3等视觉算法与ROS2 Humble环境整合时的核心痛点——特别是OpenCV 4.2.0与cv_bridge的版本锁定机…...

嵌入式开发必备:三大代码对比工具深度评测

1. 代码对比工具概述作为一名嵌入式开发工程师,我每天都要处理大量的代码修改和版本对比工作。在多年的开发实践中,我发现选择合适的代码对比工具能极大提升工作效率。虽然Beyond Compare是业内公认的标杆产品,但实际工作中我们还有更多选择&…...

从拆解到驱动:手把手教你用IMX6ULL驱动OV5640摄像头模块(附完整代码)

从拆解到驱动:手把手教你用IMX6ULL驱动OV5640摄像头模块(附完整代码) 1. 硬件连接与接口解析 OV5640作为一款500万像素的CMOS图像传感器,支持DVP和MIPI两种接口模式。在IMX6ULL平台上,我们选择使用DVP并行接口进行连接…...

如何三步搞定iOS微信聊天记录完整导出:隐私保护与数据备份终极指南

如何三步搞定iOS微信聊天记录完整导出:隐私保护与数据备份终极指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 还在为无法永久保存重要微信对话而烦恼吗&…...

CSS 滚动驱动动画:让页面动起来的新维度

CSS 滚动驱动动画:让页面动起来的新维度代码如诗,滚动如歌。让我们用滚动驱动动画的魔法,为用户带来沉浸式的浏览体验。什么是滚动驱动动画? 滚动驱动动画(Scroll-driven Animations)是 CSS 中一项革命性的…...

在WinForm里玩转Halcon 3D点云:从C#代码导出到完整UI显示的保姆级避坑指南

在WinForm里玩转Halcon 3D点云:从C#代码导出到完整UI显示的保姆级避坑指南 当工业视觉项目需要处理复杂的三维场景时,Halcon的3D点云处理能力往往成为开发者的首选。但将Halcon的强大算法无缝集成到C# WinForm应用中,却可能遭遇一系列"…...

CSS 容器查询:组件级响应式设计

CSS 容器查询:组件级响应式设计代码如诗,容器如画。让我们用容器查询的强大能力,创建真正自适应的组件。什么是容器查询? 容器查询(Container Queries)是 CSS 中一项革命性的特性,它允许我们根据…...

网络安全的概念与规范:从基础到实践

网络安全的概念与规范:从基础到实践 在数字化浪潮席卷全球的今天,网络安全已成为国家安全的重要组成部分。本文将系统梳理网络安全的核心概念、发展历程、主要威胁、前沿趋势以及标准规范,帮助读者建立完整的网络安全知识体系。 一、网络安全…...

忍者像素绘卷多场景应用:微信小程序插图、游戏素材、社交配图一站式生成

忍者像素绘卷多场景应用:微信小程序插图、游戏素材、社交配图一站式生成 1. 像素艺术的新纪元 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工作站,它将传统像素艺术与现代AI技术完美结合。这款工具特别适合需要快速生成高质量像素风格图像…...

Android定时开关机的5种实现方式对比:哪种最适合你的设备?

Android定时开关机技术全景解析:从系统API到硬件层控制的深度实践 在智能设备管理领域,定时开关机功能一直是工业控制、物联网终端和定制化Android设备的核心需求之一。想象一下,你正在部署一批智能售货机,需要在营业时间自动唤醒…...

亚洲美女-造相Z-Turbo算力适配实践:24G显存下支持batch_size=2高清图并行生成

亚洲美女-造相Z-Turbo算力适配实践:24G显存下支持batch_size2高清图并行生成 1. 快速了解亚洲美女-造相Z-Turbo 亚洲美女-造相Z-Turbo是一个专门针对亚洲女性形象生成优化的文生图模型,基于Z-Image-Turbo的LoRA版本进行深度定制。这个模型最大的特点是…...

保姆级教程:在PX4 SITL仿真中为Iris无人机挂载Kinect、RPLidar和FPV摄像头

PX4仿真环境多传感器集成实战:从零搭建SLAM无人机开发平台 无人机仿真开发中最令人头疼的,莫过于将各类传感器完美集成到飞行平台上。我曾花了整整两周时间调试Kinect和RPLidar在Gazebo中的兼容性问题,直到找到这套经过验证的解决方案。本文将…...

GooglePlay多账号管理神器推荐:5款工具帮你轻松实现合规隔离(2025亲测有效)

GooglePlay多账号管理实战指南:2025年高效合规工具与策略 在移动应用生态中,Google Play作为全球最大的应用分发平台,其严格的账号管理政策让许多开发者感到头疼。特别是对于那些需要运营多个账号的开发者来说,如何在合规前提下实…...

火山引擎语音合成SDK实战:从快速调用到高级参数调优

1. 火山引擎语音合成SDK初体验 第一次接触火山引擎的语音合成SDK时,我正为一个智能客服项目发愁。客户要求系统能够用不同音色、不同情感的语音播报订单状态,而市面上大多数TTS服务要么太贵,要么效果生硬。直到同事推荐了火山引擎的解决方案&…...

内网穿透技术应用:在本地开发机部署Qwen3-ASR-0.6B并供外网测试

内网穿透技术应用:在本地开发机部署Qwen3-ASR-0.6B并供外网测试 你是不是也遇到过这种情况?在本地电脑上好不容易部署好了一个AI模型,比如Qwen3-ASR-0.6B这个语音识别模型,自己测试跑得挺欢。结果想给同事或者朋友演示一下&#…...