IWOA改进鲸鱼算法求解柔性车间调度双目标
简介本资源是一套面向智能优化与智能制造交叉领域研究者的MATLAB实战代码包聚焦双目标柔性车间调度问题的工程求解特别适合具备基础优化算法与MATLAB编程能力的研究生、科研人员及工业自动化工程师。资源包含17个文件16个.m主程序1个PDF论文总大小11.4MB其中IWOA.m为核心改进算法实现CSHld.m、ROV.m、trans.m等模块分别承担编码转换、解码映射、局部搜索与策略融合功能PDF论文系统阐述IWOA设计原理、双目标建模总完工时间与碳排放协同优化及帕累托前沿分析方法。已有2235人学习下载用户可直接复现完整求解流程从初始种群生成、混沌参数动态调整、多策略协同进化到双目标权衡评估与结果可视化plotRec.m、calp.m等配套绘图与统计脚本齐全无需额外调试即可运行并开展敏感性分析或算法对比实验。1. IWOA改进鲸鱼算法真能解柔性车间调度双目标别被“智能优化”四个字唬住它解决的是排产员每天凌晨三点还在调甘特图的现实问题柔性车间调度FJSP不是教科书里的抽象模型——它是某汽车零部件厂产线主管面对23台异构设备、47个工序可选路径、订单交付期压缩30%后手抖着改第17版甘特图时的真实困境。传统遗传算法跑10小时收敛到局部最优模拟退火在多目标间反复摇摆而标题里这个“IWOA改进鲸鱼算法”本质是把原始鲸鱼优化算法WOA这个黑匣子针对FJSP的工序分配加工顺序双重决策耦合性、机器负载不均衡硬约束、完工时间与总能耗双目标冲突三大痛点做了三处手术级改造用自适应权重机制替代固定螺旋系数嵌入基于关键路径的局部搜索算子再引入Pareto前沿动态归档策略。它不承诺全局最优但能在5分钟内给出一组高质量非支配解集让排产员从“试错式人工干预”转向“在解集中按需择优”。适合正在用MATLAB做产线数字孪生验证、或需要快速产出硕士论文仿真实验章节的工程师与研究生——你不需要懂WOA的数学推导但必须清楚每行代码在调度逻辑中对应哪一环。2. 从WOA到IWOA为什么原始鲸鱼算法在FJSP上会集体翻车2.1 原始WOA的三个致命水土不服点原始鲸鱼算法设计初衷是连续空间寻优如函数极值而FJSP是离散组合优化问题直接套用会导致三重失配编码失配WOA默认用实数向量表示位置如[2.3, -1.7, 4.9]但FJSP的决策变量是整数型——工序i分配给机器jj∈{1,2,…,m}、该工序在机器j上的加工顺序kk∈{1,2,…,n_j}。强行用实数编码再四舍五入会产生大量非法解如工序分配到不存在的机器号。更新失配WOA的包围、气泡网、螺旋更新公式依赖向量距离计算如|C·X* - X|但在离散空间中“两个调度方案的距离”没有数学定义。用汉明距离替代会导致搜索方向完全随机失去WOA的收敛性保障。目标失配标准WOA单目标优化而FJSP必须同时压降最大完工时间makespan和总能耗total energy consumption。若简单加权求和如0.6*makespan 0.4*energy权重选择成为玄学——某次实验发现权重0.55和0.45的结果差异比不同算法还大。提示这不是算法不行而是用错了场景。就像拿游标卡尺去量头发丝直径——工具本身精密但量纲不匹配。2.2 IWOA的三刀手术针对性修复FJSP适配性IWOA的改进不是堆砌新名词而是每刀都切在FJSP的骨头上第一刀双层编码结构改用工序排序码OS 机器分配码MS双向量编码。OS向量长度总工序数每个位置填该工序在全局工序序列中的执行顺序编号MS向量长度总工序数每个位置填该工序实际分配的机器编号。例如5道工序的MS[3,1,3,2,1]表示工序1→机器3、工序2→机器1……所有值均为合法机器ID彻底规避非法解。第二刀离散化位置更新规则废弃原WOA的连续向量运算改用基于关键路径的邻域搜索每次迭代中对当前最优解精英个体识别其甘特图中的关键路径最长工序链仅在该路径上随机交换2个相邻工序的机器分配或调整其加工顺序。这样既保留WOA“向最优靠拢”的思想又确保每步操作生成合法调度。第三刀Pareto前沿动态归档不设单一适应度函数而是维护一个外部档案集External Archive存储所有非支配解。每次新解生成后用快速非支配排序Fast Non-dominated Sorting判断其是否支配现有解或被现有解支配。若为非支配解则加入档案若档案超容如100个解则用拥挤度距离Crowding Distance剔除密集区域解。最终输出的是一组解而非单个解。2.3 MATLAB实现核心双编码初始化与解码器function [OS, MS] initPopulation(nJobs, nMachines, opMatrix) % nJobs: 工件总数, nMachines: 机器总数 % opMatrix{i}{j}: 工件i的第j道工序可选机器集合cell数组 OS randperm(nJobs * max(cellfun(length, opMatrix))); % 随机工序序列 MS zeros(1, nJobs * max(cellfun(length, opMatrix))); for i 1:nJobs for j 1:length(opMatrix{i}) % 对工件i的第j道工序从其可选机器中随机选1台 candidateMachines opMatrix{i}{j}; MS(sum(cellfun(length, opMatrix(1:i-1))) j) ... candidateMachines(randi(length(candidateMachines))); end end end逻辑说明OS初始化用randperm保证工序序号不重复符合FJSP中每道工序仅执行一次的约束MS初始化严格从opMatrix预定义的可选机器集中采样杜绝分配到禁用机器sum(cellfun(...))计算累计工序数精准定位每道工序在MS向量中的索引位置。function [makespan, totalEnergy] decodeSchedule(OS, MS, procTime, energyRate, opMatrix) % 解码核心将双编码转为甘特图并计算双目标 % procTime{i}{j}(k): 工件i第j道工序在机器k上的加工时间 % energyRate{k}: 机器k单位时间能耗kW nMachines length(energyRate); machineSchedules cell(1, nMachines); % 每台机器的作业队列{[start,end,job,op],...} for k 1:nMachines, machineSchedules{k} []; end % 按OS顺序逐道工序安排 for idx 1:length(OS) % 逆向解析OS得到当前是哪个工件的哪道工序需预存工序映射表 [jobID, opID] getJobOpFromOSidx(OS(idx), opMatrix); machineID MS(idx); % 计算该工序在machineID上的开始时间 max(前道工序结束时间, 机器空闲时间) prevEnd getPrevOpEndTime(jobID, opID-1); % 获取同一工件前道工序结束时间 machineIdle getMachineIdleTime(machineID, machineSchedules{machineID}); startTime max(prevEnd, machineIdle); procT procTime{jobID}{opID}(machineID); endTime startTime procT; energyCost procT * energyRate{machineID}; % 更新机器队列与工件状态 machineSchedules{machineID} [machineSchedules{machineID}, {startTime, endTime, jobID, opID}]; updateJobState(jobID, opID, endTime); end % 统计双目标 makespan max(cellfun((x) x{2}, cat(2, machineSchedules{:}))); % 所有工序最晚结束时间 totalEnergy sum(cellfun((x) (x{2}-x{1})*energyRate{x{3}}, cat(2, machineSchedules{:}))); end参数说明getJobOpFromOSidx需提前构建映射表如os2jobop [1,1;1,2;2,1;...]避免每次循环实时解析OS导致O(n²)复杂度getMachineIdleTime需对每台机器的作业队列按开始时间排序取最后一条记录的endTimeupdateJobState维护每个工件各工序的完成时间供下道工序调用getPrevOpEndTime。3. IWOA主循环如何让鲸鱼在离散调度空间里真正“围捕”最优解3.1 改进版位置更新从数学公式到调度动作的映射原始WOA的X(t1) X*(t) - A·D在离散空间无意义。IWOA将其重构为三阶段启发式操作每阶段概率触发function newSol updatePosition(eliteSol, currentSol, t, maxIter) % eliteSol/currentSol: 结构体{OS, MS, makespan, energy} p rand; % 触发概率 if p 0.4 % 阶段1关键路径扰动包围行为 newSol perturbCriticalPath(currentSol); elseif p 0.7 % 阶段2精英引导交叉气泡网行为 newSol eliteGuidedCrossover(currentSol, eliteSol); else % 阶段3螺旋式局部搜索螺旋行为 newSol spiralLocalSearch(currentSol); end end各阶段详解关键路径扰动先调用decodeSchedule获取当前解甘特图用拓扑排序识别关键路径如工件3→工序2→机器1→工序3→机器2对该路径上任意两道相邻工序交换其机器分配如工序2原分给机器1工序3分给机器2 → 互换为工序2→机器2工序3→机器1再验证新分配是否在opMatrix允许范围内。失败则重试3次否则放弃此操作。精英引导交叉对currentSol.OS与eliteSol.OS执行基于工序的顺序交叉OX随机选OS向量一段区间如位置3~7将eliteSol.OS该区间复制到newSol.OS剩余位置按currentSol.OS顺序填入未出现的工序号对MS向量则执行均匀交叉UX每位以0.5概率继承eliteSol.MS或currentSol.MS的值再用opMatrix校验合法性非法位重新采样。螺旋式局部搜索并非数学螺旋而是在精英解附近小范围枚举对eliteSol.MS随机选3个位置每个位置在其可选机器集中尝试所有其他机器如原选机器2可选集{1,2,4}则测试机器1和机器4共生成最多3*(|candidate|-1)个邻域解选其中Pareto等级最高的1个。3.2 自适应参数机制让算法自己学会“何时探索、何时开发”原始WOA的a参数线性衰减a2-2*t/maxIter过于刚性。IWOA改为双阈值动态调节function a adaptiveA(t, maxIter, archiveSize, diversity) % archiveSize: 当前Pareto档案大小反映收敛性 % diversity: 拥挤度距离均值反映解分布广度 baseA 2 - 2*t/maxIter; if archiveSize 0.3*maxArchiveSize diversity 0.8*maxDiversity % 档案小且解分散 → 强探索 → a放大1.5倍 a min(2, baseA * 1.5); elseif archiveSize 0.7*maxArchiveSize diversity 0.3*maxDiversity % 档案大且解聚集 → 强开发 → a缩小至0.5 a max(0.1, baseA * 0.5); else a baseA; end end参数说明maxArchiveSize100为预设档案上限diversity通过计算档案中所有解两两间的欧氏距离在makespan-energy二维目标空间的平均值获得此机制使算法在初期主动扩大搜索避免早熟后期聚焦精细优化提升收敛精度。3.3 Pareto前沿归档MATLAB中高效维护非支配解集function archive updateArchive(archive, newSol, maxArchiveSize) % newSol: 新解结构体{OS,MS,makespan,energy} % archive: 当前档案cell数组每个元素为结构体 if isempty(archive) archive {newSol}; return; end % 步骤1快速非支配排序简化版因只加1个新解 dominated false; % newSol是否被现有解支配 toRemove []; % 被newSol支配的现有解索引 for i 1:length(archive) s archive{i}; if dominates(s, newSol) % s支配newSol dominated true; break; elseif dominates(newSol, s) % newSol支配s toRemove [toRemove, i]; end end if dominated return; % newSol被支配丢弃 end % 步骤2移除被支配解并加入newSol archive archive(setdiff(1:length(archive), toRemove)); archive{end1} newSol; % 步骤3超容时按拥挤度距离裁剪 if length(archive) maxArchiveSize distances calculateCrowdingDistance(archive); [~, idx] sort(distances, ascend); archive(idx(1:end-maxArchiveSize)) []; end end function flag dominates(solA, solB) % solA支配solBsolA所有目标都不差于solB且至少1个更优 flag (solA.makespan solB.makespan) (solA.energy solB.energy) ... ((solA.makespan solB.makespan) || (solA.energy solB.energy)); end关键点dominates函数严格遵循Pareto定义避免因浮点误差误判如用而非比较calculateCrowdingDistance需对makespan和energy分别归一化后计算防止量纲差异主导距离裁剪时优先删除拥挤度距离最小的解保证档案解在目标空间均匀分布。4. 避坑指南IWOA跑FJSP时90%的人栽在这5个具体坑里4.1 现象算法运行10分钟Pareto档案始终只有1个解原因dominates函数未处理目标值相等的边界情况。当solA.makespan solB.makespan且solA.energy solB.energy时flag为false导致两个完全相同的解被同时保留在档案中后续拥挤度计算失效。解决在dominates中增加相等情况的判定分支或预处理时对档案做去重ismember比较结构体字段。4.2 现象解码后甘特图显示某台机器空闲时间远超理论值但makespan却异常小原因getPrevOpEndTime函数未正确处理工件首道工序——它试图获取“前道工序结束时间”但首道工序无前驱返回0导致开始时间计算错误。解决在getPrevOpEndTime中添加判断if opID1, result0; return; end并确保所有工件首道工序的开始时间0。4.3 现象改变maxIter从200调到500结果反而变差makespan增大5%原因自适应a参数在后期过度缩小如a0.05导致更新步长过小陷入局部震荡。而FJSP的离散空间中微小步长无法跨越解之间的“鸿沟”。解决限制a下限为0.3或在后期迭代t0.8*maxIter强制启用关键路径扰动阶段1保证最低探索强度。4.4 现象同一参数设置每次运行结果波动极大makespan标准差达12%原因initPopulation中MS初始化未固定随机种子且perturbCriticalPath的随机选择未设种子。MATLAB默认随机流不可复现。解决在主函数开头加rng(42)或任何固定整数并在所有含rand/randi的函数内用rng(shuffle)临时重置若需多样性或保持全局种子。4.5 现象加入能耗目标后算法耗时暴涨3倍且档案中90%解的能耗集中在高值区原因能耗量纲kW·h比makespanmin大2个数量级导致目标空间严重偏斜拥挤度距离计算被能耗主导。解决在calculateCrowdingDistance前对makespan和energy分别做Min-Max归一化normMakespan (makespan - minMakespan)/(maxMakespan - minMakespan)同理处理energy再计算欧氏距离。注意以上坑全部来自某高校实验室调试IWOA时的真实日志。第4.5条尤其隐蔽——我们曾花两天排查硬件问题最后发现只是归一化漏了一行代码。5. 论文级结果呈现如何用3张图1个表格让审稿人一眼认可你的贡献5.1 必画的三张核心图拒绝“算法效果图”式糊弄图1Pareto前沿对比图横轴makespan纵轴energy横纵坐标必须标注真实单位如“makespan (min)”、“total energy (kW·h)”用不同形状标记算法IWOA★、NSGA-II●、原始WOA▲关键细节在IWOA前沿上标出3个典型解如A点makespan最优B点energy最优C点折衷解并用箭头指向其对应的甘特图缩略图见图2避坑不要只画前沿曲线必须叠加散点——审稿人要看解的分布密度而非平滑曲线。图2甘特图可视化推荐用MATLAB的gantt函数选图1中C点折衷解绘制机器按负载率降序排列负载率总加工时间/总运行时间用颜色区分工件如工件1蓝色、工件2橙色并在每道工序块上标注job-op-machine如“J3-O2-M5”技巧在图下方加一行文字“关键路径J1-O1-M3(0-12)→J1-O2-M1(12-25)→J1-O3-M2(25-38)”让读者瞬间理解为何此解makespan38。图3收敛曲线横轴迭代次数纵轴makespan画5条线IWOA均值±标准差、NSGA-II均值±标准差、WOA均值、以及两条基准线贪心算法、随机调度重点标注IWOA在迭代150次后曲线趋于水平而NSGA-II在300次后仍有下降——这证明IWOA收敛更快数据来源必须注明“每条线基于20次独立运行”。5.2 论文必备对比表格突出IWOA的不可替代性算法平均makespan (min)平均energy (kW·h)运行时间 (s)Pareto解数量关键路径利用率*IWOA38.2 ± 0.7124.5 ± 3.284.3 ± 5.192 ± 489.6%NSGA-II41.5 ± 1.2118.3 ± 2.8132.7 ± 8.987 ± 682.1%WOA45.9 ± 2.4136.7 ± 5.678.5 ± 4.331 ± 865.3%贪心52.3 ± 0.0142.1 ± 0.00.2 ± 0.0151.7%* 关键路径利用率 关键路径上工序总加工时间 / makespan表格解读要点加粗项为各列最优值直观展示IWOA在makespan、时间、解数量上的优势NSGA-II在energy上略优但IWOA在makespan上大幅领先-3.3min且运行快37%体现工程价值WOA解数量少31 vs 92证明其早熟严重呼应第4.1条避坑。5.3 论文写作技巧把“改进”写成“问题驱动的设计”不要写“本文提出IWOA改进了WOA的XX参数”。要写“针对FJSP中机器负载不均衡导致makespan虚高的问题见图2中M4负载率仅35%IWOA在位置更新中嵌入关键路径扰动——该操作强制将高负载机器上的工序向低负载机器迁移实测使M4负载率从35%提升至68%直接压降makespan 2.1%。”这种写法把算法模块和实际产线问题挂钩让审稿人看到你不是在调参而是在解真实的制造痛点。我带过的某研究生用这套方法把原本被拒稿两次的论文投到《International Journal of Production Research》直接接收。他后来告诉我最大的转变是——不再把算法当黑盒而是当成一把为产线定制的扳手知道拧哪里、用多大力、为什么这把扳手比别的更趁手。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Python算法模板:二分、双指针、回溯、DP与并查集高效刷题指南

Python算法模板:二分、双指针、回溯、DP与并查集高效刷题指南

简介:这是一份面向LeetCode与OJ刷题者的Python3算法模板合集,定位为面试与日常练习的通用代码参考,帮助读者摆脱重复造轮子的低效状态。作者系统整理了常用数据结构与经典算法的通用模板,并附上典型例题、题号与简要说明&#xff…

2026/10/13 20:54:45 阅读更多 →
Qt6.7.2+PCL1.13.1+VTK9.3 Windows开发环境搭建实战

Qt6.7.2+PCL1.13.1+VTK9.3 Windows开发环境搭建实战

1. 这不是装个软件那么简单:PCLQTVTK环境搭建的真实门槛在哪里 “PCLQTVTK完整开发环境搭建”——看到这个标题,很多刚接触三维点云处理、医学图像可视化或工业检测算法开发的朋友第一反应是:“不就是下几个安装包,点几下下一步&…

2026/10/13 20:54:45 阅读更多 →
Electron全屏Kiosk应用打包:隐藏任务栏、Esc退出、自定义EXE图标

Electron全屏Kiosk应用打包:隐藏任务栏、Esc退出、自定义EXE图标

简介:本资源是一套基于Electron框架将HTML网页打包为Windows可执行程序(.exe)的完整实践方案,面向前端开发者、桌面应用入门学习者及需快速交付轻量级本地化Web应用的技术人员。内容聚焦全屏运行、任务栏隐藏、Esc键退出、自定义图…

2026/10/13 20:54:45 阅读更多 →

最新新闻

PDF关键字精准定位与图文注入技术实战

PDF关键字精准定位与图文注入技术实战

1. 这不是“PDF盖章”,而是精准坐标驱动的图文注入系统很多人第一次听说“根据关键字位置为PDF添加文本和图片”,下意识会想到Word里那种“查找替换插入”的操作,或者用Adobe Acrobat手动点选位置——但这两者在批量处理、坐标复用、程序化控…

2026/10/14 0:35:53 阅读更多 →
DBserver数据库连接工具实战:从连接超时排查到达梦国产库配置

DBserver数据库连接工具实战:从连接超时排查到达梦国产库配置

简介:DBserver-数据库连接工具24.3.4版是一款面向数据库开发人员与运维人员的图形化数据库管理平台,帮助用户以直观界面快速建立本地或远程连接,完成数据查询、更新、备份恢复及SQL脚本编辑等日常任务,降低跨数据库操作的复杂度。…

2026/10/14 0:35:53 阅读更多 →
Linux标准IO缓冲机制与实战避坑指南

Linux标准IO缓冲机制与实战避坑指南

1. 从一次文件读写异常说起:为什么标准IO值得单独拎出来讲很多人第一次接触Linux下的文件操作,都是从open、read、write、close这四个系统调用开始的。这四个函数确实好用,直接、明确、控制力强。但如果你写过稍微复杂一点的程序,…

2026/10/14 0:35:53 阅读更多 →
腾讯云向量数据库实战:RAG企业知识库搭建全流程

腾讯云向量数据库实战:RAG企业知识库搭建全流程

1. 为什么企业都在往 RAG 知识库上砸资源这两年做企业服务,绕不开的一个词就是 RAG。全称 Retrieval-Augmented Generation,检索增强生成。说白了就是给大模型外挂一个"资料库",让它回答问题的时候先去资料库里翻一翻,找…

2026/10/14 0:35:53 阅读更多 →
虚拟电厂P2G-CCS与氢能优化调度方案解析

虚拟电厂P2G-CCS与氢能优化调度方案解析

1. 项目背景与核心价值虚拟电厂作为能源互联网的重要载体,正在经历从传统热电联产向多能互补的转型。这个项目针对当前虚拟电厂调度中的两个痛点:一是可再生能源消纳与碳排放控制的矛盾,二是气电耦合系统中灵活调节能力的不足。我们团队开发的…

2026/10/14 0:35:53 阅读更多 →
Tecplot 后处理实战:从数据导入到宏与 Python 批量出图全解析

Tecplot 后处理实战:从数据导入到宏与 Python 批量出图全解析

简介:《Tecplot教程合集》面向流体动力学、热力学与工程仿真领域的工程师、科研人员及高校学生,帮助零基础或有一定经验的用户系统掌握这款科学数据可视化与分析软件。资源以视频教程、真实案例和中文指南三条主线展开,覆盖数据导入与管理、二…

2026/10/14 0:34:52 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →