LightGBM時序預測詳解:從原理到 PSO 參數優化

前言

在時間序列預測領域,集成學習方法一直占據重要地位。此前我們介紹了基于傳統集成思想的時序預測方法(查看前文),而梯度提升樹(GBDT)作為集成學習的佼佼者,在時序預測中表現尤為突出。本文將重點講解 LightGBM 算法的原理、優勢及其在時序預測中的應用,并介紹如何使用粒子群優化(PSO)算法尋找最優參數,提升預測精度。

1: LightGBM 算法原理簡介與應用

1.1 LightGBM 基本原理

LightGBM(Light Gradient Boosting Machine)是微軟于 2017 年開源的梯度提升框架,基于決策樹的集成學習算法,核心思想是通過不斷迭代訓練弱分類器(決策樹)?來修正上一輪的預測誤差,最終形成強分類器。

與傳統 GBDT 相比,LightGBM 創新性地提出了兩種關鍵技術:

  1. histogram-based 決策樹學習?:將連續特征值離散化為直方圖(bin),減少分裂時的計算量(時間復雜度從 O (n) 降至 O (bin))
  2. ?帶深度限制的 Leaf-wise 生長策略 :不同于 XGBoost 的 Level-wise(按層生長),LightGBM 優先分裂增益最大的葉子節點,在保持精度的同時減少樹的深度

1.2 LightGBM 算法流程

LightGBM 的迭代流程可概括為以下步驟:

1. 初始化模型?:以訓練數據的均值作為初始預測值
2.
?計算負梯度?:將損失函數對當前模型的預測值求導,得到殘差(作為新的訓練目標)
3.
?訓練弱分類器?:使用 histogram 方法構建決策樹擬合殘差
4.
?更新模型?:通過學習率(learning_rate)控制新樹的權重,累加至集成模型
5.
?重復步驟 2-4 :直至達到最大迭代次數或滿足停止條件

圖1:LightGBM算法圖形解釋

1.3 LightGBM 與 XGBoost的對比

特性LightGBMXGBoost
樹生長策略Leaf-wise(按葉子優先)Level-wise(按層生長)
特征處理直方圖離散化(速度快)精確分裂(精度高但慢)
內存占用低(直方圖壓縮)高(需存儲所有特征值)
并行方式特征并行 + 數據并行特征并行
對缺失值處理自動處理(默認分到增益大的分支)需要手動指定缺失值方向
類別特征支持原生支持(無需 One-hot 編碼)需要手動編碼
時間復雜度O(n \cdot bin \cdot tree\_depth)O(n^2 \cdot tree\_depth)
適用場景大數據集、追求訓練速度小數據集、追求高精度

數據來源:LightGBM 官方文檔

1.4 LightGBM 在時序預測中的優勢

時間序列數據具有時序依賴性周期性特點,LightGBM 的以下特性使其在時序預測中表現優異:

-?高效處理大規模數據?:直方圖算法降低了時間復雜度,適合處理長時序數據
-
?自動特征交互?:決策樹能自動捕捉特征間的非線性關系(如季節性與趨勢的交互)
-
?正則化機制?:通過reg_alphareg_lambda等參數有效抑制過擬合,避免對時序噪聲的過度擬合
-
?靈活的參數調優 :可通過num_leavesmax_depth等參數平衡模型復雜度與泛化能力.

2:粒子群優化(PSO)算法

2.1 PSO 基本原理

粒子群優化算法(Particle Swarm Optimization)源于對鳥群覓食行為的模擬,通過群體中個體間的協作與信息共享尋找最優解。在參數優化場景中,每個 "粒子" 代表一組參數組合,通過迭代更新位置尋找最優解。

核心思想:

  • 每個粒子通過個體經驗(自身歷史最優)和群體經驗(全局最優)調整搜索方向
  • 保持一定的隨機性以避免陷入局部最優

2.2 PSO 算法流程

1.?初始化粒子群?:隨機生成一定數量的粒子(參數組合),設置初始位置和速度

2.?計算適應度?:對每個粒子的參數組合進行評估(如 LightGBM 的預測誤差)

3.?更新最優解?:記錄每個粒子的個體最優位置和整個群體的全局最優位置

4.?更新速度和位置?:根據個體最優和全局最優調整粒子的運動狀態

5.?重復步驟 2-4 :直至達到最大迭代次數或滿足早停條件

2.3 速度與位置更新公式

PSO 的核心是通過以下公式更新粒子的速度和位置:

速度更新公式:

v_i^{t+1} = w \cdot v_i^t + c_1 \cdot r_1 \cdot (pbest_i - x_i^t) + c_2 \cdot r_2 \cdot (gbest - x_i^t)

位置更新公式:

x_i^{t+1} = x_i^t + v_i^{t+1}

其中參數含義:

  • $v_i^t$:粒子i在t時刻的速度
  • $x_i^t$:粒子i在t時刻的位置(參數組合)
  • $w$:慣性權重(控制歷史速度的影響,通常取 0.7212)
  • $c_1, c_2$:學習因子(分別控制個體經驗和群體經驗的權重,通常均取 1.1931)
  • $r_1, r_2$:[0,1] 區間的隨機數(增加搜索隨機性)
  • $pbest_i$:粒子i的個體最優位置
  • $gbest$:群體的全局最優位置

圖2: PSO流程圖

2.4 PSO 優化 LightGBM 參數的優勢

相較于網格搜索、隨機搜索等傳統方法,PSO 在參數優化中具有明顯優勢:

- 搜索效率高?:無需遍歷所有參數組合,通過群體智能快速收斂到最優解 -?全局搜索能力強?:結合個體與群體經驗,減少陷入局部最優的風險

-?適合高維空間?:對于 LightGBM 的多參數優化場景表現更優

-?易于實現 :算法邏輯簡單,可靈活調整粒子數量和迭代次數平衡效率與精度

3:PSO 優化 LightGBM 實戰演示

在了解了 LightGBM 原理和 PSO 算法基礎后,本節將通過完整代碼演示如何將兩者結合,實現時間序列的高精度預測。我們以負荷預測為例,展示從參數優化到模型評估的全流程。

3.1?參數空間定義、粒子類定義和 PSO 優化函數

3.1.1 參數空間定義

LightGBM 的性能高度依賴參數配置,我們需要根據業務場景和數據特點定義合理的參數搜索范圍。結合負荷預測的時序特性,重點優化以下參數:

# -------------------------- 參數空間定義 --------------------------
# 定義LightGBM可優化參數的搜索范圍(參考官方文檔)
PARAM_RANGES = {'learning_rate': (0.01, 0.1),          # 學習率:控制模型更新步長,過小收斂慢,過大易過擬合'num_leaves': (31, 251),               # 葉子節點數量:影響模型復雜度,負荷預測中建議31-251'feature_fraction': (0.5, 1.0),        # 特征采樣比例:增強泛化能力,避免對噪聲特征過度依賴'bagging_fraction': (0.5, 1.0),        # 樣本采樣比例:減少過擬合風險,尤其適合時序數據中的異常值'bagging_freq': (1, 10),               # 采樣頻率:與bagging_fraction配合,控制采樣間隔'min_child_samples': (5, 100),         # 葉子節點最小樣本數:控制過擬合,值越大模型越簡單'reg_alpha': (0.0, 10.0),              # L1正則化系數:抑制高維特征權重,適合多特征的負荷預測'reg_lambda': (0.0, 10.0),             # L2正則化系數:平滑權重分布,增強模型穩定性'max_depth': (1, 15)                   # 最大深度:與num_leaves關聯,控制樹結構復雜度
}# 參數類型定義(連續型/整數型)
PARAM_TYPES = {'learning_rate': 'continuous','num_leaves': 'integer','feature_fraction': 'continuous','bagging_fraction': 'continuous','bagging_freq': 'integer','min_child_samples': 'integer','reg_alpha': 'continuous','reg_lambda': 'continuous','max_depth': 'integer'
}# 參數名稱列表
PARAM_NAMES = list(PARAM_RANGES.keys())

參數設置說明

  • 負荷預測中,num_leaves不宜過大(避免過擬合短期波動),max_depth建議控制在 15 以內(防止捕捉冗余時序特征)。
  • 正則化參數reg_alphareg_lambda對含天氣、節假日等多特征的負荷數據尤為重要,可有效平衡特征影響。

3.1.2 粒子類定義

在 PSO 算法中,每個粒子代表一組 LightGBM 參數組合,包含位置(參數值)、速度(參數調整幅度)和個體最優記錄:

class Particle:"""粒子類,用于PSO算法中表示一個參數組合及其相關屬性"""def __init__(self):"""初始化粒子的位置、速度和最優狀態"""# 初始化位置(隨機在參數范圍內取值)self.position = {}for param in PARAM_NAMES:min_val, max_val = PARAM_RANGES[param]if PARAM_TYPES[param] == 'continuous':self.position[param] = np.random.uniform(min_val, max_val)  # 連續參數隨機采樣else:  # 整數型參數self.position[param] = np.random.randint(min_val, max_val + 1)  # 整數參數離散采樣# 初始化速度(根據參數范圍動態設置,確保調整幅度合理)self.velocity = {}for param in PARAM_NAMES:min_val, max_val = PARAM_RANGES[param]range_val = max_val - min_valself.velocity[param] = np.random.uniform(-range_val / 10, range_val / 10)  # 速度范圍為參數范圍的1/10# 初始化個體最優(位置和適應度)self.best_position = self.position.copy()  # 記錄當前粒子的最優參數組合self.best_fitness = float('inf')  # 適應度為RMSE,初始化為無窮大

粒子設計思路

  • 位置初始化確保參數在合理范圍內,避免無效值(如負的學習率)。
  • 速度與參數范圍掛鉤(如learning_rate范圍 0.09,速度范圍 ±0.009),保證調整幅度適中。

3.1.3 PSO 優化函數

核心函數實現參數尋優邏輯,通過迭代更新粒子位置,找到使 LightGBM 預測誤差最小的參數組合:

def pso_optimize_lgb(x_train, y_train, max_iter=50, n_particles=20,w=0.7212, c1=1.1931, c2=1.1931):"""使用粒子群優化(PSO)算法尋找LightGBM的最優參數組合參數:x_train: 訓練特征數據(含時序特征、外部特征等)y_train: 訓練標簽數據(負荷值)max_iter: 最大迭代次數(默認50)n_particles: 粒子數(默認20,根據特征維度調整)w: 慣性權重(SPSO 2011建議值0.7212,控制歷史速度影響)c1: 個體學習因子(1.1931,控制個體經驗權重)c2: 社會學習因子(1.1931,控制群體經驗權重)返回:best_params: 最優參數組合(字典)best_score: 最優RMSE分數"""# 初始化粒子群particles = [Particle() for _ in range(n_particles)]# 初始化全局最優global_best_position = Noneglobal_best_fitness = float('inf')# 早停參數:避免無效迭代,提升優化效率flag = 0  # 標記本輪是否更新全局最優(1=更新,0=未更新)k = 0     # 連續未更新全局最優的次數,超過5次則早停# PSO主循環for iter_num in range(max_iter):# 計算每個粒子的適應度(模型性能)并更新最優for particle in particles:# 構建模型參數(固定參數+粒子位置參數)fixed_params = {'boosting_type': 'gbdt',  # 梯度提升類型'objective': 'mse',       # 損失函數(均方誤差,適合回歸)'metric': 'rmse',         # 評估指標(均方根誤差)'verbose': -1,            # 靜默模式,不輸出訓練日志'seed': 64,               # 隨機種子,保證結果可復現'n_jobs': -1              # 并行計算,使用所有CPU核心}model_params = {**fixed_params,** particle.position}  # 合并參數# 訓練模型并計算適應度(訓練集RMSE)model = lgb.LGBMRegressor(**model_params)model.fit(x_train, y_train)  # 擬合訓練數據y_pred = model.predict(x_train)  # 預測訓練集current_fitness = np.sqrt(mean_squared_error(y_train, y_pred))  # 計算RMSE# 更新個體最優(當前粒子的歷史最佳)if current_fitness < particle.best_fitness:particle.best_fitness = current_fitnessparticle.best_position = particle.position.copy()# 更新全局最優(所有粒子的歷史最佳)if current_fitness < global_best_fitness:global_best_fitness = current_fitnessglobal_best_position = particle.position.copy()flag = 1  # 標記本輪更新了全局最優# 早停邏輯:連續5輪未提升則停止if flag:k = 0       # 重置計數器flag = 0    # 重置標記else:k += 1      # 累加未更新次數if k >= 5:  # 觸發早停print(f'連續 {k} 輪沒有下降, 退出迭代.')return global_best_position, global_best_fitness# 更新粒子速度和位置(核心迭代邏輯)for particle in particles:for param in PARAM_NAMES:# 生成隨機因子(增加搜索多樣性)r1 = np.random.uniform(0, c1)  # 個體學習隨機因子r2 = np.random.uniform(0, c2)  # 社會學習隨機因子# 計算速度更新分量cognitive_component = c1 * r1 * (particle.best_position[param] - particle.position[param])  # 個體經驗social_component = c2 * r2 * (global_best_position[param] - particle.position[param])      # 群體經驗new_velocity = w * particle.velocity[param] + cognitive_component + social_component       # 新速度# 限制速度范圍(避免參數調整幅度過大)min_val, max_val = PARAM_RANGES[param]range_val = max_val - min_valnew_velocity = np.clip(new_velocity, -range_val / 5, range_val / 5)  # 速度不超過參數范圍的1/5particle.velocity[param] = new_velocity# 計算并限制新位置new_position = particle.position[param] + new_velocitynew_position = np.clip(new_position, min_val, max_val)  # 確保參數在有效范圍內# 整數型參數取整處理if PARAM_TYPES[param] == 'integer':new_position = int(round(new_position))particle.position[param] = new_position  # 更新位置# 打印迭代信息,監控優化過程print(f"迭代 {iter_num + 1}/{max_iter},當前最優RMSE: {global_best_fitness:.6f}")return global_best_position, global_best_fitness

優化邏輯說明

  • 適應度采用訓練集 RMSE,直接反映參數組合的擬合能力。
  • 速度更新結合個體最優(粒子自身歷史最佳)和全局最優(所有粒子最佳),平衡探索與利用。
  • 早停機制避免陷入局部最優后的無效迭代,在負荷預測等時序場景中可節省 的計算時間,這里實測提前30輪停止迭代(總輪數50)。

3.2?執行 PSO 優化、輸出優化結果和訓練最終模型

完成上述定義后,即可執行參數優化流程,并基于最優參數訓練最終模型:

# 執行PSO優化
best_params, best_score = pso_optimize_lgb(x_train=x_train,    # 訓練特征(如歷史負荷、溫度、節假日等)y_train=y_train,    # 訓練標簽(實際負荷值)max_iter=50,        # 迭代次數:根據數據規模調整,負荷預測建議30-50n_particles=20      # 粒子數:特征維度越高,需要越多粒子探索空間
)# 輸出優化結果
print("\n最優參數組合:")
for param, value in best_params.items():print(f"  {param}: {value}")
print(f"最優RMSE分數: {best_score:.6f}")# 用最優參數訓練最終模型
final_model = lgb.LGBMRegressor(boosting_type='gbdt',objective='mse',metric='rmse',verbose=-1,seed=64,n_jobs=-1,** best_params  # 傳入PSO優化得到的最優參數
)
final_model.fit(x_train, y_train)  # 擬合全部訓練數據

關鍵步驟解析

  • x_train需包含構建好的時序特征(如滯后特征、滾動統計量)和外部特征(如天氣、日期類型),這是負荷預測精度的基礎。
  • 最優參數輸出可幫助分析模型特點,例如若reg_lambda較大,說明數據中噪聲較多,需要更強的正則化。
  • 最終模型使用全量訓練數據擬合,確保充分利用樣本信息。

3.3?可視化 PSO 優化結果部分

模型訓練完成后,通過可視化對比預測值與真實值,直觀評估 PSO 優化后的 LightGBM 在測試集上的表現:

# 可視化PSO優化模型結果
y_pred_lgb = final_model.predict(x_test)  # 預測測試集負荷# 創建畫布
plt.figure(figsize=(20, 8))# 繪制真實值與預測值曲線
plt.plot(df_test.time, y_test, color='b', label='真實值')
plt.plot(df_test.time, y_pred_lgb, color='y', label='預測值')# 美化圖表
plt.xticks(df_test.time[::24], rotation=45)  # 按日顯示時間刻度,避免擁擠
plt.legend()  # 顯示圖例
plt.grid(True, alpha=0.5)  # 網格線輔助觀察
plt.xlabel('時間')
plt.ylabel('負荷')
plt.title('基于PSO優化LightGBM的負荷預測效果圖')plt.show()

圖3: LightGBM預測結果

從圖中可以看出,除了一些異常值,大多數電力負荷預測較為精準,可以使用該模型去預測未來的電力負荷情況。

圖4:LightGBM特征重要性圖

從圖中可以看出,對當前時刻負荷影響最大的為昨天同時刻的電力負荷,其次是前三個小時的電力負荷,其余特征作用不明顯,僅對特定時期(如節假日等)有影響。

3.4 模型評估部分

除可視化外,通過量化指標全面評估模型性能,常用指標包括 MSE、RMSE、MAE 和 MAPE,以下是XGBoost(基于網格搜索優化)和LightGBM(基于PSO優化)的測試集對比:

模型\指標MSE? ? ?RMSEMAEMAPE消耗時間
XGBoost8891.217594.293357.49820.05755min43s
LightGBM9172.773195.774558.62480.05872min18s

從上述比對可以看出,XGBoost在精度上更甚一籌,這是由于在小樣本數下,直方圖算法會丟失精度,相比于XGBoost的預排序算法的精確性要稍微弱些;但從時間成本上來看,LightGBM僅用了XGBoost一半的時間量,因此效率更高。

4. 小結

本節通過完整代碼演示了 PSO 優化 LightGBM 的全流程,從參數空間定義到模型評估,每一步都針對時序負荷預測的特點進行了適配。實際應用中,可根據數據規模調整粒子數和迭代次數,并結合特征工程進一步提升預測精度。

相關鏈接

  • LightGBM 官方文檔
  • 粒子群優化算法詳解

如果本文對你有幫助,歡迎點贊收藏,也歡迎在評論區交流時序預測的其他方法!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96473.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96473.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96473.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

django生成遷移文件,執行生成到數據庫

當報錯時 重新拉取git&#xff0c;重新生成遷移文件&#xff0c;重新執行 1、生成遷移文件 python manage.py makemigrations 子應用2、執行建表、建字段、修改字段 python manage.py migrate 子應用3、當手動已經在數據庫創建字段時&#xff0c; 用 --fake 標記遷移為 “已應用…

2025軟件供應鏈安全技術路線未來趨勢預測

軟件供應鏈安全已從一個技術圈的議題演變為全球企業的治理焦點。近幾年&#xff0c;APT滲透、惡意包植入、開發者誤操作等不同類型的供應鏈安全事件頻發&#xff0c;使得“安全的代碼來源”和“可信的交付鏈路”成為企業數字化轉型的生命線。2025年的軟件供應鏈安全&#xff0c…

用戶登錄Token緩存Redis實踐:提升SpringBoot應用性能

前言在現代Web應用中&#xff0c;用戶認證和授權是至關重要的功能。傳統的基于數據庫的Token存儲方式雖然簡單易用&#xff0c;但在高并發場景下容易成為性能瓶頸。本文將介紹如何將SpringBoot項目中的用戶Token從數據庫存儲遷移到Redis緩存&#xff0c;顯著提升系統性能。一、…

深度解析Structured Outputs:讓AI輸出嚴格遵循JSON Schema的結構化響應

深度解析Structured Outputs&#xff1a;讓AI輸出嚴格遵循JSON Schema的結構化響應 引言 在現代應用開發中&#xff0c;JSON 是最流行的數據交換格式之一。為了提升 API 接口的健壯性和數據一致性&#xff0c;結構化輸出&#xff08;Structured Outputs&#xff09;成為了大模…

關于 微服務中服務注冊與發現 的詳細說明,涵蓋主流框架/解決方案的對比、核心功能、配置示例及總結表格

以下是關于 微服務中服務注冊與發現 的詳細說明&#xff0c;涵蓋主流框架/解決方案的對比、核心功能、配置示例及總結表格&#xff1a;1. 服務注冊與發現的核心概念 服務注冊與發現是微服務架構的基礎能力&#xff0c;主要解決以下問題&#xff1a; 服務注冊&#xff1a;服務實…

08高級語言邏輯結構到匯編語言之邏輯結構轉換 continue break 完結匯編按邏輯結構

目錄 &#x1f4da; 1. continue 語句的原理與實現 &#x1f6e0; 1.1 continue 語句的基本概念 ?? 1.2 底層原理 &#x1f4d6; 1.3 案例分析&#xff1a;跳過偶數&#xff0c;累加奇數 &#x1f680; 2. break 語句的原理與實現 &#x1f6e0; 2.1 break 語句的基本概…

AI出題人給出的Java后端面經(二十二)(日更)

鏈接雙端鏈表 前一篇&#xff1a;AI出題人給出的Java后端面經&#xff08;二十一&#xff09;&#xff08;日更&#xff09; 后一篇&#xff1a;null 目錄 &#x1f535; 一、Java基礎&#xff08;集合/流式/OOP&#xff09; 答案&#xff1a; 題目1&#xff1a;集合遍歷性…

AI賦能體育訓練突破:AI動作捕捉矯正精準、戰術分析系統提效率,運動員破瓶頸新路徑

傳統體育訓練長期受限于 “動作矯正依賴教練主觀判斷”“戰術分析滯后于賽場變化”“運動員體能分配憑經驗摸索” 的難題&#xff0c;而 AI 技術的深度介入&#xff0c;正讓體育訓練從 “經驗驅動” 轉向 “數據驅動”&#xff0c;既能實時捕捉動作偏差&#xff0c;又能動態優化…

【python實用小腳本-194】Python PNR一鍵查票:輸入號碼秒出座位狀態——再也不用刷12306

Python PNR一鍵查票&#xff1a;輸入號碼秒出座位狀態——再也不用刷12306 PNR查詢, 實時座位, 離線腳本, 零廣告, 瑞士軍刀 故事開場&#xff1a;一把瑞士軍刀救了趕火車的你 周五傍晚&#xff0c;你拎著行李沖向站臺&#xff0c;手機信號一格&#xff0c;12306 死活刷不出座位…

【python】python進階——推導式

目錄 一、推導式介紹 二、推導式的用法 2.1 列表推導式 2.2 字典推導式 2.3 集合推導式 2.4 生成器表達式 三、推導式的嵌套和復雜用法 3.1 嵌套推導式 3.2 多重條件推導式 四、推導式對比傳統循環 4.1 性能比較 4.2 可讀性比較 五、常見應用場景 5.1 數據清…

數字安全隱形基石:隨機數、熵源與DRBG核心解析與技術關聯

前言&#xff1a;數字安全的 “隱形基石” 在數字化浪潮席卷全球的今天&#xff0c;從金融交易的密鑰生成到區塊鏈的共識機制&#xff0c;從量子通信的加密協議到智能汽車的身份認證&#xff0c;隨機數如同空氣般滲透在信息系統的每一個安全節點。然而&#xff0c;看似簡單的 …

TDengine IDMP 最佳實踐

最佳實踐 IDMP 提供了一強大的數據建模能力&#xff0c;讓數據標準化、情景化&#xff0c;從而可以更好地利用 AI 技術&#xff0c;從數據中挖掘出業務價值&#xff0c;但數據建模本身是一個很難用 AI 完成的事情。 為最大程度減少建模的成本&#xff0c;TDengine 推薦在數據…

8.20網絡編程——sqlite3數據庫

文章目錄一、思維導圖二、學生管理系統1、myhead.h2、代碼三、牛客網刷題一、思維導圖 二、學生管理系統 1、myhead.h #ifndef __MYHEAD_H__ #define __MYHEAD_H__#include <string.h> #include <stdio.h> #include <stdlib.h> #include <errno.h>#d…

電腦不能訪問服務器磁盤,連不上服務器。解決辦法:在窗口中輸入 regedit 確定即可打開注冊表,。。。。0改為1,確認;

打開注冊表&#xff1a; 按鍵盤上的 WinR 鍵&#xff0c;打開運行窗口&#xff0c;在窗口中輸入 regedit 確定即可打開注冊表。&#xff08;或者直接在左下角搜索框中搜索“注冊表”&#xff09; 依次打開以下目錄 計算機\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service…

EP4CE40F23I7N Altera FPGA Cyclone IV E

EP4CE40F23I7N 阿爾特拉 Altera Cyclone IV E 系列的一顆中等密度、低功耗 FPGA&#xff0c;通信接口與工業控制等應用。該器件采用成熟的工藝制程&#xff0c;器件規模約為 39k 左右的邏輯單元&#xff08;Logic Elements&#xff09;&#xff0c;由若干邏輯陣列塊&#xff08…

【typenum】 21 類型級別計算最大公約數(Gcd)

一、源碼 代碼實現了一個在類型級別計算最大公約數&#xff08;GCD&#xff09;的系統 定義&#xff08;type_operators.rs&#xff09; /// A **type operator** that computes the [greatest common divisor][gcd] of Self and Rhs. /// /// [gcd]: https://en.wikipedia.org…

如何為 Visual Studio 2019 安裝 WDK

我用nmake編譯代碼提示錯誤&#xff1a;fatal error U1052: 未找到文件“\makefile.def”&#xff0c;經過排查發現是代碼依賴WDK&#xff0c;所以研究了一下WDK的安裝步驟&#xff0c;下面是具體步驟&#xff1a; 請遵循以下步驟來為你的 VS2019 搭建完整的驅動開發環境&…

使用 Apache Flink CDC 3.0 實現 MySQL 到 Elasticsearch 的數據同步

下面我將創建一個完整的 Spring Boot 項目&#xff0c;使用 Flink CDC 3.0 基于 MySQL 的 binlog 實現數據同步到 Elasticsearch。 項目概述 這個項目將&#xff1a; 使用 Flink CDC 連接 MySQL 并讀取 binlog處理數據變化&#xff08;插入、更新、刪除&#xff09;將數據同步到…

Web網站的運行原理2

請求Web網站的文件-HTTP 可以使用HTTP協議在Web瀏覽器和Web服務器應用程序之間傳輸Web網頁的文件。 在進行HTTP傳輸之前&#xff0c;需要先在Web瀏覽器和Web服務器應用程序之間建立TCP連接。 使用HTTP請求可以要求Web瀏覽器向Web服務器應用程序傳輸文件。 傳輸Web網站的文件-HT…

論文閱讀:Do As I Can, Not As I Say: Grounding Language in Robotic Affordances

地址&#xff1a;Do As I Can, Not As I Say: Grounding Language in Robotic Affordances 摘要 大型語言模型&#xff08;LLM&#xff09;能夠編碼豐富的世界語義知識&#xff0c;這類知識對于機器人執行自然語言表達的高層級、時間擴展指令具有重要價值。然而&#xff0c;語…