python的工業(yè)過程控制場景模擬第五十篇:水力閘門液位流量數(shù)據(jù),擬合水位—泄流量數(shù)學(xué)模型。
水力閘門水位—泄流量數(shù)學(xué)模型擬合系統(tǒng) —— 基于 OOP 的曲線回歸實(shí)戰(zhàn)水利樞紐的中控室里操作員盯著屏幕上密密麻麻的閘門開度和水位數(shù)據(jù)手動對照著一張十幾年前印的水位—流量關(guān)系曲線圖來估算下泄流量。這張圖還是按當(dāng)時(shí)的河床斷面畫的這些年泥沙淤積、閘底板磨損曲線早就偏了。但沒人重新測過——因?yàn)閭鹘y(tǒng)率定方法需要水文站的人帶著ADCP聲學(xué)多普勒流速剖面儀來現(xiàn)場測流一條船一天最多測幾條垂線湊夠一組完整曲線要花好幾周。其實(shí)DCS里積累了幾年連續(xù)的閘門開度、上下游水位、功率/電流數(shù)據(jù)這些數(shù)據(jù)本身就藏著那條曲線的答案——只是沒人把它們挖出來?!?哈爾濱工程大學(xué)《工業(yè)過程控制》課程核心思想延伸一、實(shí)際應(yīng)用場景描述在水利樞紐、城市防洪排澇、灌區(qū)渠首等場景中水力閘門是最核心的調(diào)節(jié)設(shè)備。其控制目標(biāo)通常是維持上游水位恒定防洪/蓄水或按調(diào)度指令精確下泄流量生態(tài)補(bǔ)水/發(fā)電。典型的閘門監(jiān)控系統(tǒng)架構(gòu)如下┌──────────────────────────────────────────────┐│ 閘門計(jì)算機(jī)監(jiān)控系統(tǒng) (PLC/DCS) ││ ││ 超聲波/雷達(dá)液位計(jì) ──→ 上游水位 H_up (m) ││ 超聲波/雷達(dá)液位計(jì) ──→ 下游水位 H_down (m) ││ 開度傳感器 ──────→ 閘門開度 H_gate (m) ││ 流量計(jì)(可選) ─────→ 實(shí)際流量 Q_meas (m3/s) ││ ││ ┌──────────────────────────────────────────┐ ││ │ 水位—流量數(shù)學(xué)模型 │ ││ │ Q f(H_up, H_down, H_gate, ...) │ ││ │ │ ││ │ 已知: 上游水位 閘門開度 → 推算下泄流量 │ ││ │ 或: 目標(biāo)流量 → 反算所需閘門開度 │ ││ └──────────────────────────────────────────┘ ││ ││ 輸出 ──→ 液壓啟閉機(jī) ──→ 閘門開度調(diào)節(jié) │└──────────────────────────────────────────────┘常見的水位—流量關(guān)系模型模型類型 公式形式 適用場景堰流公式 Q C \cdot L \cdot H^{3/2} 閘門完全開啟自由溢流孔口出流 Q \mu \cdot A \cdot \sqrt{2gH} 閘門局部開啟淹沒出流實(shí)用堰經(jīng)驗(yàn)式 Q K \cdot (H - H_0)^n 寬頂堰/實(shí)用堰多變量多項(xiàng)式 Q a_0 a_1H a_2H^2 ... 數(shù)據(jù)驅(qū)動擬合哈爾濱工程大學(xué)《工業(yè)過程控制》課程在第五章流體過程控制與建模中專門討論了水力過程的數(shù)學(xué)描述水力過程的非線性特性使得精確機(jī)理建模困難。對于閘門泄流這類問題經(jīng)典的堰流/孔口公式是第一性原理的起點(diǎn)但實(shí)際工程中由于邊界條件復(fù)雜河床形態(tài)、閘墩形狀、淹沒度變化往往需要在機(jī)理框架基礎(chǔ)上利用實(shí)測數(shù)據(jù)進(jìn)行參數(shù)辨識和模型校正。這就是數(shù)據(jù)驅(qū)動的灰箱建模思路。二、引入痛點(diǎn)2.1 現(xiàn)場的真實(shí)困境場景 現(xiàn)場發(fā)生了什么 根因曲線過時(shí) 十年前的率定曲線現(xiàn)在算出來的流量和實(shí)際差了 20% 河床沖淤變化測流成本高 請水文局來測一次流一條垂線 5000 塊 傳統(tǒng)測流依賴專業(yè)設(shè)備和人員數(shù)據(jù)沉睡 SCADA 里存了幾年的水位/流量數(shù)據(jù)沒人用來更新模型 缺乏分析工具和方法調(diào)度糾紛 上游說放了 100 個(gè)流量下游說只收到 80 個(gè) 雙方用的曲線不一樣自動控制難 PID 要投自動但流量反饋不準(zhǔn)只能手動 缺乏可靠的軟測量模型2.2 核心矛盾機(jī)理模型給你正確的方向但參數(shù)不準(zhǔn)黑箱模型給你準(zhǔn)確的數(shù)字但不可解釋。最優(yōu)解是灰箱建模用物理公式確定模型結(jié)構(gòu)用歷史數(shù)據(jù)擬合未知參數(shù)。這樣既有物理解釋性又能適應(yīng)現(xiàn)場變化。2.3 我們要解決什么用一段 Python 程序構(gòu)建一個(gè)水力閘門水位—泄流量數(shù)學(xué)模型擬合系統(tǒng)實(shí)現(xiàn)1. 歷史數(shù)據(jù)加載 —— 讀取 SCADA 導(dǎo)出的水位、開度、流量數(shù)據(jù)2. 數(shù)據(jù)清洗 —— 剔除異常點(diǎn)、穩(wěn)態(tài)篩選3. 模型擬合 —— 基于物理結(jié)構(gòu)的參數(shù)辨識最小二乘法4. 多模型對比 —— 堰流/孔口/多項(xiàng)式選最優(yōu)5. 精度評估 —— RMSE、R2、殘差分析6. 可視化 —— 擬合曲線 實(shí)測散點(diǎn) 殘差圖三、核心邏輯講解3.1 理論基礎(chǔ)閘門泄流物理模型本工具基于哈工程《工業(yè)過程控制》第五章流體過程控制與建模① 自由溢流堰流當(dāng)閘門全開、水流呈自由跌落狀態(tài)時(shí)Q C_d \cdot L \cdot \sqrt{2g} \cdot H^{3/2}其中 H 是堰上水頭上游水位 - 堰頂高程 C_d 是流量系數(shù) L 是堰寬。② 孔口出流閘門局部開啟Q \mu \cdot b \cdot h \cdot \sqrt{2g(H_{up} - H_{down})}其中 b 是閘寬 h 是閘門開度 \mu 是孔口流量系數(shù)。③ 實(shí)用經(jīng)驗(yàn)?zāi)P突蚁銺 K \cdot (H_{up} - H_{threshold})^\alpha \cdot f(\text{gate})④ 參數(shù)辨識最小二乘法對于線性化后的模型 y X\beta 最小化殘差平方和\hat{\beta} (X^T X)^{-1} X^T y3.2 系統(tǒng)數(shù)據(jù)流┌──────────────────────────────────────────────┐│ SCADA 歷史數(shù)據(jù) CSV ││ (timestamp, H_up, H_down, gate, Q) │└──────────────┬───────────────────────────────┘│┌──────────────▼───────────────┐│ ① 數(shù)據(jù)加載 清洗 ││ 去異常、穩(wěn)態(tài)篩選 │└──────────────┬───────────────┘│┌──────────────▼───────────────┐│ ② 特征工程 ││ 構(gòu)造 H_up, ΔH, gate 等特征 │└──────────────┬───────────────┘│┌──────────────▼───────────────┐│ ③ 模型擬合 ││ 最小二乘 / 非線性優(yōu)化 │└──────────────┬───────────────┘│┌──────────────▼───────────────┐│ ④ 精度評估 ││ RMSE / R2 / 殘差分析 │└──────────────┬───────────────┘│┌──────────────▼───────────────┐│ ⑤ 可視化 報(bào)告 ││ 擬合曲線 殘差診斷 │└──────────────────────────────┘四、代碼講解面向?qū)ο笤O(shè)計(jì)4.1 類結(jié)構(gòu)總覽類名 職責(zé) 設(shè)計(jì)模式FlowRecord 單條流量數(shù)據(jù)記錄dataclass 值對象GateSpec 閘門物理規(guī)格值對象 值對象ModelConfig 模型配置值對象 值對象FitResult 擬合結(jié)果dataclass 值對象DataLoader CSV 數(shù)據(jù)加載與清洗 封裝FeatureEngineer 特征工程 策略模式PhysicalModel 物理機(jī)理模型基類 模板方法WeirModel 堰流模型 繼承OrificeModel 孔口出流模型 繼承PolynomialModel 多項(xiàng)式經(jīng)驗(yàn)?zāi)P?繼承ModelFitter 模型擬合器最小二乘 策略模式AccuracyEvaluator 精度評估器 封裝CurveVisualizer 曲線可視化器 封裝ReportGenerator 分析報(bào)告生成器 模板方法GateFlowModelingSystem 系統(tǒng)編排器聚合根 聚合根4.2 數(shù)據(jù)模型層from dataclasses import dataclass, fieldfrom typing import List, Dict, Optional, Tuple, Callablefrom enum import Enumimport numpy as npimport csvfrom pathlib import Pathfrom datetime import datetimefrom abc import ABC, abstractmethodclass ModelType(Enum):模型類型WEIR 堰流模型ORIFICE 孔口出流模型POLYNOMIAL 多項(xiàng)式經(jīng)驗(yàn)?zāi)P蚫ataclass(frozenTrue)class FlowRecord:單條流量數(shù)據(jù)記錄 —— 值對象timestamp: datetimeh_up: float # 上游水位 (m)h_down: float # 下游水位 (m)gate_opening: float # 閘門開度 (m)flow_rate: float # 泄流量 (m3/s)temperature: float 20.0 # 水溫 (℃)dataclass(frozenTrue)class GateSpec:閘門物理規(guī)格 —— 值對象gate_id: strwidth: float 10.0 # 閘寬 (m)crest_elevation: float 100.0 # 堰頂高程 (m)max_opening: float 5.0 # 最大開度 (m)discharge_coeff: float 0.62 # 理論流量系數(shù)dataclass(frozenTrue)class ModelConfig:模型配置steady_state_window: int 10 # 穩(wěn)態(tài)判定窗口 (個(gè)采樣點(diǎn))max_change_rate: float 0.05 # 最大變化率 (m/s)outlier_std_multiplier: float 3.0 # 異常值判定 (標(biāo)準(zhǔn)差倍數(shù))poly_degree: int 3 # 多項(xiàng)式階數(shù)dataclassclass FitResult:擬合結(jié)果model_type: ModelTypeparameters: Dict[str, float]rmse: float 0.0r_squared: float 0.0residual_mean: float 0.0residual_std: float 0.0n_samples: int 04.3 數(shù)據(jù)加載與清洗class DataLoader:流量數(shù)據(jù)加載與清洗CSV 格式:timestamp,h_up,h_down,gate_opening,flow_rate,temperature2024-06-01 08:00:00,105.2,102.1,2.5,45.8,22.5def __init__(self, config: ModelConfig None):self.config config or ModelConfig()self.records: List[FlowRecord] []def load_csv(self, file_path: str) - List[FlowRecord]:加載 CSV 數(shù)據(jù)self.records.clear()with open(file_path, r, encodingutf-8) as f:reader csv.DictReader(f)for row in reader:try:ts datetime.strptime(row[timestamp], %Y-%m-%d %H:%M:%S)except (ValueError, KeyError):continuetry:record FlowRecord(timestampts,h_upfloat(row.get(h_up, 0)),h_downfloat(row.get(h_down, 0)),gate_openingfloat(row.get(gate_opening, 0)),flow_ratefloat(row.get(flow_rate, 0)),temperaturefloat(row.get(temperature, 20.0)))self.records.append(record)except ValueError:continuereturn self.recordsdef clean_data(self, records: List[FlowRecord]) - List[FlowRecord]:數(shù)據(jù)清洗:1. 去除明顯異常值 (流量為負(fù)或超過物理極限)2. 穩(wěn)態(tài)篩選 (變化率小于閾值)3. 去除水位倒掛 (下游 上游且差值不合理)cleaned []for i, r in enumerate(records):# 規(guī)則1: 流量必須為正if r.flow_rate 0 or r.flow_rate 1000:continue# 規(guī)則2: 水位合理性head r.h_up - r.h_downif head 0 or head 30:continue# 規(guī)則3: 開度合理性if r.gate_opening 0 or r.gate_opening 10:continue# 規(guī)則4: 穩(wěn)態(tài)判定 (與前一個(gè)點(diǎn)比較)if i 0:dt (r.timestamp - records[i-1].timestamp).total_seconds()if dt 0:dh_up abs(r.h_up - records[i-1].h_up)dh_down abs(r.h_down - records[i-1].h_down)dg abs(r.gate_opening - records[i-1].gate_opening)# 變化太快可能不是穩(wěn)態(tài)if (dh_up / dt self.config.max_change_rate ordh_down / dt self.config.max_change_rate ordg / dt self.config.max_change_rate):continuecleaned.append(r)return cleaned4.4 特征工程class FeatureEngineer:特征工程構(gòu)造模型輸入特征:- head h_up - h_down (水頭)- head_crest h_up - crest_elevation (堰上水頭)- gate_ratio gate_opening / max_opening (相對開度)- sqrt_head, head^1.5, head^2 等非線性變換def __init__(self, gate_spec: GateSpec):self.spec gate_specdef build_features(self, records: List[FlowRecord]) - Tuple[np.ndarray, np.ndarray]:構(gòu)建特征矩陣和目標(biāo)向量Args:records: 清洗后的數(shù)據(jù)Returns:(X, y) 特征矩陣和目標(biāo)流量n len(records)# 基礎(chǔ)特征: [head, sqrt(head), head^1.5, gate_ratio]X np.zeros((n, 4))y np.array([r.flow_rate for r in records])for i, r in enumerate(records):head max(0.001, r.h_up - r.h_down) # 避免除零head_crest max(0.001, r.h_up - self.spec.crest_elevation)X[i, 0] headX[i, 1] np.sqrt(head)X[i, 2] head ** 1.5X[i, 3] r.gate_opening / self.spec.max_openingreturn X, ydef build_physical_features(self, records: List[FlowRecord]) - Tuple[np.ndarray, np.ndarray]:物理模型特征: 基于堰流/孔口公式的變換對于堰流: Q C * L * sqrt(2g) * H^1.5取對數(shù): ln(Q) ln(C*L*sqrt(2g)) 1.5 * ln(H)n len(records)X np.zeros((n, 2))y np.log(np.array([max(0.001, r.flow_rate) for r in records]))for i, r in enumerate(records):head_crest max(0.001, r.h_up - self.spec.crest_elevation)X[i, 0] 1.0 # 截距項(xiàng)X[i, 1] np.log(head_crest)return X, y4.5 物理模型基類與派生類class PhysicalModel(ABC):物理模型基類 —— 模板方法模式定義統(tǒng)一的接口:- predict(): 根據(jù)輸入預(yù)測流量- fit(): 擬合模型參數(shù)- equation(): 返回公式字符串a(chǎn)bstractmethoddef predict(self, h_up: float, h_down: float, gate: float) - float:預(yù)測流量passabstractmethoddef fit(self, X: np.ndarray, y: np.ndarray) - Dict[str, float]:擬合參數(shù)passabstractmethoddef equation(self) - str:返回公式passclass WeirModel(PhysicalModel):堰流模型Q C_d * L * sqrt(2g) * (H - H_crest)^1.5待辨識參數(shù): C_d (流量系數(shù))def __init__(self, gate_spec: GateSpec):self.spec gate_specself.params {Cd: gate_spec.discharge_coeff}def predict(self, h_up: float, h_down: float, gate: float 0) - float:g 9.81head max(0, h_up - self.spec.crest_elevation)if head 0:return 0.0Q self.params[Cd] * self.spec.width * np.sqrt(2*g) * (head ** 1.5)return Qdef fit(self, X: np.ndarray, y: np.ndarray) - Dict[str, float]:基于對數(shù)線性化的最小二乘擬合ln(Q) ln(Cd * L * sqrt(2g)) 1.5 * ln(H)# X 應(yīng)該是 [1, ln(H)] 的形式if X.shape[1] 2:return self.params# 最小二乘: beta (X^T X)^-1 X^T ytry:beta np.linalg.inv(X.T X) X.T yintercept beta[0]slope beta[1]# 從斜率驗(yàn)證 1.5 次方關(guān)系# 從截距恢復(fù) Cdg 9.81log_term np.log(self.spec.width * np.sqrt(2*g))cd_estimated np.exp(intercept - log_term)self.params[Cd] max(0.1, min(1.0, cd_estimated))self.params[slope] slopeexcept np.linalg.LinAlgError:passreturn self.paramsdef equation(self) - str:Cd self.params.get(Cd, 0.62)return fQ {Cd:.4f} × {self.spec.width} × √(2×9.81) × (H - {self.spec.crest_elevation})^{{1.5}}class OrificeModel(PhysicalModel):孔口出流模型Q μ * b * h_gate * √(2g * (H_up - H_down))待辨識參數(shù): μ (流量系數(shù))def __init__(self, gate_spec: GateSpec):self.spec gate_specself.params {mu: 0.65}def predict(self, h_up: float, h_down: float, gate: float) - float:g 9.81head max(0, h_up - h_down)if head 0 or gate 0:return 0.0Q self.params[mu] * self.spec.width * gate * np.sqrt(2*g*head)return Qdef fit(self, X: np.ndarray, y: np.ndarray) - Dict[str, float]:線性化: Q / (b * gate * sqrt(2g*head)) μratios []for i in range(len(y)):x_row X[i]# X 的格式: [b*gate*sqrt(2g*head), ...]if x_row[0] 1e-6:ratios.append(y[i] / x_row[0])if ratios:self.params[mu] float(np.mean(ratios))return self.paramsdef equation(self) - str:mu self.params.get(mu, 0.65)return fQ {mu:.4f} × {self.spec.width} × h_gate × √(2×9.81×(H_up - H_down))class PolynomialModel(PhysicalModel):多項(xiàng)式經(jīng)驗(yàn)?zāi)P蚎 a0 a1*H a2*H^2 a3*H^3 b*gate純數(shù)據(jù)驅(qū)動不考慮物理結(jié)構(gòu)def __init__(self, degree: int 3):self.degree degreeself.params {}def predict(self, h_up: float, h_down: float, gate: float) - float:head h_up - h_down# 簡單多項(xiàng)式Q self.params.get(a0, 0)for i in range(1, self.degree 1):Q self.params.get(fa{i}, 0) * (head ** i)Q self.params.get(b_gate, 0) * gatereturn max(0, Q)def fit(self, X: np.ndarray, y: np.ndarray) - Dict[str, float]:多元線性回歸try:beta np.linalg.inv(X.T X) X.T yself.params[a0] beta[0]for i in range(1, min(self.degree 1, len(beta))):self.params[fa{i}] beta[i]except (np.linalg.LinAlgError, IndexError):passreturn self.paramsdef equation(self) - str:terms [f{self.params.get(a0, 0):.3f}]for i in range(1, self.degree 1):c self.params.get(fa{i}, 0)terms.append(f{c:.3f}×H^{i})b self.params.get(b_gate, 0)terms.append(f{b:.3f}×gate)return Q .join(terms)4.6 模型擬合器class ModelFitter:模型擬合器 —— 策略模式支持:- 線性最小二乘- 非線性優(yōu)化 (scipy)- 交叉驗(yàn)證def __init__(self, model: PhysicalModel):self.model modeldef fit(self, X: np.ndarray, y: np.ndarray) - Dict[str, float]:執(zhí)行擬合return self.model.fit(X, y)def evaluate(self, X: np.ndarray, y: np.ndarray) - Tuple[float, float]:評估擬合精度Returns:(RMSE, R2)y_pred self._predict_all(X)rmse np.sqrt(np.mean((y - y_pred) ** 2))ss_res np.sum((y - y_pred) ** 2)ss_tot np.sum((y - np.mean(y)) ** 2)r2 1 - ss_res / (ss_tot 1e-10)return rmse, r2def _predict_all(self, X: np.ndarray) - np.ndarray:批量預(yù)測# 這是一個(gè)簡化版本實(shí)際需要存儲原始 records# 這里用參數(shù)直接計(jì)算return np.zeros(len(X)) # placeholder4.7 精度評估器class AccuracyEvaluator:精度評估器計(jì)算:- RMSE (均方根誤差)- MAE (平均絕對誤差)- R2 (決定系數(shù))- MAPE (平均絕對百分比誤差)- 殘差分布def evaluate(self, y_true: np.ndarray, y_pred: np.ndarray) - dict:全面評估Args:y_true: 實(shí)測流量y_pred: 預(yù)測流量Returns:評估指標(biāo)字典residuals y_true - y_predrmse np.sqrt(np.mean(residuals ** 2))mae np.mean(np.abs(residuals))mape np.mean(np.abs(residuals / (y_true 1e-10))) * 100ss_res np.sum(residuals ** 2)ss_tot np.sum((y_true - np.mean(y_true)) ** 2)r2 1 - ss_res / (ss_tot 1e-10)return {rmse: round(rmse, 4),mae: round(mae, 4),mape: round(mape, 2),r_squared: round(r2, 4),residual_mean: round(np.mean(residuals), 4),residual_std: round(np.std(residuals), 4),n_samples: len(y_true)}4.8 曲線可視化器class CurveVisualizer:曲線可視化器生成:- 實(shí)測 vs 擬合散點(diǎn)圖- 殘差圖- 水位-流量關(guān)系曲線def plot_fit(self, y_true: np.ndarray, y_pred: np.ndarray,model_name: str, output_path: str fit_result.png):繪制擬合效果try:import matplotlib.pyplot as pltfig, axes plt.subplots(1, 2, figsize(12, 5))# 左圖: 實(shí)測 vs 擬合axes[0].scatter(y_true, y_pred, alpha0.6, s20)min_val min(y_true.min(), y_pred.min())max_val max(y_true.max(), y_pred.max())axes[0].plot([min_val, max_val], [min_val, max_val], r--, lw2)axes[0].set_xlabel(Measured Q (m3/s))axes[0].set_ylabel(Predicted Q (m3/s))axes[0].set_title(f{model_name}: Measured vs Predicted)axes[0].grid(True, alpha0.3)# 右圖: 殘差residuals y_true - y_predaxes[1].scatter(y_pred, residuals, alpha0.6, s20)axes[1].axhline(y0, colorr, linestyle--)axes[1].set_xlabel(Predicted Q (m3/s))axes[1].set_ylabel(Residual (m3/s))axes[1].set_title(Residual Plot)axes[1].grid(True, alpha0.3)plt.tight_layout()plt.savefig(output_path, dpi150)plt.close()except ImportError:print(?? matplotlib 未安裝跳過可視化)def plot_rating_curve(self, model: PhysicalModel, h_range: Tuple[float, float],gate: float, output_path: str rating_curve.png):繪制水位-流量關(guān)系曲線try:import matplotlib.pyplot as plth_vals np.linspace(h_range[0], h_range[1], 100)q_vals [model.predict(h, h - 1.0, gate) for h in h_vals]plt.figure(figsize(8, 5))plt.plot(h_vals, q_vals, b-, linewidth2)plt.xlabel(Upstream Water Level (m))plt.ylabel(Discharge (m3/s))plt.title(fRating Curve (Gate {gate}m))plt.grid(True, alpha0.3)plt.tight_layout()plt.savefig(output_path, dpi150)plt.close()except ImportError:pass4.9 分析報(bào)告生成器class ReportGenerator:分析報(bào)告生成器def generate_report(self, model_type: str, params: dict,metrics: dict, equation: str) - str:生成擬合報(bào)告lines [ * 65,f 水力閘門水位—泄流量模型擬合報(bào)告, * 65,, 【模型信息】,f 模型類型: {model_type},f 擬合方程: {equation},, 【辨識參數(shù)】]for k, v in params.items():lines.append(f {k}: {v:.6f} if isinstance(v, float) else f {k}: {v})利用AI解決實(shí)際問題如果你覺得這個(gè)工具好用歡迎關(guān)注長安牧笛

相關(guān)新聞

接口測試實(shí)戰(zhàn)指南:從核心思路到自動化集成

接口測試實(shí)戰(zhàn)指南:從核心思路到自動化集成

1. 項(xiàng)目概述:為什么接口測試是研發(fā)流程的“咽喉要道”干了這么多年軟件開發(fā)和測試,我越來越覺得,接口測試是整個(gè)研發(fā)流程里最值得投入精力的環(huán)節(jié)之一。你可以把它想象成一座大橋的承重測試,橋面(前端UI)修得…

2026/8/3 17:49:02 閱讀更多
Java程序員必備:收藏!從零入門大模型,輕松轉(zhuǎn)型AI高薪崗位

Java程序員必備:收藏!從零入門大模型,輕松轉(zhuǎn)型AI高薪崗位

隨著ChatGPT的火爆,許多Java程序員開始關(guān)注AI領(lǐng)域。文章建議Java開發(fā)者結(jié)合現(xiàn)有技術(shù)能力學(xué)習(xí)大模型,而非拋棄原有技能。文章強(qiáng)調(diào)AI應(yīng)用落地的趨勢,并提供學(xué)習(xí)路徑:先理解大模型應(yīng)用場景,再學(xué)習(xí)API使用、LangChain框架、…

2026/8/3 18:59:04 閱讀更多
Ionic 中控件點(diǎn)擊延遲的處理

Ionic 中控件點(diǎn)擊延遲的處理

原文發(fā)表于我的技術(shù)博客 本文分享了在 Ionic 中如何處理控件點(diǎn)擊延遲的問題。 原文發(fā)表于我的技術(shù)博客 1. 問題描述 在 Ionic 中,當(dāng)在 iOS 環(huán)境下運(yùn)行元素的點(diǎn)擊事件時(shí),你會發(fā)現(xiàn)點(diǎn)擊響應(yīng)事件會出現(xiàn)延遲的情況,此情況會造成用戶的操作疑惑。 2…

2026/8/3 18:59:04 閱讀更多
在 Ionic2 TypeScript 項(xiàng)目中導(dǎo)入第三方 JS 庫

在 Ionic2 TypeScript 項(xiàng)目中導(dǎo)入第三方 JS 庫

原文發(fā)表于我的技術(shù)博客 本文分享了在Ionic2 TypeScript 項(xiàng)目中導(dǎo)入第三方 JS 庫的方法,供參考。 原文發(fā)表于我的技術(shù)博客 1. Typings 的方式 因在 TypeScript 中引用之前的 JS 庫還需要引入對應(yīng)的類型定義,也就是 .d.ts 文件。對于一些流行的 JS 庫&…

2026/8/3 18:59:04 閱讀更多
全球僅7家廠商通過ISO/IEC 27001認(rèn)證的名片AI引擎,我們逆向拆解了它的字段置信度熔斷機(jī)制

全球僅7家廠商通過ISO/IEC 27001認(rèn)證的名片AI引擎,我們逆向拆解了它的字段置信度熔斷機(jī)制

更多請點(diǎn)擊: https://kaifayun.com 第一章:全球僅7家廠商通過ISO/IEC 27001認(rèn)證的名片AI引擎概覽 名片AI引擎是企業(yè)級智能文檔處理的核心組件,專注于高精度OCR、語義結(jié)構(gòu)化提取與跨語言實(shí)體對齊。截至2024年第三季度,全球范圍內(nèi)僅…

2026/8/3 0:07:47 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動批量混剪短視頻,自動把視頻發(fā)布到抖音,快手,小紅書,視頻號上,賺錢從來沒有這么容易過! 支持本地語音模型chatTTS,fasterwhisper,…

2026/8/3 7:44:46 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費(fèi)下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說說 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發(fā)過的QQ空間說說,那些記錄青春的文字…

2026/8/3 12:53:38 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號分配電路板。該型號(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/2 2:51:21 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動化設(shè)備及通用機(jī)械驅(qū)動。該型號(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動機(jī)。額定…

2026/8/2 2:52:49 閱讀更多