一、问题描述

要铺设一条 A1→A2→⋯→A15A_1 \rightarrow A_2 \rightarrow \cdots \rightarrow A_{15}A1A2A15 的输送天然气的主管道,如图 6.22 所示。经筛选后可以生产这种主管道钢管的钢厂有 S1,S2,⋯,S7S_1, S_2, \cdots, S_7S1,S2,,S7 。图中粗线表示铁路,单细线表示公路,双细线表示要铺设的管道(假设沿管道或者原来有公路,或者建有施工公路),圆圈表示火车站,每段铁路、公路和管道旁的阿拉伯数字表示里程(单位 km)。
在这里插入图片描述
为方便计,1km 主管道钢管称为 1 单位钢管。

一个钢厂如果承担制造这种钢管,至少需要生产 500 个单位。钢厂 SiS_iSi 在指定期限内能生产该钢管的最大数量为 sis_isi 个单位,钢管出厂销价 1 单位钢管为 pip_ipi 万元,见表 6.9;1 单位钢管的铁路运价见表 6.10。

							表 6.9 各钢管厂的供货上限及销价
i1234567
sis_isi80080010002000200020003000
pip_ipi160155155160155150160
							表 6.10 单位钢管的铁路运价
里程(km)≤300301~350351~400401~450451~500
运价(万元)2023262932
里程(km)501~600601~700701~800801~900901~1000
运价(万元)3744505560

1000km 以上每增加 1 至 100km 运价增加 5 万元。公路运输费用为 1 单位钢管每公里 0.1 万元(不足整公里部分按整公里计算)。钢管可由铁路、公路运往铺设地点(不只是运到点 A1,A2,⋯,A15A_1, A_2, \cdots, A_{15}A1,A2,,A15,而是管道全线)请制定一个主管道钢管的订购和运输计划,使总费用最小(给出总费用)。

二、问题分析

问题的建模目的是求一个主管道钢管的订购和运输策略,使总费用最小。首先,问题给出了 7 个供选择的钢厂,选择哪些?订购多少?是一个要解决的问题。其次,每一个钢厂到铺设地点大多都有多条可供选择的运输路线,应选择哪一条路线运输,取决于建模的目标。而目标总费用包含两个组成部分:订购费用和运输费用。订购费用取决于单价和订购数量,运输费用取决于往哪里运和运输路线。结合总目标的要求,可以很容易地想到应选择运费最小的路线。
从同一个钢管厂订购钢管运往同一个目的地,一旦最小运输费用路线确定,则单位钢管的运费就确定了,单位钢管的订购及运输费用=钢管单价+运输费用。因此,同一个钢管厂订购钢管运往同一个目的地的总费用等于订购数量乘以单位钢管的购运费用(单价+单位钢管运费)。因而,在制定订购与运输计划时,要分成两个子问题考虑:

(1)运输路线及运输费用的确定:钢管可以通过铁路或公路运输,公路运费是运输里程的线性函数,但是铁路运价却是一种分段的阶跃的常数函数。因此在计算时,不管对运输里程还是费用而言,都不具有可加性,只能将铁路运价(即由运输总里程找出对应费率)和公路运价分别计算后再叠加。

(2)铺设方案的设定:从钢管厂订购若干个单位的钢管运送至枢纽点 A1,A2,⋯,A15A_{1}, A_{2}, \cdots, A_{15}A1,A2,,A15 ,再由枢纽点按一个单位计分别往枢纽点两侧运送至最终铺设地点,计算从枢纽点开始的铺设费用。

虽然准备把问题分解为两个子问题进行处理,但最终优化时,必须作为一个综合的优化问题进行处理,否则无法得到全局最优解。

三、模型的建立与求解

记第 i(i=1,2,⋯,7)i(i=1, 2, \cdots, 7)i(i=1,2,,7) 个钢厂的最大供应量为 sis_{i}si ,从第 i 个钢厂到铺设节点 j(j=1,2,⋯,15)j(j=1, 2, \cdots, 15)j(j=1,2,,15) 的订购和运输费用为 cijc_{ij}cij ;用 lk=∣AkAk+1∣(k=1,2,⋯,14)l_{k}=|A_{k}A_{k+1}|(k=1, 2, \cdots, 14)lk=AkAk+1(k=1,2,,14) 表示管道第 k 段需要铺设的钢管量。 xijx_{ij}xij 是从钢厂 SiS_{i}Si 运到节点 j 的钢管量,yjy_{j}yj 是从节点 j 向左铺设的钢管量,zjz_{j}zj 是从节点 j 向右铺设的钢管量。

根据题中所给数据,可以先计算出从供应点 SiS_{i}Si 到需求点 AjA_{j}Aj 的最小购运费 cijc_{ij}cij (即出厂售价与运输费用之和),再根据 cijc_{ij}cij 求解总费用,总费用应包括:订购费用(已包含在 cijc_{ij}cij 中),运输费用(由各厂 SiS_{i}Si 经铁路、公路至各点 Aj,i=1,2,⋯,7A_{j}, i=1, 2, \cdots, 7Aj,i=1,2,,7 ),铺设管道 AjAj+1(j=1,2,L,14)A_{j}A_{j+1}(j=1, 2, L, 14)AjAj+1(j=1,2,L,14) 的运费。

1.运费矩阵的计算模型

购买单位钢管及从 Si(i=1,2,L,7)S_{i}(i=1, 2, L, 7)Si(i=1,2,L,7) 运送到 Aj(j=1,2,L,15)A_{j}(j=1, 2, L, 15)Aj(j=1,2,L,15) 的最小购运 j=1,2,L,15j=1, 2, L, 15j=1,2,L,15 费用 cijc_{ij}cij 的计算如下。

(1)计算铁路任意两点间的最小运输费用

由于铁路运费不是连续的,故不能直接构造铁路费用赋权图,用 Floyd 算法来计算任意两点间的最小运输费用。但可以首先构造铁路距离赋权图,用 Floyd 算法来计算任意两点间的最短铁路距离值,再依据题中的铁路运价表,求出任意两点间的最小铁路运输费用。这就巧妙地避开铁路运费不是连续的问题。
首先构造铁路距离赋权图 G1=(V,E1,W1)G_{1}=(V, E_{1}, W_{1})G1=(V,E1,W1) ,其中 V={S1,⋯,S7,A1,⋯,A15,B1,⋯,B17}={v1,v2,⋯,v39}V=\{S_{1}, \cdots, S_{7}, A_{1}, \cdots, A_{15}, B_{1}, \cdots, B_{17}\}=\{v_{1}, v_{2}, \cdots, v_{39}\}V={S1,,S7,A1,,A15,B1,,B17}={v1,v2,,v39} ,总共 39 个顶点的编号见图 6.22; W1=(wij(1))39×39W_{1}=(w_{ij}^{(1)})_{39\times 39}W1=(wij(1))39×39

wij(1)={dij(1),vi,vj之间有铁路直接相连+∞,vi,vj之间没有铁路直接相连\boldsymbol {w}_{ij}^{(1)}=\left \{ \begin{aligned} &\boldsymbol {d}_{ij}^{(1)}, \boldsymbol {v}_{i},\boldsymbol {v}_{j}之间有铁路直接相连\\ &+\infty , \boldsymbol {v}_{i},\boldsymbol {v}_{j}之间没有铁路直接相连\end{aligned} \right . wij(1)={dij(1),vi,vj之间有铁路直接相连+,vi,vj之间没有铁路直接相连
式中: dij(1)d_{ij}^{(1)}dij(1) 表示 vi,vjv_{i}, v_{j}vi,vj 两点之间的铁路里程。然后应用Floyd算法求得任意两点间的最短铁路距离。
根据铁路运价表,可以得到铁路费用赋权完全图 G~1=(V,E1,W~1)\widetilde{G}_{1}=(V, E_{1}, \widetilde{W}_{1})G1=(V,E1,W1) , 其中 W~1=(cij(1))39×39\widetilde{W}_{1}=(c_{ij}^{(1)})_{39\times 39}W1=(cij(1))39×39 ,这里 cij(1)c_{ij}^{(1)}cij(1) 为第 i , j 顶点间的最小铁路运输费用,若两点间的铁路距离值为无穷大,则对应的铁路运输费用也为无穷大。

(2) 构造公路费用的赋权图

构造公路费用赋权图 G2=(V,E2,W2)G_{2}=(V, E_{2}, W_{2})G2=(V,E2,W2) ,其中 V 同上, W2=(cij(2))39×39W_{2}=(c_{ij}^{(2)})_{39\times 39}W2=(cij(2))39×39

cij(2)={0.1dij(2),vi,vj之间有公路相连,+∞,vi,vj之间没有公路相连,c_{ij}^{(2)}=\left \{ \begin{aligned} &0.1d_{ij}^{(2)},v_{i},v_{j}之间有公路相连,\\ &+\infty ,v_{i},v_{j}之间没有公路相连,\end{aligned} \right . cij(2)={0.1dij(2),vi,vj之间有公路相连,+,vi,vj之间没有公路相连,
式中: dij(2)d_{ij}^{(2)}dij(2) 表示 vi,vjv_{i}, v_{j}vi,vj 两点之间的公路里程。

(3)计算任意两点间的最小运输费用

由于可以用铁路、公路交叉运送,所以任意相邻两点间的最小运输费用为铁路、公路两者最小运输费用的最小值。

构造铁路公路的混合赋权图 G=(V,E,W),W=(cij(3))39×39G=(V, E, W), W=(c_{ij}^{(3)})_{39\times 39}G=(V,E,W),W=(cij(3))39×39 ,其中 cij(3)=min(cij(1),cij(2))c_{ij}^{(3)}=min(c_{ij}^{(1)}, c_{ij}^{(2)})cij(3)=min(cij(1),cij(2))

对图G应用Floyd算法,就可以计算出所有顶点对之间的最小运输费用,最后提取需要的 Si(i=1,2,⋯,7)S_{i}(i=1, 2, \cdots, 7)Si(i=1,2,,7)Aj(j=1,2,⋯,15)A_{j}(j=1, 2, \cdots, 15)Aj(j=1,2,,15) 的最小运输费用 c~ij\widetilde{c}_{ij}cij (单位:万元)见表6.11。

									表6.11 最小运费计算结果
170.7160.3140.298.63820.53.121.264.29296106121.2128142
215.7205.3190.2171.611195.58671.2114.2142146156171.2178192
230.7220.3200.2181.6121105.59686.248.2828696111.2118132
260.7250.3235.2216.6156140.5131116.284.262516176.28397
255.7245.3225.2206.6146130.5121111.279.257335171.27387
265.7255.3235.2216.6156140.5131121.284.262514526.21128
275.7265.3245.2226.6166150.5141131.299.276665638.2262

任意两点间的最小运输费用加上出厂售价,得到单位钢管从任一个 Si(i=1,2,⋯,7)S_{i}(i=1, 2, \cdots, 7)Si(i=1,2,,7)Aj(j=1,2,⋯,15)A_{j}(j=1, 2, \cdots, 15)Aj(j=1,2,,15) 的购买和运送最小费用 cijc_{ij}cij

2.总费用的数学规划模型

目标函数

(1) 从钢管厂到各枢纽点 A1A_{1}A1, A2,⋯,A15A_{2}, \cdots, A_{15}A2,,A15 的总购运费用为 ∑i=17∑j=115cijxij\sum \limits _{i=1}^{7}\sum \limits _{j=1}^{15}c_{ij}x_{ij}i=17j=115cijxij
(2)铺设管道不仅只运输到枢纽点,而是要运送并铺设到全部管线,注意到将总量为y j_{j}j 的钢管从枢纽点往左运到每单位铺设点,其运费应为第一公里、第二公里、⋯⋯\cdots \cdots⋯⋯ 直到第y j_{j}j 公里的运费之和,即为
0.1×(1+2+⋯+yj)=0.12yj(yj+1).\mathbf 0.1\times (1+2+\cdots +y_{j})=\frac {0.1}{2}y_{j}(y_{j}+1). 0.1×(1+2++yj)=20.1yj(yj+1).
从枢纽点 AjA_{j}Aj 往右也一样,对应的铺设费用为
0.1×(1+2+⋯+zj)=0.12zj(zj+1).0.1\times (1+2+\cdots +z_{j})=\frac{0.1}{2}z_{j}(z_{j}+1). 0.1×(1+2++zj)=20.1zj(zj+1).
总的铺设费用为
0.12∑j=115[yj(yj+1)+zj(zj+1)].\frac{0.1}{2}\sum _{j=1}^{15}[y_{j}(y_{j}+1)+z_{j}(z_{j}+1)]. 20.1j=115[yj(yj+1)+zj(zj+1)].
因而,总购运费用为
∑i=17∑j=115cijxij+0.12∑j=115[yj(yj+1)+zj(zj+1)]\sum _{i=1}^{7}\sum _{j=1}^{15}c_{ij}x_{ij}+\frac{0.1}{2}\sum _{j=1}^{15}[y_{j}(y_{j}+1)+z_{j}(z_{j}+1)] i=17j=115cijxij+20.1j=115[yj(yj+1)+zj(zj+1)]

约束条件
(1) 根据钢管厂生产能力约束或购买限制,有
∑j=115xij∈{0}∪[500,si],i=1,2,⋯,7.\sum_{j=1}^{15} x_{ij} \in \{0\} \cup [500, s_i], \quad i = 1, 2, \cdots, 7. j=115xij{0}[500,si],i=1,2,,7.

(2) 购运量应等于铺设量
∑i=17xij=zj+yj,j=1,2,⋯,15.\sum_{i=1}^{7} x_{ij} = z_j + y_j, \quad j = 1, 2, \cdots, 15. i=17xij=zj+yj,j=1,2,,15.

(3) 枢纽点间距约束:从两个相邻枢纽点分别往右、往左铺设的总单位钢管数应等于其间距,即
zj+yj+1=∣AjAj+1∣=lj,j=1,2,⋯,14.z_j + y_{j+1} = |A_j A_{j+1}| = l_j, \quad j = 1, 2, \cdots, 14. zj+yj+1=AjAj+1=lj,j=1,2,,14.

(4) 端点约束

  • 从枢纽点 A1A_{1}A1 只能往右铺,不能往左铺,故
    y1=0,y_{1} = 0, y1=0,
  • 从枢纽点 A15A_{15}A15 只能往左铺,不能往右铺,故
    z15=0.z_{15} = 0. z15=0.

(5) 非负约束
xij≥0,yj≥0,zj≥0,i=1,2,⋯,7,j=1,2,⋯,15.x_{ij} \ge 0, \quad y_{j} \ge 0, \quad z_{j} \ge 0, \quad i=1, 2, \cdots, 7, \quad j=1, 2, \cdots, 15. xij0,yj0,zj0,i=1,2,,7,j=1,2,,15.

综上所述,建立如下数学规划模型

min⁡∑i=17∑j=115cijxij+0.12∑j=115(zj(zj+1)+yj(yj+1)),(6.25)\min\sum _{i=1}^{7}\sum _{j=1}^{15}c_{ij}x_{ij}+\frac {0.1}{2}\sum _{j=1}^{15}(z_{j}(z_{j}+1)+y_{j}(y_{j}+1)),(6.25) mini=17j=115cijxij+20.1j=115(zj(zj+1)+yj(yj+1)),(6.25)

s.t.
{∑j=115xij∈{0}∪[500,si],i=1,2,⋯,7,∑i=17xij=zj+yj,j=1,2,⋯,15,zj+yj+1=lj,j=1,2,⋯,14,y1=0,z15=0,xij≥0,yj≥0,zj≥0,i=1,2,⋯,7;j=1,2,⋯,15.(6.26)\left \{ \begin{aligned} &\sum _{j=1}^{15}x_{ij}\in \{ 0\} \cup [500,s_{i}], & i=1,2,\cdots ,7,\\ &\sum _{i=1}^{7}x_{ij}=z_{j}+y_{j}, & j=1,2,\cdots ,15,\\ &z_{j}+y_{j+1}=l_{j}, & j=1,2,\cdots ,14,\\ &y_{1}=0, z_{15}=0,\\ &x_{ij}\ge 0, y_{j}\ge 0, z_{j}\ge 0, & i=1,2,\cdots ,7; j=1,2,\cdots ,15. \end{aligned} \right .(6.26) j=115xij{0}[500,si],i=17xij=zj+yj,zj+yj+1=lj,y1=0,z15=0,xij0,yj0,zj0,i=1,2,,7,j=1,2,,15,j=1,2,,14,i=1,2,,7;j=1,2,,15.(6.26)

3.模型求解

使用计算机求解上述数学规划时,需要对约束条件(6.26)中的第一个非线性约束

∑j=115xij∈{0}∪[500,si],i=1,2,⋯,7(6.27)\sum _{j=1}^{15}x_{ij}\in \{ 0\} \cup [500,s_{i}], \quad i=1,2,\cdots ,7 \quad (6.27) j=115xij{0}[500,si],i=1,2,,7(6.27)
进行处理。引进0-1变量

ti={1,钢管厂 i生产,0,钢管厂 i不生产,t_{i}=\left \{ \begin{matrix} 1, & \text{钢管厂 } i \text{ 生产}, \\ 0, & \text{钢管厂 } i \text{ 不生产}, \end{matrix} \right . ti={1,0,钢管厂 i 生产,钢管厂 i 不生产,
把约束条件(6.27)转化为线性约束

500ti≤∑j=115xij≤siti,i=1,2,⋯,7.(6.28)500t_{i}\le \sum _{j=1}^{15}x_{ij}\le s_{i}t_{i}, \quad i=1,2,\cdots ,7. \quad (6.28) 500tij=115xijsiti,i=1,2,,7.(6.28)

利用 Python 软件求得总费用的最小值为 127.8632 亿。具体的订购和运输方案见表 6.12 所示。

订购量A1A_{1}A1A2A_{2}A2A3A_{3}A3A4A_{4}A4A5A_{5}A5A6A_{6}A6A7A_{7}A7A8A_{8}A8A9A_{9}A9A10A_{10}A10A11A_{11}A11A12A_{12}A12A13A_{13}A13A14A_{14}A14A15A_{15}A15
S1S_{1}S18000003191520026600000000
S2S_{2}S2800017932100003000000000
S3S_{3}S31000001871490000664000000
S4S_{4}S40000000000000000
S5S_{5}S510150000600000004150000
S6S_{6}S61556000000000351086333621165
S7S_{7}S70000000000000000




钢管运输excel文件 :https://wwo.lanzouu.com/igf7E33r9uha 密码:1gni
相应的python代码如下:

#程序文件anli6_1.py
import cvxpy as cp
import numpy as np
import networkx as nx
import pandas as pds1 = ['S'+str(i) for i in range(1,8)]
s2 = ['A'+str(i) for i in range(1,16)]
s3 = ['B'+str(i) for i in range(1,18)]
L = s1 + s2 + s3   #构造顶点字符列表
G1 = nx.Graph(); G1.add_nodes_from(L)
L1 = [('B1','B3',450),('B2','B3',80),('B3','B5',1150),('B5','B8',1100),('B4','B6',306),('B6','B7',195),('S1','B7',20),('S1','B8',202),('S2','B8',1200),('B8','B9',720),('S3','B9',690),('B9','B10',520),('B10','B12',170),('S4','B12',690),('S5','B11',462),('B11','B12',88),('B12','B14',160),('B13','B14',70),('B14','B15',320),('B15','B16',160),('S6','B16',70),('B16','B17',290),('S7','B17',30)]
G1.add_weighted_edges_from(L1)  #构造铁路赋权图
d1 = nx.floyd_warshall_numpy(G1) #求最短距离矩阵
d1 = np.array(d1)  #转换为array数组
c1 = np.ones(d1.shape)*np.inf
c1[d1==0]=0; c1[(d1>0) & (d1<=300)]=20
c1[(d1>300) & (d1<=350)]=23; c1[(d1>350) & (d1<=400)]=26
c1[(d1>400) & (d1<=450)]=29; c1[(d1>450) & (d1<=500)]=32
c1[(d1>500) & (d1<=600)]=37; c1[(d1>600) & (d1<=700)]=44
c1[(d1>700) & (d1<=800)]=50; c1[(d1>800) & (d1<=900)]=55
c1[(d1>900) & (d1<=1000)]=60; ind=(d1>1000) & (d1<np.inf)
c1[ind]=60+5*np.ceil(d1[ind]/100-10)G2 = nx.Graph()
G2.add_nodes_from(L)
L2 = [('A1','A2',104),('A2','B1',3),('A2','A3',301),('A3','B2',2),('A3','A4',750),('A4','B5',600),('A4','A5',606),('A5','B4',10),('A5','A6',194),('A6','B6',5),('A6','A7',205),('A7','B7',10),('S1','A7',31),('A7','A8',201),('A8','B8',12),('A8','A9',680),('A9','B9',42),('A9','A10',480),('A10','B10',70),('A10','A11',300),('A11','B11',10),('A11','A12',220),('A12','B13',10),('A12','A13',210),('A13','B15',62),('A13','A14',420),('S6','A14',110),('A14','B16',30),('A14','A15',500),('A15','B17',20),('S7','A15',20)]
G2.add_weighted_edges_from(L2)  #构造公路赋权图
c2 = nx.to_numpy_matrix(G2)  #导出图G2的邻接矩阵
c2 = np.array(c2)   #转换为array数组
c2[c2==0] = np.inf
c3 = np.minimum(c1, 0.1*c2)G3 = nx.Graph(c3)
c4 = nx.floyd_warshall_numpy(G3) #求最短距离矩阵
c5 = c4[:7,7:22]   #提出7行15列的运费数据
f = pd.ExcelWriter('anli6_1.xlsx')
pd.DataFrame(c5).to_excel(f, index=False)s = np.array([800, 800, 1000, 2000, 2000, 2000, 3000])
p = np.array([160, 155, 155, 160, 155, 150, 160])
b = np.array([104, 301, 750, 606, 194, 205, 201,680, 480, 300, 220, 210, 420, 500])
c = np.tile(p,(15,1)).T + c5  #购运费用
x = cp.Variable((7,15), integer=True)  #调整为整型
y = cp.Variable(15, pos=True); z = cp.Variable(15, pos=True)
t = cp.Variable(7, integer=True)
obj = cp.Minimize(cp.sum(cp.multiply(c, x))+0.05*cp.sum(y**2+y+z**2+z))
con = [500*t<=cp.sum(x,axis=1), cp.sum(x,axis=1)<=cp.multiply(s,t),cp.sum(x,axis=0)==y+z, y[1:]+z[:-1]==b,y[0]==0, z[14]==0,t>=0, t<=1, x>=0]
prob = cp.Problem(obj, con); prob.solve(solver='CPLEX')
print('最优值为:', prob.value); print('最优解为:\n', x.value)
sx = np.sum(x.value, axis=1)  
pd.DataFrame(c).to_excel(f, 'Sheet2', index=False)
pd.DataFrame(x.value).to_excel(f, 'Sheet3', index=False)
f.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93403.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93403.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/93403.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java Web部署

今天小编来分享下如何将本地写的Java Web程序部署到Linux上。 小编介绍两种方式&#xff1a; 部署基于Linux Systemd服务、基于Docker容器化部署 首先部署基于Linux Systemd服务 那么部署之前&#xff0c;要对下载所需的环境 软件下载 Linux&#xff08;以ubuntu&#xf…

告别AI“炼丹术”:“策略悬崖”理论如何为大模型对齐指明科学路径

摘要&#xff1a;当前&#xff0c;我们训练大模型的方式&#xff0c;尤其是RLHF&#xff0c;充满了不确定性&#xff0c;时常产生“谄媚”、“欺骗”等怪异行为&#xff0c;被戏称为“炼丹”。一篇来自上海AI Lab的重磅论文提出的“策略悬崖”理论&#xff0c;首次为这个混沌的…

深入理解C#特性:从应用到自定义

——解锁元数据标记的高级玩法&#x1f4a1; 核心认知&#xff1a;特性本质揭秘 public sealed class ReviewCommentAttribute : System.Attribute { ... }特性即特殊类&#xff1a;所有自定义特性必须继承 System.Attribute&#xff08;基础规则&#xff09;命名规范&#xff…

机器学习-集成学习(EnsembleLearning)

0 结果展示 0.1 鸢尾花分类 import pandas as pd import numpy as npfrom sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, recall_score, f1_score, classification_repo…

Golang database/sql 包深度解析(一)

database/sql 是 Go 语言标准库中用于与 SQL&#xff08;或类 SQL&#xff09;数据库交互的核心包&#xff0c;提供了一套轻量级、通用的接口&#xff0c;使得开发者可以用统一的方式操作各种不同的数据库&#xff0c;而无需关心底层数据库驱动的具体实现。 核心设计理念 datab…

文章自然润色 API 数据接口

文章自然润色 API 数据接口 ai / 文本处理 基于 AI 的文章润色 专有模型 / 智能纠错。 1. 产品功能 基于自有专业模型进行 AI 智能润色对原始内容进行智能纠错高效的文本润色性能全接口支持 HTTPS&#xff08;TLS v1.0 / v1.1 / v1.2 / v1.3&#xff09;&#xff1b;全面兼容…

【状压DP】3276. 选择矩阵中单元格的最大得分|2403

本文涉及知识点 C动态规划 3276. 选择矩阵中单元格的最大得分 给你一个由正整数构成的二维矩阵 grid。 你需要从矩阵中选择 一个或多个 单元格&#xff0c;选中的单元格应满足以下条件&#xff1a; 所选单元格中的任意两个单元格都不会处于矩阵的 同一行。 所选单元格的值 互…

IDEA 清除 ctrl+shift+r 全局搜索记录

定位文件&#xff1a;在Windows系统中&#xff0c;文件通常位于C:Users/用户名/AppData/Roaming/JetBrains/IntelliJIdea(idea版本)/workspace目录下&#xff0c;文件名为一小串随机字符&#xff1b;在Mac系统中&#xff0c;文件位于/Users/用户名/Library/Application /Suppor…

解锁AI大模型:Prompt工程全面解析

解锁AI大模型&#xff1a;Prompt工程全面解析 本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型开发 学习视频/籽料/面试题 都在这>>Github<< 从新手到高手&#xff0c;Prompt 工程究竟是什么&#xff1f; 在当今数字化时代&#xff0c;AI …

HTTP0.9/1.0/1.1/2.0

在HTTP0.9中&#xff0c;只有GET方法&#xff0c;没有请求头headers&#xff0c;没有状态码&#xff0c;只能用于传输HTML文件。到了HTTP1.0(1996)&#xff0c;HTTP1.0传输请求头&#xff0c;有状态码&#xff0c;并且新增了POST和HEAD方法。HTTP1.0中&#xff0c;使用短连接&a…

gitee 流水线+docker-compose部署 nodejs服务+mysql+redis

文章中的方法是自己琢磨出来的&#xff0c;或许有更优解&#xff0c;共同学习&#xff0c;共同进步&#xff01; docker-compose.yml 文件配置&#xff1a; 说明&#xff1a;【配置中有个别字段冗余&#xff0c;但不影响使用】该文件推荐放在nodejs项目的根目录中&#xff0c…

【算法】模拟专题

什么是模拟&#xff1f; 是一种通过模仿现实世界或问题场景的运行过程来求解问题的算法思想。它不依赖复杂的数学推导或逻辑优化&#xff0c;而是按照问题的实际规则、步骤或流程&#xff0c;一步步地 “复现” 过程&#xff0c;最终得到结果。 使用场景&#xff1a;当问题的逻…

【FreeRTOS】刨根问底6: 应该如何防止任务栈溢出?

【加关注&#xff0c;不迷路】一、栈溢出&#xff1a;程序世界的“越界洪水”就象一个装水的玻璃杯&#xff08;栈空间&#xff09;&#xff0c;每次调用函数就像向水杯中倒水&#xff08;压入保护需要恢复的数据&#xff09;。当函数嵌套调用过深&#xff08;如递归失控&#…

牛客周赛 Round 105

A.小苯的xor构造题目描述小红喜欢整数 k&#xff0c;他想让小苯构造两个不相等的非负整数&#xff0c;使得两数的异或和等于 k。请你帮帮小苯。#include <bits/stdc.h> using namespace std; using ll long long; void solve() {int k;cin>>k;cout<<0<&l…

《R for Data Science (2e)》免费中文翻译 (第4章) --- Workflow: code style

写在前面 本系列推文为《R for Data Science (2)》的中文翻译版本。所有内容都通过开源免费的方式上传至Github&#xff0c;欢迎大家参与贡献&#xff0c;详细信息见&#xff1a; Books-zh-cn 项目介绍&#xff1a; Books-zh-cn&#xff1a;开源免费的中文书籍社区 r4ds-zh-cn …

11-verilog的RTC驱动代码

verilog的RTC驱动代码 1.例化parameter SLAVE_ADDR 7h51 ; // 器件地址 parameter BIT_CTRL 1b0 ; // 字地址位控制参数(16b/8b) parameter CLK_FREQ 26d50_000_000; // i2c_dri模块的驱动时钟频率(CLK_FREQ) parameter I2C_FR…

【k8s、docker】Headless Service(无头服务)

文章目录问题背景1、什么是Headless Service1.2 为什么 Zookeeper 使用 Headless Service&#xff1f;1.2 Headless Service 的 DNS 行为1.3 验证示例1.4 如何创建 Headless Service&#xff1f;2. zk-0.zookeeper.default.svc.cluster.local 域名是如何创建出来的&#xff1f;…

scikit-learn/sklearn学习|套索回归Lasso解读

【1】引言 前序学习进程中&#xff0c;对用scikit-learn表达线性回归进行了初步解读。 线性回归能够将因变量yyy表达成由自变量xxx、线性系数矩阵www和截距bbb组成的线性函数式&#xff1a; y∑i1nwi⋅xibwTxby\sum_{i1}^{n}w_{i}\cdot x_{i}bw^T{x}byi1∑n​wi​⋅xi​bwTxb实…

暴雨服务器:以定制化满足算力需求多样化

在数字经济与实体经济深度融合的浪潮下&#xff0c;互联网行业正经历着前所未有的技术变革。大数据分析、云计算服务、人工智能算法等技术的快速演进&#xff0c;推动着企业对于高性能计算基础设施的需求呈现指数级增长。据IDC数据显示&#xff0c;互联网行业已成为全球服务器采…

JavaScript字符串详解

创建字符串&#xff1a; 1.使用字面量(推荐)&#xff1a; 这是最常用、最直接的方式。你可以用单引号 ()、双引号 (") 或反引号 () 把文本包起来 let singleQuote 单引号; let doubleQuote "双引号"; let templateLiteral 反引号;2.使用String 构造函数&…