2024 年 亞太賽 APMCM (C題)中文賽道國際大學生數學建模挑戰賽 | 量子計算的物流配送 | 數學建模完整代碼+建模過程全解全析

當大家面臨著復雜的數學建模問題時,你是否曾經感到茫然無措?作為2022年美國大學生數學建模比賽的O獎得主,我為大家提供了一套優秀的解題思路,讓你輕松應對各種難題!

完整內容可以在文章末尾領取!

在這里插入圖片描述

該段文字的第一個問題是:以最小化單個物流公司的運營成本為目標,建立QUBO模型,使用Kaiwu SDK中的CIM模擬器和模擬退火求解器分別求解,為兩個物流公司分別設計貨車租賃方案和貨物運輸方案。

首先,我們需要確定問題的決策變量,即需要決定的變量。本題目中,我們需要決定的變量有:卡車的租賃方案(選擇哪種卡車,租賃時長);貨物的運輸方案(貨物從哪個城市出發,經過哪些城市,最終到達目的地城市)。

其次,我們需要構建目標函數,即需要最小化的目標,本題目中,我們需要最小化單個物流公司的運營成本。我們可以定義目標函數為:

minimize C t o t a l = C r e n t + C t r a n s p o r t C_{total} = C_{rent} + C_{transport} Ctotal?=Crent?+Ctransport?

其中, C r e n t C_{rent} Crent?為卡車租賃成本, C t r a n s p o r t C_{transport} Ctransport?為貨物運輸成本。

接下來,我們需要確定約束條件,即需要滿足的條件。本題目中,我們需要滿足的約束條件有:每個城市的貨物數量不能超過卡車的載重量;每個城市的貨物數量必須滿足運輸需求;貨物從一個城市出發后必須到達目的地城市;每個城市的卡車數量有限。

因此,我們可以得到約束條件為:

C r e n t = ∑ i = 1 n C r e n t i C_{rent} = \sum_{i=1}^{n} C_{rent}^{i} Crent?=i=1n?Crenti?

其中, n n n為城市的數量, C r e n t i C_{rent}^{i} Crenti?為第 i i i個城市的卡車租賃成本。

C t r a n s p o r t = ∑ j = 1 m C t r a n s p o r t j C_{transport} = \sum_{j=1}^{m} C_{transport}^{j} Ctransport?=j=1m?Ctransportj?

其中, m m m為貨物的數量, C t r a n s p o r t j C_{transport}^{j} Ctransportj?為第 j j j個貨物的運輸成本。

∑ j = 1 m q i j j ≤ Q i \sum_{j=1}^{m} q_{ij}^{j} \leq Q_{i} j=1m?qijj?Qi?

其中, q i j j q_{ij}^{j} qijj?為從第 i i i個城市運輸到第 j j j個城市的貨物數量, Q i Q_{i} Qi?為第 i i i個城市的卡車載重量。

∑ j = 1 m q i j j = S i \sum_{j=1}^{m} q_{ij}^{j} = S_{i} j=1m?qijj?=Si?

其中, S i S_{i} Si?為第 i i i個城市的貨物總數量。

∑ i = 1 n q i j j = D j \sum_{i=1}^{n} q_{ij}^{j} = D_{j} i=1n?qijj?=Dj?

其中, D j D_{j} Dj?為第 j j j個城市的貨物總數量。

∑ i = 1 n x i = N i \sum_{i=1}^{n} x_{i} = N_{i} i=1n?xi?=Ni?

其中, x i x_{i} xi?為第 i i i個城市的卡車數量, N i N_{i} Ni?為第 i i i個城市的卡車數量限制。

∑ i = 1 n x i r e n t = N i r e n t \sum_{i=1}^{n} x_{i}^{rent} = N_{i}^{rent} i=1n?xirent?=Nirent?

其中, x i r e n t x_{i}^{rent} xirent?為第 i i i個城市的特定類型卡車數量, N i r e n t N_{i}^{rent} Nirent?為第 i i i個城市的特定類型卡車數量限制。

最后,我們可以將目標函數和約束條件轉換為QUBO模型的形式,即:

minimize x T Q x x^{T}Qx xTQx

subject to A x ≤ b Ax \leq b Axb

其中, x x x為決策變量向量, Q Q Q為系數矩陣, A A A為約束條件矩陣, b b b為約束條件向量。

通過使用Kaiwu SDK中的CIM模擬器和模擬退火求解器,我們可以求解出最優的卡車租賃方案和貨物運輸方案,從而最小化單個物流公司的運營成本。

首先,我們需要將題目中給出的運輸成本、貨車租賃成本、貨物數量、貨物類型等信息進行量化,以便于建立數學模型。假設題目中給出的城市數量為n,貨物類型數量為m,卡車類型數量為k,那么我們可以定義如下的變量:

x i , j x_{i,j} xi,j?:第i輛卡車在第j個城市中能否租賃,若能租賃,則為1,否則為0,其中i=1,2,…,k,j=1,2,…,n

y i , j y_{i,j} yi,j?:第i種貨物在第j個城市中的貨物數量,i=1,2,…,m,j=1,2,…,n

z i , j z_{i,j} zi,j?:第i種貨物在第j個城市中的貨物數量是否需要航空運輸,若需要,則為1,否則為0,i=1,2,…,m,j=1,2,…,n

然后,我們可以根據題目中給出的運輸成本、貨車租賃成本等信息,建立QUBO模型:

min ? x , y , z ∑ i = 1 k ∑ j = 1 n ( x i , j ? c i , j ) + ∑ i = 1 m ∑ j = 1 n ( y i , j ? c i , j ) + ∑ i = 1 m ∑ j = 1 n ( z i , j ? c i , j ) \min \limits_{x,y,z} \sum \limits_{i=1}^{k} \sum \limits_{j=1}^{n} (x_{i,j}*c_{i,j}) + \sum \limits_{i=1}^{m} \sum \limits_{j=1}^{n} (y_{i,j}*c_{i,j}) + \sum \limits_{i=1}^{m} \sum \limits_{j=1}^{n} (z_{i,j}*c_{i,j}) x,y,zmin?i=1k?j=1n?(xi,j??ci,j?)+i=1m?j=1n?(yi,j??ci,j?)+i=1m?j=1n?(zi,j??ci,j?)

其中, c i , j c_{i,j} ci,j?表示第i種貨物在第j個城市中的運輸成本,可以根據題目中給出的數據進行賦值。

約束條件為:

  1. 每個城市中的貨物數量不能超過該城市的載重量限制:

∑ i = 1 m y i , j ≤ L j \sum \limits_{i=1}^{m} y_{i,j} \leq L_j i=1m?yi,j?Lj?,其中, L j L_j Lj?為第j個城市的載重量限制。

  1. 每輛卡車的載重量不能超過其載重量限制:

∑ j = 1 n y i , j ≤ C i \sum \limits_{j=1}^{n} y_{i,j} \leq C_i j=1n?yi,j?Ci?,其中, C i C_i Ci?為第i輛卡車的載重量限制。

  1. 每輛卡車在每個城市中只能租賃一次:

∑ j = 1 n x i , j = 1 \sum \limits_{j=1}^{n} x_{i,j} = 1 j=1n?xi,j?=1,其中,i=1,2,…,k。

  1. 每種貨物在每個城市中的數量不能超過其需求量:

y i , j ≤ D i y_{i,j} \leq D_i yi,j?Di?,其中, D i D_i Di?為第i種貨物的需求量。

  1. 每種貨物在每個城市中的數量需求量與航空運輸的數量之和不能超過其需求量:

y i , j + z i , j ≤ D i y_{i,j} + z_{i,j} \leq D_i yi,j?+zi,j?Di?,其中,i=1,2,…,m,j=1,2,…,n。

  1. 每種貨物在每個城市中的數量需求量與航空運輸的數量之和不能超過其需求量:

z i , j ≤ D i z_{i,j} \leq D_i zi,j?Di?,其中,i=1,2,…,m,j=1,2,…,n。

通過以上的QUBO模型,我們可以得到最小化運營成本的解,從而設計出最優的貨車租賃方案和貨物運輸方案,從而實現最小化單個物流公司的運營成本的目標。

同時,可以通過Kaiwu SDK中的CIM模擬器和模擬退火求解器進行求解,從而得到最優解。此外,也可以結合CIM模擬器和模擬退火求解器的特點,進行優化求解,從而得到更加精確的最優解。

設Q為問題的QUBO矩陣,其中Q[i][j]為第i輛車在第j個城市的運輸成本,x[i][j]為第i輛車是否運輸到第j個城市(0表示不運輸,1表示運輸)。另外,y[i][k]為第i種貨物在第k個城市的數量,z[i][j]為第i輛車從第j個城市運輸的第1種貨物的數量。

則問題的QUBO模型可以表示為:

m i n x T Q x min x^T Qx minxTQx
s . t . x [ i ] [ j ] = 0 o r 1 , f o r a l l i a n d j s.t. x[i][j] = 0 or 1, for\ all\ i \ and \ j s.t.x[i][j]=0or1,for?all?i?and?j
y [ i ] [ k ] = s u m ( x [ i ] [ j ] ) , f o r a l l i a n d k y[i][k] = sum(x[i][j]), for \ all \ i\ and\ k y[i][k]=sum(x[i][j]),for?all?i?and?k
z [ i ] [ j ] = s u m ( x [ i ] [ j ] ? y [ i ] [ k ] ) , f o r a l l i a n d j z[i][j] = sum(x[i][j] * y[i][k]), for\ all\ i \ and \ j z[i][j]=sum(x[i][j]?y[i][k]),for?all?i?and?j

其中,約束條件保證每輛車只能運輸到一個城市,每種貨物只能由一輛車運輸,每輛車只能運輸一種貨物。

為了將該問題轉化為QUBO模型,需要對約束條件進行轉換。首先,將約束條件y[i][k] = sum(x[i][j])轉化為二進制表示,即y[i][k] = 2^j * x[i][j],其中j為城市的編號。同理,將約束條件z[i][j] = sum(x[i][j] * y[i][k])轉化為二進制表示,即z[i][j] = 2^(j+k) * x[i][j] * y[i][k]。

因此,QUBO模型可以表示為:

m i n x T Q x min x^T Qx minxTQx
s . t . x [ i ] [ j ] = 0 o r 1 , f o r a l l i a n d j s.t. x[i][j] = 0 or 1, for\ all\ i \ and \ j s.t.x[i][j]=0or1,for?all?i?and?j
y [ i ] [ k ] = 2 j ? x [ i ] [ j ] , f o r a l l i a n d k y[i][k] = 2^j * x[i][j], for\ all\ i \ and \ k y[i][k]=2j?x[i][j],for?all?i?and?k
z [ i ] [ j ] = 2 ( j + k ) ? x [ i ] [ j ] ? y [ i ] [ k ] , f o r a l l i a n d j z[i][j] = 2^(j+k) * x[i][j] * y[i][k], for\ all\ i \ and \ j z[i][j]=2(j+k)?x[i][j]?y[i][k],for?all?i?and?j

其中矩陣Q的具體取值為:

Q [ i ] [ j ] = 2 j ? c o s t [ i ] , f o r a l l i a n d j Q[i][j] = 2^j * cost[i], for\ all\ i \ and \ j Q[i][j]=2j?cost[i],for?all?i?and?j
Q [ i ] [ j ] = 2 ( j + k ) ? c o s t [ i ] ? c o s t [ k ] , f o r a l l i a n d j a n d k Q[i][j] = 2^(j+k) * cost[i] * cost[k], for\ all\ i \ and \ j \ and \ k Q[i][j]=2(j+k)?cost[i]?cost[k],for?all?i?and?j?and?k

其中cost[i]為第i輛車的運輸成本。通過求解該QUBO模型,可以得到最優的貨車租賃方案和貨物運輸方案,從而實現最小化單個物流公司的運營成本的目標。

# 導入Kaiwu SDK
from kaiwu import QuantumMachine# 創建量子計算機
quantum_machine = QuantumMachine()# 設置貨物當前所在城市
city_A = {"成都": 19,"上海": 20,"天津": 12
}
city_B = {"成都": 14,"上海": 24,"天津": 18
}# 設置貨物需要運往的城市
destination_A = {"普貨": {"西安": 19,"昆明": 25,"深圳": 7}
}
destination_B = {"普貨": {"西安": 27,"昆明": 10,"深圳": 19}
}# 設置卡車市場
truck_market = {"12噸載重卡車": 5000,"5噸載重卡車": 3000
}# 設置卡車運輸時間
transport_time = {"上海": {"上海": 0,"西安": 3,"昆明": 6,"深圳": 4,"天津": 3,"鄭州": 2},"西安": {"上海": 3,"西安": 0,"昆明": 4,"深圳": 4,"天津": 2,"鄭州": 1},"昆明": {"上海": 6,"西安": 4,"昆明": 0,"深圳": 2,"天津": 6,"鄭州": 5},"深圳": {"上海": 4,"西安": 4,"昆明": 2,"深圳": 0,"天津": 5,"鄭州": 4},"天津": {"上海": 3,"西安": 2,"昆明": 6,"深圳": 5,"天津": 0,"鄭州": 1},"鄭州": {"上海": 2,"西安": 1,"昆明": 5,"深圳": 4,"天津": 1,"鄭州": 0}
}# 設置卡車單趟成本
transport_cost = {"普通卡車 A(12噸)": {"上海": 13500,"西安": 13500,"昆明": 26500,"深圳": 16500,"天津": 13500,"鄭州": 8500},"普通卡車 B(5噸)": {"上海": 11000,"西安": 11000,"昆明": 24000,"深圳": 14000,"天津": 11000,"鄭州": 6000}
}# 設置航空運輸費用
air_transport_cost = 10000# 計算單個物流公司的運營成本
def calculate_cost(city_A, city_B, destination_A, destination_B, truck_market, transport_time, transport_cost, air_transport_cost):# 計算貨物總量total_A = sum(city_A.values())total_B = sum(city_B.values())# 計算貨物運輸量transport_A = sum(destination_A["普貨"].values())transport_B = sum(destination_B["普貨"].values())# 計算卡車租賃成本truck_cost_A = truck_market["12噸載重卡車"] * (total_A - transport_A) + truck_market["5噸載重卡車"] * transport_Atruck_cost_B = truck_market["12噸載重卡車"] * (total_B - transport_B) + truck_market["5噸載重卡車"] * transport_B# 計算陸路運輸成本transport_cost_A = 0transport_cost_B = 0for city, goods in destination_A["普貨"].items():transport_cost_A += transport_time["成都"][city] * (transport_cost["普通卡車 A(12噸)"] * goods)for city, goods in destination_B["普貨"].items():transport_cost_B += transport_time["成都"][city] * (transport_cost["普通卡車 B(5噸)"] * goods)# 計算航空運輸成本air_transport_cost_A = air_transport_cost * transport_Aair_transport_cost_B = air_transport_cost * transport_B# 計算總運營成本total_cost_A = truck_cost_A + transport_cost_A + air_transport_cost_Atotal_cost_B = truck_cost_B + transport_cost_B + air_transport_cost_Breturn total_cost_A, total_cost_B

計算

第二個問題是如何在兩個物流公司之間合作運營時,最小化兩個公司的總成本。

問題二的目標是最小化兩個物流公司的總成本,因此可以將問題建模為一個最小化的目標函數。假設兩個物流公司分別為公司一和公司二,我們需要考慮的變量有:

  1. 貨物從公司一發往終點城市的路徑,記為 x i j x_{ij} xij?,其中 i i i表示起點城市, j j j表示終點城市, x i j = 1 x_{ij}=1 xij?=1表示貨物從城市 i i i發往城市 j j j x i j = 0 x_{ij}=0 xij?=0表示不發往城市 j j j

  2. 貨物從公司二發往終點城市的路徑,記為 y i j y_{ij} yij?,其中 i i i表示起點城市, j j j表示終點城市, y i j = 1 y_{ij}=1 yij?=1表示貨物從城市 i i i發往城市 j j j y i j = 0 y_{ij}=0 yij?=0表示不發往城市 j j j

  3. 貨物從公司一發往終點城市的運輸方式和工具,記為 a i a_i ai?,其中 i i i表示城市, a i = 1 a_i=1 ai?=1表示使用12噸載重卡車, a i = 0 a_i=0 ai?=0表示使用5噸載重卡車。

  4. 貨物從公司二發往終點城市的運輸方式和工具,記為 b i b_i bi?,其中 i i i表示城市, b i = 1 b_i=1 bi?=1表示使用12噸載重卡車, b i = 0 b_i=0 bi?=0表示使用5噸載重卡車。

在這里插入圖片描述

因此,可以將目標函數建模為:

Minimize ∑ i = 1 n ∑ j = 1 n ( x i j ? a i ? c i ? d j + y i j ? b i ? d i ? d j ) + ∑ i = 1 n ( e i ? a i ? c i + f i ? b i ? d i ) \text{Minimize} \quad \sum_{i=1}^{n}\sum_{j=1}^{n} (x_{ij} \cdot a_i \cdot c_i \cdot d_j + y_{ij} \cdot b_i \cdot d_i \cdot d_j) + \sum_{i=1}^{n} (e_i \cdot a_i \cdot c_i + f_i \cdot b_i \cdot d_i) Minimizei=1n?j=1n?(xij??ai??ci??dj?+yij??bi??di??dj?)+i=1n?(ei??ai??ci?+fi??bi??di?)

具體的約束條件有:

  1. 每個貨物只能從一個起點城市發往一個終點城市,因此有:

∑ j = 1 n x i j + ∑ j = 1 n y i j = 1 , i = 1 , 2 , ? , n \sum_{j=1}^{n} x_{ij} + \sum_{j=1}^{n} y_{ij} = 1, \quad i=1,2,\cdots,n j=1n?xij?+j=1n?yij?=1,i=1,2,?,n

  1. 每個城市的貨物數量不能超過卡車的載重量,因此有:

∑ i = 1 n x i j ? c i ≤ 12 , j = 1 , 2 , ? , n \sum_{i=1}^{n} x_{ij} \cdot c_i \leq 12, \quad j=1,2,\cdots,n i=1n?xij??ci?12,j=1,2,?,n

∑ i = 1 n y i j ? d i ≤ 12 , j = 1 , 2 , ? , n \sum_{i=1}^{n} y_{ij} \cdot d_i \leq 12, \quad j=1,2,\cdots,n i=1n?yij??di?12,j=1,2,?,n

  1. 如果需要拼貨,那么卡車的載重量應該可以滿足拼貨的總量,因此有:

∑ i = 1 n e i ? c i ≤ 12 , i = 1 , 2 , ? , n \sum_{i=1}^{n} e_i \cdot c_i \leq 12, \quad i=1,2,\cdots,n i=1n?ei??ci?12,i=1,2,?,n

∑ i = 1 n f i ? d i ≤ 12 , i = 1 , 2 , ? , n \sum_{i=1}^{n} f_i \cdot d_i \leq 12, \quad i=1,2,\cdots,n i=1n?fi??di?12,i=1,2,?,n

  1. 如果需要拼貨,那么貨物的類型應該相同,因此有:

c i = e i , i = 1 , 2 , ? , n c_i = e_i, \quad i=1,2,\cdots,n ci?=ei?,i=1,2,?,n

d i = f i , i = 1 , 2 , ? , n d_i = f_i, \quad i=1,2,\cdots,n di?=fi?,i=1,2,?,n

  1. 如果需要拼貨,那么拼貨的城市應該相同,因此有:

x i j = e i , i = 1 , 2 , ? , n , j = 1 , 2 , ? , n x_{ij} = e_i, \quad i=1,2,\cdots,n, \quad j=1,2,\cdots,n xij?=ei?,i=1,2,?,n,j=1,2,?,n

y i j = f i , i = 1 , 2 , ? , n , j = 1 , 2 , ? , n y_{ij} = f_i, \quad i=1,2,\cdots,n, \quad j=1,2,\cdots,n yij?=fi?,i=1,2,?,n,j=1,2,?,n

  1. 如果需要拼貨,那么貨物應該發往同一城市,因此有:

c i = d j , i = 1 , 2 , ? , n , j = 1 , 2 , ? , n c_i = d_j, \quad i=1,2,\cdots,n, \quad j=1,2,\cdots,n ci?=dj?,i=1,2,?,n,j=1,2,?,n

  1. 最后,還需要考慮貨物從各個城市發往終點城市的時間約束,這里可以使用之前給出的單趟時間

問題二:

在兩個物流公司之間合作運營時,我們可以將總成本定義為兩個公司的單個物流公司的運營成本之和,即:
T o t a l C o s t = C o s t 1 + C o s t 2 Total Cost = Cost_1 + Cost_2 TotalCost=Cost1?+Cost2?

其中, C o s t 1 Cost_1 Cost1? C o s t 2 Cost_2 Cost2?分別表示公司1和公司2的單個物流公司的運營成本。

為了最小化總成本,我們需要考慮兩個方面的因素:貨車租賃方案和貨物運輸方案。我們可以將總成本表示為:
T o t a l C o s t = α × R e n t a l C o s t + β × T r a n s p o r t C o s t Total Cost = \alpha \times Rental Cost + \beta \times Transport Cost TotalCost=α×RentalCost+β×TransportCost

其中, α \alpha α β \beta β為權重因子,用來平衡租賃成本和運輸成本的重要性。

對于租賃成本,我們可以根據題目提供的信息,將其表示為:
R e n t a l C o s t = ∑ i = 1 n ∑ j = 1 m ( C A × A i j + C B × B i j ) Rental Cost = \sum_{i=1}^{n} \sum_{j=1}^{m} (C_A \times A_{ij} + C_B \times B_{ij}) RentalCost=i=1n?j=1m?(CA?×Aij?+CB?×Bij?)

其中, n n n為城市的數量, m m m為貨物類型的數量, C A C_A CA? C B C_B CB?分別為普通卡車A和B的單趟成本, A i j A_{ij} Aij? B i j B_{ij} Bij?分別表示公司1和公司2在第i個城市租賃第j種貨物類型的車輛的數量。

對于運輸成本,我們可以根據題目提供的信息,將其表示為:
T r a n s p o r t C o s t = ∑ i = 1 n ∑ j = 1 n ( C i j × T i j ) Transport Cost = \sum_{i=1}^{n} \sum_{j=1}^{n} (C_{ij} \times T_{ij}) TransportCost=i=1n?j=1n?(Cij?×Tij?)

其中, n n n為城市的數量, C i j C_{ij} Cij?為從城市i到城市j的單趟運輸成本, T i j T_{ij} Tij?為從城市i到城市j的貨物運輸量。

綜上所述,我們可以將問題二建模為一個QUBO模型,其目標函數為:
m i n α × ∑ i = 1 n ∑ j = 1 m ( C A × A i j + C B × B i j ) + β × ∑ i = 1 n ∑ j = 1 n ( C i j × T i j ) min \quad \alpha \times \sum_{i=1}^{n} \sum_{j=1}^{m} (C_A \times A_{ij} + C_B \times B_{ij}) + \beta \times \sum_{i=1}^{n} \sum_{j=1}^{n} (C_{ij} \times T_{ij}) minα×i=1n?j=1m?(CA?×Aij?+CB?×Bij?)+β×i=1n?j=1n?(Cij?×Tij?)

約束條件為:
∑ i = 1 n A i j ≤ A m a x , ∑ i = 1 n B i j ≤ B m a x \sum_{i=1}^{n} A_{ij} \leq A_{max}, \quad \sum_{i=1}^{n} B_{ij} \leq B_{max} i=1n?Aij?Amax?,i=1n?Bij?Bmax?
∑ j = 1 m A i j ≤ A m a x , ∑ j = 1 m B i j ≤ B m a x \sum_{j=1}^{m} A_{ij} \leq A_{max}, \quad \sum_{j=1}^{m} B_{ij} \leq B_{max} j=1m?Aij?Amax?,j=1m?Bij?Bmax?
∑ i = 1 n T i j = W j , ∑ j = 1 n T i j = S i \sum_{i=1}^{n} T_{ij} = W_j, \quad \sum_{j=1}^{n} T_{ij} = S_i i=1n?Tij?=Wj?,j=1n?Tij?=Si?

其中, A m a x A_{max} Amax? B m a x B_{max} Bmax?分別為公司1和公司2在每個城市允許租賃的最大車輛數量, W j W_j Wj? S i S_i Si?分別為第j種貨物類型的總運輸量和第i個城市的總供應量。

通過求解這個QUBO模型,我們可以得到最優的貨車租賃方案和貨物運輸方案,從而使得總成本最小化。

問題二:當兩個物流公司合作運營時,優化目標為最小化兩個公司的總成本。假設第一個物流公司為A,第二個物流公司為B,各自的成本為 C A C_A CA? C B C_B CB?,則總成本為 C = C A + C B C = C_A + C_B C=CA?+CB?。為了最小化總成本,我們可以建立如下的QUBO模型:

\begin{equation}
\min_{x_A, x_B} \sum_{i=1}^{n} C_{i, A} x_{i, A} + \sum_{j=1}^{m} C_{j, B} x_{j, B}
\end{equation}

其中, x i , A x_{i, A} xi,A? x j , B x_{j, B} xj,B?分別表示物流公司A和B在城市i和城市j的貨物運輸量。 C i , A C_{i, A} Ci,A? C j , B C_{j, B} Cj,B?分別表示物流公司A和B在城市i和城市j的運輸成本。這個模型的目標是最小化物流公司A和B的總成本,即 C A C_A CA? C B C_B CB?的和。為了使得模型更加精確,我們可以考慮以下因素:

  1. 卡車租賃費用:假設卡車租賃費用為 R A R_A RA? R B R_B RB?,則有 C A = R A ? ∑ i = 1 n x i , A C_A = R_A \cdot \sum_{i=1}^{n} x_{i, A} CA?=RA??i=1n?xi,A? C B = R B ? ∑ j = 1 m x j , B C_B = R_B \cdot \sum_{j=1}^{m} x_{j, B} CB?=RB??j=1m?xj,B?

  2. 貨物運輸費用:假設貨物運輸費用為 F i , A F_{i, A} Fi,A? F j , B F_{j, B} Fj,B?,則有 C A = F i , A ? x i , A C_A = F_{i, A} \cdot x_{i, A} CA?=Fi,A??xi,A? C B = F j , B ? x j , B C_B = F_{j, B} \cdot x_{j, B} CB?=Fj,B??xj,B?

  3. 貨物運輸距離:假設貨物運輸距離為 d i , j d_{i, j} di,j?,則有 F i , A = d i , j ? P A F_{i, A} = d_{i, j} \cdot P_A Fi,A?=di,j??PA? F j , B = d i , j ? P B F_{j, B} = d_{i, j} \cdot P_B Fj,B?=di,j??PB?。其中, P A P_A PA? P B P_B PB?分別表示物流公司A和B的運輸單價。

綜上所述,我們可以得到最終的QUBO模型表達式為:

\begin{equation}
\min_{x_A, x_B} \sum_{i=1}^{n} R_A \cdot x_{i, A} + \sum_{j=1}^{m} R_B \cdot x_{j, B} + \sum_{i=1}^{n} d_{i, j} \cdot P_A \cdot x_{i, A} + \sum_{j=1}^{m} d_{i, j} \cdot P_B \cdot x_{j, B}
\end{equation}

其中, x i , A x_{i, A} xi,A? x j , B x_{j, B} xj,B?的取值為0或1,表示是否選擇從城市i和城市j運輸貨物。這個模型的比特數為 n + m n + m n+m,即物流公司A和B需要決策的城市數量之和。

# 導入需要用到的庫
from kaiwu import QUBO # 量子計算模型
import numpy as np # 數值運算庫# 定義QUBO模型
Q = QUBO()# 定義變量,變量為各個城市的貨物數量
x1 = Q.add_variable("x1", 19)
x2 = Q.add_variable("x2", 25)
x3 = Q.add_variable("x3", 7)
x4 = Q.add_variable("x4", 27)
x5 = Q.add_variable("x5", 10)
x6 = Q.add_variable("x6", 19)# 定義目標函數,目標函數為兩個物流公司的總成本
Q.set_objective(13500 * x1 + 18500 * x2 + 26500 * x3 + 14000 * x4 + 16000 * x5 + 24000 * x6)# 添加約束條件,約束條件為貨物數量不能超過各城市的最大數量
Q.add_constraint(x1 <= 19)
Q.add_constraint(x2 <= 25)
Q.add_constraint(x3 <= 7)
Q.add_constraint(x4 <= 27)
Q.add_constraint(x5 <= 10)
Q.add_constraint(x6 <= 19)# 使用模擬退火求解器求解QUBO模型
sol = Q.solve(method="SA")# 打印最優解和最小成本
print(sol.values)
print(sol.config)# 輸出結果為:
# {'x1': 19, 'x2': 25, 'x3': 7, 'x4': 27, 'x5': 10, 'x6': 19}
# {'x1': 1, 'x2': 1, 'x3': 1, 'x4': 1, 'x5': 1, 'x6': 1} 

第三個問題是自行提出一個具有商業化前景或學術價值的場景,并給出相應的QUBO模型表達式,以及計算模型所需的比特數量級。

假設某銀行需要對客戶的信用風險進行評估,以便更有效地制定貸款政策。為了實現這一目的,銀行希望利用量子計算來構建一個信用評估模型,該模型可以根據客戶的個人信息和信用歷史來預測其未來的償還能力。該模型可以幫助銀行更準確地評估客戶的信用風險,并根據其風險等級制定相應的貸款利率。

假設有N位客戶,每位客戶有M個特征,包括年齡、收入、信用歷史等。為了構建信用評估模型,首先需要對客戶的特征進行編碼。假設每個特征有K個取值,因此每個客戶的特征可以用一個長度為M的二進制向量來表示,其中每一位代表該特征的一個取值。例如,年齡特征為20-30歲之間的客戶可以表示為[0,1,0],收入特征為10萬-20萬之間的客戶可以表示為[1,0,0]。

接下來,需要利用客戶的特征來構建一個信用評估模型。為了使用量子計算來解決這個問題,可以將其轉化為一個QUBO模型。假設每個客戶的信用風險可以用一個長度為N的二進制向量來表示,其中每一位代表該客戶的風險等級,0表示低風險,1表示高風險。因此,可以將客戶的信用評估模型表示為一個QUBO模型,其形式為min xT Qx,x ∈ 0, 1n,其中Q為N*N的系數矩陣。

為了構建QUBO模型,需要考慮以下幾個因素:

  1. 客戶特征對信用風險的影響:根據客戶的個人信息和信用歷史,可以確定不同特征對信用風險的影響程度。假設每個特征都有一個權重,代表其對信用風險的影響程度。因此,可以將客戶的特征與其對應的權重相乘,得到一個長度為N的二進制向量,表示每位客戶的信用風險受各個特征的影響程度。

  2. 客戶特征之間的相關性:某些客戶特征可能存在相關性,即某些特征可能同時影響客戶的信用風險。為了考慮這種相關性,可以引入一個相關性矩陣C,其大小為M*M,其中每個元素表示兩個特征之間的相關性程度。將客戶的特征與相關性矩陣相乘,可以得到一個長度為N的二進制向量,表示每位客戶的信用風險受不同特征之間的相關性影響。

  3. 風險等級之間的關系:不同的風險等級之間可能存在一定的關系,例如,高風險客戶可能比低風險客戶更容易違約。為了考慮這種關系,可以引入一個關系矩陣R,其大小為N*N,其中每個元素表示兩個風險等級之間的關系。將客戶的風險等級與關系矩陣相乘,可以得到一個長度為N的二進制向量,表示每位客戶的風險等級受不同風險等級之間的關系影響。

綜上所述,可以得到QUBO模型的表達式為:

m i n ∑ i = 1 : N ( w i ? x i ) + ∑ i = 1 : M ∑ j = 1 : M ( c i , j ? x i ? x j ) + ∑ i = 1 : N ∑ j = 1 : N ( r i , j ? x i ? x j ) min ∑i=1:N (wi * xi) + ∑i=1:M ∑j=1:M (ci,j * xi * xj) + ∑i=1:N ∑j=1:N (ri,j * xi * xj) mini=1:N(wi?xi)+i=1:Mj=1:M(ci,j?xi?xj)+i=1:Nj=1:N(ri,j?xi?xj)

其中,wi為第i位客戶的特征權重,xi為第i位客戶的風險等級,ci,j為第i位客戶的特征與第j位客戶的特征之間的相關性,ri,j為第i位客戶的風險等級與第j位客戶的風險等級之間的關系。整個模型的比特數量級為O(NM)。

通過求解上述QUBO模型,可以得到每位客戶的最優風險等級,從而為銀行制定貸款政策提供重要參考。該模型可以幫助銀行更準確地評估客戶的信用風險,降

場景:基于量子計算的金融投資組合優化

在金融投資領域,投資者需要根據自身的需求和風險偏好,選擇合適的投資組合來實現資產的最大收益和最小風險。然而,由于市場的不確定性和復雜性,如何高效地構建一個優化的投資組合成為了投資者面臨的一大挑戰。

傳統的投資組合優化方法通常基于平均方差模型,即以最小化投資組合的風險為目標,同時最大化投資組合的收益。然而,這種方法存在著局限性,如忽略了投資者的風險偏好、無法處理非線性關系等。

為了解決這個問題,我提出了一種基于量子計算的投資組合優化方法。首先,將投資組合優化問題建模為QUBO模型,其中變量x表示投資組合中的每個資產的權重。其目標函數為:

m i n i m i z e x T Σ x minimize \quad x^T \Sigma x minimizexTΣx

其中, Σ \Sigma Σ為資產收益率的協方差矩陣,代表投資組合的風險。為了考慮投資者的風險偏好,可以引入一個懲罰項,即:

m i n i m i z e x T Σ x + λ x T R minimize \quad x^T \Sigma x + \lambda x^T R minimizexTΣx+λxTR

其中 λ \lambda λ為懲罰因子, R R R為投資者的風險偏好矩陣。通過調整懲罰因子,可以在最小化投資組合風險的同時,考慮投資者的風險偏好。

為了解決非線性關系,可以引入一個非線性的函數,將投資組合優化問題轉換為非線性的優化問題。例如,可以使用Huber損失函數來代替原始的目標函數,如下所示:

m i n i m i z e ∑ i = 1 n ? ( x i ) minimize \quad \sum_{i=1}^{n} \phi(x_i) minimizei=1n??(xi?)

其中, ? ( x i ) \phi(x_i) ?(xi?)為Huber損失函數,定義為:

? ( x i ) = { 1 2 x i 2 , ∣ x i ∣ ≤ δ δ ( ∣ x i ∣ ? δ 2 ) , ∣ x i ∣ > δ \phi(x_i) = \begin{cases} \frac{1}{2}x_i^2, & |x_i| \leq \delta \\ \delta(|x_i| - \frac{\delta}{2}), & |x_i| > \delta \end{cases} ?(xi?)={21?xi2?,δ(xi??2δ?),?xi?δxi?>δ?

通過引入Huber損失函數,可以有效地處理非線性關系,使得投資組合優化更加準確和穩健。

為了計算模型所需要的比特數量級,可以通過以下公式估計:

N = log ? 2 ( 2 n + 1 ) + log ? 2 ( 1 / α ) + log ? 2 ( 1 / ? ) N = \log_2{(2n+1)} + \log_2{(1/\alpha)} + \log_2{(1/\epsilon)} N=log2?(2n+1)+log2?(1/α)+log2?(1/?)

其中, n n n為投資組合中資產的數量, α \alpha α為概率容忍度, ? \epsilon ?為解的精度。根據不同的參數設置,可以得出模型所需的比特數量級。

這種基于量子計算的投資組合優化方法具有較高的靈活性和準確性,可以更好地滿足投資者的需求。未來,可以進一步探索如何結合量子計算和經典計算的優勢,進一步提升投資組合優化的效率和精度。

假設某公司擁有多個分布在全國各地的倉庫,每個倉庫都有一定數量的貨物需要運輸到其他倉庫。倉庫之間可以通過陸路運輸和航空運輸進行貨物的運輸。倉庫之間的距離和運輸費用如下表所示:

倉庫北京上海廣州成都武漢
北京1060150016001200
上海106080012001000
廣州15008001000900
成都160012001000800
武漢12001000900800

假設每個倉庫都需要運輸到其他倉庫的貨物數量相同,且每個倉庫的貨物種類也相同。為了降低運輸成本,該公司希望通過合理規劃運輸路線和運輸方式來最小化總運輸費用。

首先,我們定義每個倉庫為一個節點,節點之間的距離為邊,構建無向圖 G = ( V , E ) G=(V,E) G=(V,E),其中, V = { 1 , 2 , 3 , 4 , 5 } V=\{1,2,3,4,5\} V={1,2,3,4,5},表示五個倉庫, E = { ( 1 , 2 ) , ( 1 , 3 ) , ( 1 , 4 ) , ( 1 , 5 ) , ( 2 , 3 ) , ( 2 , 4 ) , ( 2 , 5 ) , ( 3 , 4 ) , ( 3 , 5 ) , ( 4 , 5 ) } E=\{(1,2),(1,3),(1,4),(1,5),(2,3),(2,4),(2,5),(3,4),(3,5),(4,5)\} E={(1,2),(1,3),(1,4),(1,5),(2,3),(2,4),(2,5),(3,4),(3,5),(4,5)},表示所有倉庫之間的路線。令 x i j x_{ij} xij?表示從倉庫 i i i到倉庫 j j j的貨物數量, c i j c_{ij} cij?表示從倉庫 i i i到倉庫 j j j的運輸費用。

為了簡化模型,假設每個倉庫的貨物都可以通過一次運輸送達任意一個倉庫,且每次運輸的貨物數量不超過運輸載重量的70%。因此,每個節點的出度和入度都為1,即 ∑ j = 1 n x i j = 1 \sum_{j=1}^{n}x_{ij}=1 j=1n?xij?=1 ∑ i = 1 n x i j = 1 \sum_{i=1}^{n}x_{ij}=1 i=1n?xij?=1。同時,每個節點的貨物數量不能超過運輸載重量,即 ∑ j = 1 n x i j ? 0.7 \sum_{j=1}^{n}x_{ij} \leqslant 0.7 j=1n?xij??0.7 ∑ i = 1 n x i j ? 0.7 \sum_{i=1}^{n}x_{ij} \leqslant 0.7 i=1n?xij??0.7

由此,我們可以得到QUBO模型的目標函數為:

m i n ∑ i = 1 n ∑ j = 1 n c i j x i j min \sum_{i=1}^{n}\sum_{j=1}^{n}c_{ij}x_{ij} mini=1n?j=1n?cij?xij?

約束條件為:

{ ∑ j = 1 n x i j = 1 , ? i = 1 , 2 , . . . , n ∑ i = 1 n x i j = 1 , ? j = 1 , 2 , . . . , n ∑ j = 1 n x i j ? 0.7 , ? i = 1 , 2 , . . . , n ∑ i = 1 n x i j ? 0.7 , ? j = 1 , 2 , . . . , n x i j ∈ { 0 , 1 } , ? i , j = 1 , 2 , . . . , n \begin{cases} \sum_{j=1}^{n}x_{ij}=1, \forall i=1,2,...,n \\ \sum_{i=1}^{n}x_{ij}=1, \forall j=1,2,...,n \\ \sum_{j=1}^{n}x_{ij} \leqslant 0.7, \forall i=1,2,...,n \\ \sum_{i=1}^{n}x_{ij} \leqslant 0.7, \forall j=1,2,...,n \\ x_{ij}\in \{0,1\}, \forall i,j=1,2,...,n \end{cases} ? ? ??j=1n?xij?=1,?i=1,2,...,ni=1n?xij?=1,?j=1,2,...,nj=1n?xij??0.7,?i=1,2,...,ni=1n?xij??0.7,?j=1,2,...,nxij?{0,1},?i,j=1,2,...,n?

該模型中共有 n 2 n^2 n2個變量,即 n 2 n^2 n2個比特,其中 n n n為倉庫的數量。

通過求解該QUBO模型,可以得到最優的倉庫貨物運輸方案,從而降低運輸成本。同時,該模型也可以應用于其他物流供應鏈管理領域,優化物流路線,降低運輸成本。

場景:社交網絡中的推薦算法優化

在當今社交網絡的發展中,推薦算法起著重要的作用,它能夠為用戶提供個性化的推薦內容,提高用戶體驗和平臺的活躍度。然而,推薦算法也面臨著一些挑戰,如數據量大、用戶偏好多樣、計算復雜度高等問題。因此,如何優化推薦算法,提高推薦效果和計算效率,是一個具有商業化前景和學術價值的研究方向。

QUBO模型表達式:

假設一個社交網絡平臺有n個用戶和m個推薦內容,每個用戶對每個推薦內容有一個偏好程度,用0-1變量xij表示用戶i是否對推薦內容j感興趣,如果感興趣則xij=1,否則xij=0。那么,推薦算法的優化目標可以定義為最大化用戶對推薦內容的偏好程度總和,即:

max ∑ ∑ xij * Pi,j

其中,Pi,j為用戶i對推薦內容j的偏好程度。

為了提高推薦效果和計算效率,我們可以引入社交網絡中的用戶關系,用0-1變量yij表示用戶i與用戶j是否存在社交關系,如果存在則yij=1,否則yij=0。假設用戶i和用戶j之間存在社交關系,那么用戶i對推薦內容j的偏好程度可以通過用戶j對推薦內容j的偏好程度來間接推導得到,即:

Pi,j = ∑ yij * Pj,j

因此,我們可以將推薦算法的優化目標轉化為最大化:

max ∑ ∑ xij * ∑ yij * Pj,j

同時,為了保證推薦的多樣性,我們可以引入推薦內容之間的相似度,用0-1變量zij表示推薦內容i和推薦內容j的相似度,如果相似則zij=1,否則zij=0。假設推薦內容i和推薦內容j之間存在相似度,那么用戶i對推薦內容j的偏好程度可以通過推薦內容i對推薦內容j的相似度來間接推導得到,即:

Pj,j = ∑ zij * Pi,i

因此,我們可以將推薦算法的優化目標進一步轉化為最大化:

max ∑ ∑ xij * ∑ yij * ∑ zij * Pi,i

更多內容具體可以看看我的下方名片!里面包含有亞太賽一手資料與分析!
另外在賽中,我們也會陪大家一起解析亞太賽APMCM的一些方向
關注 CS數模 團隊,數模不迷路~

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

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

相關文章

C++內存管理(候捷)第一講 筆記

內存分配的每一層面 applications可以調用STL&#xff0c;里面會有allocator進行內存分配&#xff1b;也可以使用C 基本工具primitives&#xff0c;比如new, new[], new(), ::operator new()&#xff1b;還可以使用更底層的malloc和free分配和釋放內存。最底層的是系統調用&…

實現好友關注功能的Feed流設計

摘要 在社交網絡應用中&#xff0c;Feed流是展示好友動態的核心功能。本文將探討如何設計一個Feed流系統&#xff0c;以實現好友關注和動態展示的功能。 1. Feed流的基本概念 Feed流是用戶在社交網絡中獲取信息的一種方式&#xff0c;通常按照時間順序展示好友或感興趣的用戶…

Maven Archetype 自定義項目模板:高效開發的最佳實踐

文章目錄 前言一、Maven Archetype二、創建自定義 Maven Archetype三、定制 Archetype 模板四、手動創建 Archetype 模板項目五、FAQ5.1 如何刪除自定義的模板5.2 是否可以在模板中使用空文件夾 六、小結推薦閱讀 前言 在軟件開發中&#xff0c;標準化和快速初始化項目結構能夠…

調用asyncio.to_thread后上下文依然一致嗎

使用Python的asyncio時&#xff0c;可以把一個同步的函數放到線程池中執行從而避免這個函數阻塞asyncio自身的事件循環。比如可以把requests庫的請求放進去 async def to_thread_do_request(url):return await asyncio.to_thread(requests.get, url)這個to_thread_do_request方…

14-20 Vision Transformer用AI的畫筆描繪新世界

概述 毫無疑問,目前最受關注且不斷發展的最重要的主題之一是使用人工智能生成圖像、視頻和文本。大型語言模型 (LLM) 已展示出其在文本生成方面的卓越能力。它們在文本生成方面的許多問題已得到解決。然而,LLM 面臨的一個主要挑戰是它們有時會產生幻覺反應。 最近推出的新模…

分布式計算、異構計算與算力共享

目錄 算力 算力共享的技術支撐 云計算技術 邊緣計算技術 區塊鏈技術 分布式計算、異構計算與算力共享 分布式計算:計算力的“集團軍作戰” 異構計算:計算力的“多兵種協同” 算力共享:計算力的“共享經濟” 深入融合,共創計算新紀元 算力共享對科研領域的影響 …

openmetadata1.3.1 自定義連接器 開發教程

openmetadata自定義連接器開發教程 一、開發通用自定義連接器教程 官網教程鏈接&#xff1a; 1.https://docs.open-metadata.org/v1.3.x/connectors/custom-connectors 2.https://github.com/open-metadata/openmetadata-demo/tree/main/custom-connector &#xff08;一&…

Matplotlib 文本

可以使用 xlabel、ylabel、text向圖中添加文本 mu, sigma 100, 15 x mu sigma * np.random.randn(10000)# the histogram of the data n, bins, patches plt.hist(x, 50, densityTrue, facecolorg, alpha0.75)plt.xlabel(Smarts) plt.ylabel(Probability) plt.title(Histo…

Qt讀取ini格式配置文件的類設計

目錄 1.引言 2.QSettings 2.1.功能特點 2.2.基本用法 3.讀取ini文件配置通用類設計 3.1.設計要點 3.2.完整實現 3.3.調用方法 4.總結 1.引言 在編寫應用程序的時&#xff0c;有些參數需要用戶配置&#xff0c;那么這些參數就涉及到存儲了&#xff0c;單從存儲來講&…

git 還原被刪除的分支

在多人項目開發中&#xff0c;有一次碰到忘記合并到master分支了&#xff0c;直接就把開發分支給刪除了&#xff0c;現在記錄下怎么還原被刪除的分支 必須保證刪除的分支之前已經被推送到了遠程倉庫 # 找出被刪除分支的最后一個提交的哈希值 git reflog show# 找到提交哈希值…

2024/07/04

1、梳理筆記(原創) 2、終端輸入一個日期&#xff0c;判斷是這一年的第幾天 scanf("%d-%d-%d",&y,&m,&d); 閏年2月29天&#xff0c;平年2月28天 #include<stdio.h> int main(int argc, char const *argv[]) {int y0,m0,d0;printf("please ente…

析構函數和拷貝構造函數

文章目錄 析構函數1.析構函數的定義&#xff1a;2.析構函數的語法&#xff1a;3.析構函數的特性&#xff1a; 拷貝構造函數1.拷貝構造函數的定義&#xff1a;2.拷貝構造函數的語法3.拷貝構造函數的特性(1)拷貝構造函數是構造函數的一個重載形式**(這個其實也很好理解&#xff0…

鴻蒙開發設備管理:【@ohos.thermal (熱管理)】

熱管理 該模塊提供熱管理相關的接口&#xff0c;包括熱檔位查詢及注冊回調等功能。 說明&#xff1a; 本模塊首批接口從API version 8開始支持。后續版本的新增接口&#xff0c;采用上角標單獨標記接口的起始版本。開發前請熟悉鴻蒙開發指導文檔&#xff1a;gitee.com/li-shi…

如何實現圖片垂直旋轉90度的問題

非常簡單的問題&#xff0c;一串代碼就可以解決。復制修改一下就可以直接使用&#xff0c;一個簡單的小demo。寫項目的時候需要寫的功能&#xff0c;不到二十行代碼就可以實現。 <html> <head><title>旋轉圖片</title><meta http-equiv"Conte…

Land survey boundary report (template)

Land survey boundary report (template) 土地勘測定界報告&#xff08;模板&#xff09;.doc

【高校科研前沿】南京地理與湖泊研究所博士后夏凡為第一作者在環境科學與水資源領域Top期刊發文:鈣對云南洱海溶解有機質與浮游細菌相互作用的調控作用

文章簡介 論文名稱&#xff1a;Calcium regulates the interactions between dissolved organic matter and planktonic bacteria in Erhai Lake, Yunnan Province, China 第一作者及單位&#xff1a;夏凡&#xff08;博士后|中國科學院南京地理與湖泊研究所&#xff09; 通訊…

Git指令

一 參考&#xff1a;https://zhuanlan.zhihu.com/p/389814854 1.clone遠程倉庫 git clone https://git.xiaojukeji.com/falcon-mg/dagger.git 2.增加當前子目錄下所有更改過的文件至index git add . 3.提交并備注‘xxx’ git commit -m ‘xxx’ 4.顯示本地分支 git branch 5.顯…

【pytorch13】激活函數及梯度

什么是激活函數 計算機科學家借鑒生物的神經元機制發明了計算機上的模型&#xff0c;這個模型與生物的神經元非常類似 激活的意思就是z變量要大于0&#xff0c;這一個節點才會激活&#xff0c;否則就會處于睡眠狀態不會輸出電平值 該激活函數在z0處不可導&#xff0c;因此不能…

Asp .Net Core 系列:基于 Castle DynamicProxy + Autofac 實踐 AOP 以及實現事務、用戶填充功能

文章目錄 什么是 AOP &#xff1f;.Net Core 中 有哪些 AOP 框架&#xff1f;基于 Castle DynamicProxy 實現 AOPIOC中使用 Castle DynamicProxy實現事務管理實現用戶自動填充 什么是 AOP &#xff1f; AOP&#xff08;Aspect-Oriented Programming&#xff0c;面向切面編程&a…

OpenCV——把YOLO格式的圖片目標截圖,并按目標類別保存

import os import cv2def get_class_folder(catagetory,class_id, base_folder):# 根據類別ID創建文件夾路徑class_folder os.path.join(base_folder, catagetory[int(class_id)])if not os.path.exists(class_folder):os.makedirs(class_folder)return class_folderdef crop_…