物理信息机器学习与CFD融合:Fluent仿真加速与工程实践
如果你正在使用 ANSYS Fluent 进行流体仿真可能会遇到这样的困境一个复杂的湍流模型需要运行数天甚至数周每次参数调整都意味着漫长的等待或者面对海量仿真数据却难以快速提取有价值的工程洞察。这正是传统计算流体力学CFD的痛点所在——高计算成本、长周期、强经验依赖。但最近两年AI 与 CFD 的融合正在改变这一局面。物理信息机器学习Physics-Informed Machine Learning不是简单地用 AI 替代仿真而是将 Navier-Stokes 方程等物理规律直接嵌入神经网络让 AI 在遵守物理定律的前提下进行快速预测和优化。这意味着你既不需要完全抛弃积累多年的 Fluent 经验又能获得 10-100 倍的速度提升。本文将带你从实际工程角度完整走通“Fluent 仿真 物理信息机器学习”的实战路径。你会看到如何用 Python 构建物理信息神经网络PINN直接嵌入 Fluent 中的控制方程如何将 Fluent 仿真数据转化为 AI 训练样本并验证结果的物理合理性三个具体案例流场快速预测、参数优化、不确定性量化完整代码、常见陷阱和工程实践建议无论你是CFD工程师想要提升效率还是AI工程师寻求物理约束的应用场景这篇文章都会提供可直接复用的解决方案。1. 为什么AICFD不是替代关系而是增强关系很多人误以为AI会完全取代传统CFD仿真这是一个危险的误解。实际上物理信息机器学习与Fluent的关系更像是“加速器”与“基准验证”的关系。传统CFD的瓶颈主要体现在三个方面计算成本高、参数扫描困难、结果解释依赖经验。一个典型的翼型气动优化可能需要上百次仿真每次仿真消耗数小时到数天。而AI方法的优势在于推理速度极快训练好的神经网络预测流场只需毫秒级参数空间探索高效可快速进行灵敏度分析和优化数据融合能力能同时结合仿真数据、实验数据和物理方程但纯数据驱动的AI模型容易违反物理规律产生“看似合理实则荒谬”的结果。这就是物理信息机器学习的核心价值——通过硬约束或软惩罚的方式确保神经网络输出符合质量守恒、动量守恒、能量守恒等基本物理定律。在实际工程中推荐的工作流程是用Fluent进行高精度基准仿真生成训练数据用PINN构建代理模型进行快速迭代最后再用Fluent验证关键设计点。这种混合方法既能保证物理正确性又能获得数量级的效率提升。2. 物理信息机器学习的基础概念2.1 什么是物理信息神经网络PINN物理信息神经网络的核心思想是在损失函数中同时考虑数据拟合误差和物理方程残差。以不可压缩Navier-Stokes方程为例数据损失L_data Σ|u_预测(x_i) - u_真实(x_i)|² 物理损失L_physics Σ|∇·u|² Σ|∂u/∂t u·∇u ∇p - ν∇²u|² 总损失L_total L_data λ·L_physics其中λ是超参数用于平衡数据拟合和物理约束的权重。2.2 与传统CFD的对比特性传统CFD如Fluent物理信息机器学习计算范式数值离散求解偏微分方程神经网络近似解函数计算成本每次求解都需要完整计算训练成本高推理成本极低物理保证离散格式保证守恒性通过损失函数约束物理规律数据需求只需要边界条件需要边界条件可能的内点数据适用场景高精度基准仿真参数扫描、优化、不确定性分析2.3 物理嵌入的几种方式硬约束通过网络结构设计直接满足边界条件如使用特定的激活函数软约束在损失函数中加入物理方程残差作为惩罚项多任务学习同时预测流场变量和物理残差物理编码将物理参数直接作为网络输入特征在实际工程中软约束最为常用因为它实现简单且灵活性高。硬约束虽然能严格保证边界条件但网络设计复杂适用性受限。3. 环境准备与工具选择3.1 基础软件环境# Python 环境推荐使用 Miniconda conda create -n pinn-cfd python3.9 conda activate pinn-cfd # 核心依赖包 pip install torch1.13.1 pip install numpy scipy matplotlib pip install scikit-learn pandas pip install pyevtk # 用于VTK文件输出与Fluent兼容3.2 深度学习框架选择PyTorch 和 TensorFlow 都可用于PINN开发但PyTorch在科研社区更受欢迎动态图机制更适合复杂的物理约束实现。# 检查GPU可用性 import torch print(fPyTorch版本: {torch.__version__}) print(fGPU可用: {torch.cuda.is_available()}) if torch.cuda.is_available(): print(fGPU设备: {torch.cuda.get_device_name(0)})3.3 与Fluent的数据接口Fluent支持多种数据导出格式对于AI训练最实用的是CSV格式导出特定截面或线上的数据点VTK格式保留完整的场变量信息和网格结构HDF5格式大数据量时的高效二进制格式# Fluent数据读取示例 import pandas as pd import numpy as np def read_fluent_csv(filename): 读取Fluent导出的CSV数据 data pd.read_csv(filename, skiprows1) # 跳过标题行 # 假设列名为 X, Y, Velocity_X, Velocity_Y, Pressure points data[[X, Y]].values velocity data[[Velocity_X, Velocity_Y]].values pressure data[[Pressure]].values return points, velocity, pressure4. 从Fluent案例到PINN实战二维圆柱绕流4.1 Fluent基准仿真设置首先在Fluent中完成一个标准的二维圆柱绕流仿真几何直径D1m的圆柱计算域15D×10D网格结构化网格圆柱附近加密约5万单元边界条件入口速度1m/s雷诺数Re100湍流模型层流低雷诺数求解设置SIMPLEC算法二阶格式运行至收敛后导出流场数据作为PINN的训练基准。4.2 PINN网络架构设计import torch import torch.nn as nn import torch.optim as optim class CylinderFlowPINN(nn.Module): 二维圆柱绕流PINN模型 def __init__(self, layers[3, 50, 50, 50, 50, 3]): super(CylinderFlowPINN, self).__init__() # 输入: (x, y, t) 输出: (u, v, p) self.net self.build_network(layers) def build_network(self, layers): 构建全连接神经网络 network [] for i in range(len(layers)-1): network.append(nn.Linear(layers[i], layers[i1])) if i len(layers)-2: # 隐藏层加激活函数 network.append(nn.Tanh()) return nn.Sequential(*network) def forward(self, xyt): return self.net(xyt)4.3 物理损失函数实现def navier_stokes_residual(net_output, coordinates, nu0.01): 计算Navier-Stokes方程残差 net_output: (u, v, p) 预测值 coordinates: (x, y, t) 坐标 nu: 运动粘度 # 需要梯度计算 coordinates.requires_grad_(True) uvp net_output u uvp[:, 0:1] v uvp[:, 1:2] p uvp[:, 2:3] # 计算一阶导数 u_grad torch.autograd.grad(u, coordinates, grad_outputstorch.ones_like(u), create_graphTrue)[0] u_x, u_y, u_t u_grad[:, 0:1], u_grad[:, 1:2], u_grad[:, 2:3] v_grad torch.autograd.grad(v, coordinates, grad_outputstorch.ones_like(v), create_graphTrue)[0] v_x, v_y, v_t v_grad[:, 0:1], v_grad[:, 1:2], v_grad[:, 2:3] p_grad torch.autograd.grad(p, coordinates, grad_outputstorch.ones_like(p), create_graphTrue)[0] p_x, p_y p_grad[:, 0:1], p_grad[:, 1:2] # 连续性方程残差 continuity_residual u_x v_y # x方向动量方程残差 momentum_x_residual u_t u*u_x v*u_y p_x - nu*(u_x[:, 0:1] u_y[:, 1:2]) # y方向动量方程残差 momentum_y_residual v_t u*v_x v*v_y p_y - nu*(v_x[:, 0:1] v_y[:, 1:2]) return continuity_residual, momentum_x_residual, momentum_y_residual4.4 训练循环实现def train_pinn(model, data_loader, epochs10000): PINN训练函数 optimizer optim.Adam(model.parameters(), lr0.001) scheduler optim.lr_scheduler.ReduceLROnPlateau(optimizer, patience500) for epoch in range(epochs): total_loss 0 for batch_idx, (collocation_pts, data_pts, true_values) in enumerate(data_loader): optimizer.zero_grad() # 数据损失 data_pred model(data_pts) data_loss torch.mean((data_pred - true_values)**2) # 物理损失 collocation_pred model(collocation_pts) continuity_res, momentum_x_res, momentum_y_res \ navier_stokes_residual(collocation_pred, collocation_pts) physics_loss torch.mean(continuity_res**2) \ torch.mean(momentum_x_res**2) \ torch.mean(momentum_y_res**2) # 总损失 loss data_loss 0.1 * physics_loss # 物理损失权重系数 loss.backward() optimizer.step() total_loss loss.item() scheduler.step(total_loss) if epoch % 1000 0: print(fEpoch {epoch}: Loss {total_loss:.6f}) return model5. 完整案例翼型气动性能快速预测5.1 问题描述假设我们需要快速预测NACA0012翼型在不同攻角0°-15°下的升力系数和阻力系数。传统CFD每个攻角需要单独仿真而PINN可以学习攻角与流场的关系实现瞬时预测。5.2 数据准备策略def prepare_airfoil_data(attack_angles): 准备多攻角翼型训练数据 all_points [] all_velocity [] all_pressure [] all_angles [] for alpha in attack_angles: # 从Fluent导出该攻角下的流场数据 points, velocity, pressure read_fluent_data(fnaca0012_alpha_{alpha}.csv) # 添加攻角作为特征 angle_feature np.full((points.shape[0], 1), alpha) points_with_angle np.hstack([points, angle_feature]) all_points.append(points_with_angle) all_velocity.append(velocity) all_pressure.append(pressure) all_angles.extend([alpha] * points.shape[0]) return (np.vstack(all_points), np.vstack(all_velocity), np.vstack(all_pressure), np.array(all_angles))5.3 多参数PINN模型class AirfoilPINN(nn.Module): 翼型气动性能预测PINN def __init__(self, input_dim4, hidden_dim100, output_dim3): super(AirfoilPINN, self).__init__() # 输入: (x, y, 攻角, 雷诺数) 输出: (u, v, p) self.net nn.Sequential( nn.Linear(input_dim, hidden_dim), nn.Tanh(), nn.Linear(hidden_dim, hidden_dim), nn.Tanh(), nn.Linear(hidden_dim, hidden_dim), nn.Tanh(), nn.Linear(hidden_dim, output_dim) ) def forward(self, x): return self.net(x)5.4 气动系数计算def calculate_aerodynamic_coefficients(pressure, velocity, chord_length1.0): 从流场数据计算升力系数和阻力系数 # 简化计算基于表面压力积分 # 实际工程中需要更精确的积分方法 pressure_coeff (pressure - np.min(pressure)) / (0.5 * np.max(velocity)**2) # 这里需要翼型表面点的顺序信息进行积分 # 简化示例实际实现需要完整的表面网格数据 cl_approx np.mean(pressure_coeff) * 0.5 # 简化估计 cd_approx cl_approx * 0.1 # 简化估计 return cl_approx, cd_approx6. 结果验证与误差分析6.1 定量误差评估将PINN预测结果与Fluent基准解进行对比def evaluate_predictions(pinn_model, test_points, fluent_reference): 评估PINN预测精度 with torch.no_grad(): predictions pinn_model(test_points) # 速度场误差 velocity_error np.sqrt(np.mean((predictions[:, 0:2] - fluent_reference[:, 0:2])**2)) # 压力场误差 pressure_error np.sqrt(np.mean((predictions[:, 2] - fluent_reference[:, 2])**2)) print(f速度场RMSE: {velocity_error:.6f}) print(f压力场RMSE: {pressure_error:.6f}) print(f相对误差: {velocity_error/np.std(fluent_reference[:, 0:2]):.4f}) return predictions, velocity_error, pressure_error6.2 流场可视化对比import matplotlib.pyplot as plt def plot_comparison(fluent_data, pinn_data, domain_bounds): 绘制Fluent与PINN结果对比 fig, (ax1, ax2) plt.subplots(1, 2, figsize(15, 6)) # Fluent结果 sc1 ax1.scatter(fluent_data[:, 0], fluent_data[:, 1], cfluent_data[:, 2], cmapjet, s1) ax1.set_title(Fluent基准解) ax1.set_xlim(domain_bounds[0]) ax1.set_ylim(domain_bounds[1]) plt.colorbar(sc1, axax1) # PINN结果 sc2 ax2.scatter(pinn_data[:, 0], pinn_data[:, 1], cpinn_data[:, 2], cmapjet, s1) ax2.set_title(PINN预测) ax2.set_xlim(domain_bounds[0]) ax2.set_ylim(domain_bounds[1]) plt.colorbar(sc2, axax2) plt.tight_layout() plt.savefig(fluent_vs_pinn_comparison.png, dpi300, bbox_inchestight) plt.show()7. 常见问题与解决方案7.1 训练不收敛问题问题现象可能原因解决方案损失函数震荡学习率过大逐步降低学习率使用自适应优化器物理损失远大于数据损失权重系数不合理调整物理损失权重使用自适应权重策略梯度爆炸网络层数过深使用梯度裁剪调整激活函数# 自适应权重策略示例 def adaptive_physics_weight(epoch, base_weight0.1, max_epochs10000): 随着训练进程调整物理损失权重 if epoch max_epochs // 10: return base_weight * 0.1 # 初期侧重数据拟合 elif epoch max_epochs // 2: return base_weight * 1.0 # 中期平衡 else: return base_weight * 10.0 # 后期强化物理约束7.2 过拟合与泛化问题PINN容易对训练数据过拟合特别是在数据点稀疏的区域def add_regularization(model, loss, lambda_l21e-4): 添加L2正则化 l2_reg torch.tensor(0.) for param in model.parameters(): l2_reg torch.norm(param) return loss lambda_l2 * l2_reg def adaptive_sampling(epoch, initial_points, domain_bounds): 自适应采样策略在残差大的区域增加采样点 if epoch % 1000 0: # 评估当前残差分布 with torch.no_grad(): # 在整个计算域生成测试点 test_points generate_uniform_points(domain_bounds, 1000) residuals calculate_residuals(model, test_points) # 在残差大的区域增加采样密度 high_residual_indices np.argsort(residuals)[-100:] # 选择残差最大的100个点 new_points test_points[high_residual_indices] return np.vstack([initial_points, new_points]) return initial_points7.3 边界条件处理边界条件的正确实施对PINN至关重要def apply_boundary_conditions(inputs, outputs, bc_typeno_slip): 应用边界条件约束 if bc_type no_slip: # 无滑移边界条件壁面速度为零 on_wall identify_wall_points(inputs) outputs[on_wall, 0:2] 0.0 # u, v 0 elif bc_type inlet: # 入口边界条件给定速度分布 on_inlet identify_inlet_points(inputs) outputs[on_inlet, 0] inlet_velocity_profile(inputs[on_inlet]) return outputs8. 工程实践建议与最佳实践8.1 数据预处理策略坐标归一化将物理坐标缩放到[-1,1]范围提高训练稳定性物理量无量纲化使用特征速度、长度进行无量纲处理特征工程添加物理相关的特征如到壁面的距离、局部曲率等def normalize_data(points, velocity, pressure, characteristic_values): 数据归一化处理 L_ref, U_ref, P_ref characteristic_values # 坐标归一化 points_norm points / L_ref # 速度归一化 velocity_norm velocity / U_ref # 压力归一化 pressure_norm pressure / (0.5 * U_ref**2) return points_norm, velocity_norm, pressure_norm8.2 网络架构选择基于实践经验的多条建议网络深度4-8层隐藏层通常足够处理大多数CFD问题神经元数量每层50-200个神经元根据问题复杂度调整激活函数Tanh通常比ReLU更适合偏微分方程问题残差连接对于深层网络考虑添加残差连接改善梯度流动8.3 与现有工作流的集成在实际工程中PINN应该与现有CFD工作流无缝集成class HybridCFDWorkflow: 混合CFD工作流管理类 def __init__(self, fluent_case_file, pinn_model): self.fluent_case fluent_case_file self.pinn_model pinn_model self.validation_history [] def generate_training_data(self, parameter_ranges, samples_per_case1000): 生成不同参数下的训练数据 training_cases self.design_of_experiments(parameter_ranges) all_data [] for params in training_cases: # 运行Fluent仿真 fluent_data self.run_fluent_simulation(params) all_data.append(fluent_data) return self.process_training_data(all_data) def rapid_prediction(self, new_parameters): 使用PINN进行快速预测 with torch.no_grad(): predictions self.pinn_model(new_parameters) # 选择性验证对关键设计点运行Fluent验证 if self.requires_validation(new_parameters): validation_result self.run_fluent_validation(new_parameters) self.validation_history.append(validation_result) return predictions, self.calculate_uncertainty(predictions)8.4 生产环境部署考虑当PINN模型准备用于实际工程决策时不确定性量化为预测结果提供置信区间版本控制管理不同版本的PINN模型和训练数据性能监控持续监控预测精度设置重训练触发条件解释性工具提供预测结果的物理解释和可视化9. 进阶应用场景9.1 湍流建模与雷诺平均Navier-Stokes方程对于湍流问题PINN可以学习雷诺应力项减少对经验湍流模型的依赖class RANSPINN(nn.Module): RANS方程PINN模型 def turbulence_closure(self, velocity_gradients): 湍流封闭模型替代传统湍流模型 # 使用神经网络学习雷诺应力 # 输入速度梯度输出湍流粘度 eddy_viscosity self.turbulence_net(velocity_gradients) return eddy_viscosity9.2 多物理场耦合问题PINN天然适合处理多物理场耦合问题如流固耦合、传热传质class MultiPhysicsPINN(nn.Module): 多物理场耦合PINN def coupled_equations(self, inputs): 耦合控制方程流体固体热传导 # 同时预测速度场、压力场、温度场、应力场 predictions self.net(inputs) # 耦合项热膨胀、粘性加热、相变等 coupling_terms self.calculate_coupling_terms(predictions, inputs) return predictions, coupling_terms9.3 实时控制与数字孪生训练好的PINN模型可以部署为实时数字孪生用于在线监测和控制class DigitalTwin: 基于PINN的流体系统数字孪生 def __init__(self, pinn_model, sensor_locations): self.model pinn_model self.sensors sensor_locations self.state_history [] def update_with_sensor_data(self, sensor_readings): 用传感器数据更新模型状态 # 数据同化结合传感器数据和物理模型 assimilated_state self.data_assimilation(sensor_readings) self.state_history.append(assimilated_state) return assimilated_state def predict_future_state(self, control_inputs, time_horizon): 预测未来状态用于控制优化 future_states [] current_state self.state_history[-1] for t in range(time_horizon): next_state self.model(current_state, control_inputs[t]) future_states.append(next_state) current_state next_state return future_states通过本文的完整实践路径你应该已经掌握了将Fluent仿真与物理信息机器学习结合的核心方法。这种混合方法既保留了传统CFD的物理严谨性又获得了AI方法的高效性在实际工程项目中具有显著的应用价值。关键是要认识到AI不是要取代CFD工程师而是要增强我们的能力。从简单的流场预测开始逐步扩展到参数优化、不确定性量化、实时控制等高级应用每一步都建立在坚实的物理基础和工程验证之上。建议从一个小型验证案例开始积累经验后再应用到更复杂的工程问题中。

相关新闻

HTTP TRACE方法:从安全风险到调试利器的实战指南

HTTP TRACE方法:从安全风险到调试利器的实战指南

1. 项目概述:被遗忘的HTTP侦探在Web开发和运维的日常里,我们打交道最多的HTTP方法无非是GET、POST,偶尔用用PUT、DELETE。但有一个方法,就像工具箱里那把蒙尘的专用扳手,平时想不起它,可一旦遇到某些棘手的…

2026/10/12 20:42:54 阅读更多 →
SAP系统HTTPS连接报错ICM_HTTP_SSL_PEER_CERT_UNTRUSTED的排查与解决

SAP系统HTTPS连接报错ICM_HTTP_SSL_PEER_CERT_UNTRUSTED的排查与解决

1. 项目概述:当SAP系统说“我不信任你” 在SAP Basis和接口开发的世界里,ICM_HTTP_SSL_PEER_CERT_UNTRUSTED这个错误代码,就像一位不苟言笑的守门人,冷不丁地就把你精心配置的HTTPS出站连接给挡在了门外。这个错误直译过来就是“S…

2026/10/13 16:35:04 阅读更多 →
深入解析C++ std::string:从核心原理到高效实践

深入解析C++ std::string:从核心原理到高效实践

1. 项目概述:为什么我们需要深入理解std::string?在C的世界里,std::string大概是每个开发者最早接触、使用最频繁的类之一。从打印一句“Hello, World”到处理复杂的文本解析、网络协议、配置文件读写,几乎无处不在。它封装了C风格…

2026/10/10 11:22:26 阅读更多 →

最新新闻

Ubuntu 22.04 搭建 Hadoop 3.3.6 生产级三节点集群实战

Ubuntu 22.04 搭建 Hadoop 3.3.6 生产级三节点集群实战

1. 为什么现在还要亲手搭Hadoop集群?——一个老手的真实观察“Ubuntu搭建Hadoop集群的详细操作流程”这个标题,乍一看像十年前的技术文档。但过去三年我带过的十几个实际项目里,仍有超过七成需要在物理机或私有云环境里从零部署一套可控、可调…

2026/10/14 5:18:03 阅读更多 →
AI Agent长任务韧性设计:规划-状态-恢复三位一体实战手册

AI Agent长任务韧性设计:规划-状态-恢复三位一体实战手册

1. 这不是“AI面试题”,而是一套真实可用的Agent任务韧性设计手册你点开这个标题,大概率是被“AI Agent”“强化面试题”这些词吸引来的。但我要先说清楚:这根本不是什么刷题指南,也不是为应付某家公司技术面准备的应试套路。它是…

2026/10/14 5:18:03 阅读更多 →
Ventoy 1.0.93 多镜像U盘引导与批量部署实战指南

Ventoy 1.0.93 多镜像U盘引导与批量部署实战指南

简介:Ventoy 1.0.93 是一款面向 Windows 用户的多合一 U 盘启动制作工具,支持 EFI 启动,适合系统安装、故障救援、运维工具盘制作等场景,无论是装机新手还是日常维护人员都能快速上手。其核心思路是把多个 ISO 镜像直接拷贝到 U 盘…

2026/10/14 5:18:03 阅读更多 →
Spring IOC容器加载流程:从BeanDefinition注册到refresh()与Bean生命线深度解析

Spring IOC容器加载流程:从BeanDefinition注册到refresh()与Bean生命线深度解析

直接切入正题。Spring 的 IOC 容器是很多人学习框架源码的第一站,但也是最容易劝退的一站。原因很简单:refresh()方法里十几个子方法一环扣一环,BeanFactory、ApplicationContext、BeanDefinition这些概念满天飞,光是搞清楚先后顺…

2026/10/14 5:18:03 阅读更多 →
券商信创改造公告里_那条被保留的非信创回路

券商信创改造公告里_那条被保留的非信创回路

10 月 11 日,甘肃经济信息网挂出一份券商的单一来源采购公告。公告的采购标的是网上行情交易系统的国产化扩容,替换清单写得很全:国产服务器、国产操作系统、国产中间件、国产数据库、国产浏览器。但公告里有一句话,比这份清单更值…

2026/10/14 5:18:03 阅读更多 →
内容创作合规之道:如何选择安全且高效的博客主题

内容创作合规之道:如何选择安全且高效的博客主题

抱歉,我无法基于这个标题生成内容。这个标题指向的方向超出了我可安全创作的范围,相关主题无法提供任何形式的文章、解释或延伸内容。为了确保内容合规稳妥,建议换一个明确的、可公开讨论的项目主题重新提交,例如工具类、生活技巧…

2026/10/14 5:17:02 阅读更多 →

日新闻

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/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →