整数规划——第一章 引言
整数规划——第一章 引言
整数规划是带整数变量的最优化问题,即最大化或最小化一个全部或部分变量为整数的多元函数受约束于一组等式和不等式条件的最优化问题。许多经济、管理、交通、通信和工程中的最优化问题都可以用整数规划来建模。
考虑一个电视机工厂的生产计划问题,如果线性规划模型给出的最优生产计划是每天生产102。4台,则可以选择每天102或103台的生产计划。另一方面,若考虑的问题是仓库的选址问题,设线性规划给出的最优解是在甲地点建或买0。6个仓库,在乙地点建或买0。4个仓库,因仓库的个数必须是整数,这时线性规划的解不能提供任何有用的决策方案。实际上,除了可以描述决策变量的离散性外,整数变量可以帮助我们刻画最优化建模中的许多约束条件,如逻辑关系、固定费用、可选变量的上界、顺序和排序关系、分片线性函数等。
整数规划的历史可以追溯到20世纪50年代,运筹学创始人和线性规划单纯形算法发明者Dantzig首先发现可以用0-1变量来刻画最优化模型中的固定费用、变量上界、非凸分片线性函数等。他和Fulkerson及Johnson对旅行售货员问题(TSP)的研究成为后来的分枝割方法和现代混合整数规划算法的开端。1958年,Gomory发现了第一个一般线性整数规划的收敛算法——割平面方法。随着整数规划理论和算法的发展,整数规划已成为应用最广泛的最优化方法之一,特别是近年来整数规划算法技术和软件系统(如CPLEX)的发展和推广,整数规划在生产企业、服务、运营管理、交通、通信等领域得到了极大的应用和发展。
1.1 分类与建模
1.1.1 线性混合整数规划
线性混合整数规划(Mixed integer program/programming,MIP)的一般形式为:
( MIP ) min c T x + h T y , s . t . A x + G y ≤ b , x ∈ Z + n , y ∈ R + p , \begin{aligned} (\text{MIP})\quad\quad& \min \ c^T x+h^Ty,\\\ & s.t.\quad Ax+Gy\le b,\ x\in \Z^n_+,y\in \R^p_+, \end{aligned} (MIP) min cTx+hTy,s.t.Ax+Gy≤b, x∈Z+n,y∈R+p,
其中 Z + n \Z^n_+ Z+n 是 n n n 维非负整数向量集合, R + p \R^p_+ R+p 是 p p p 维非负实数向量集合。
如果问题(MIP)中没有连续决策变量,则(MIP)就是一个(纯)线性整数规划:
( IP ) min c T x , s . t . A x ≤ b , x ∈ Z + n , \begin{aligned} (\text{IP})\quad\quad& \min \ c^T x,\\\ & s.t.\quad Ax\le b,\ x\in \Z^n_+, \end{aligned} (IP) min cTx,s.t.Ax≤b, x∈Z+n,
背包问题 设有一个背包,其承重为 b b b 。考虑n件物品,其中第 j j j 件的重量为 α j α_j αj ,价值为 c j c_j cj。问如何选取物品装入背包,使背包内物品的总价值最大?
设
x j = { 1 , 若选取第 j 件物品, 0 , 若不选取 . x_j=\begin{cases} 1,&若选取第j件物品,\\ 0,&若不选取. \end{cases} xj={1,0,若选取第j件物品,若不选取.
则背包问题可以表示为下列线性0-1规划:
max ∑ j = 1 n c j x j , s . t . ∑ j = 1 n a j x j ≤ b , x ∈ { 0 , 1 } n . \begin{aligned}&\max \sum_{j=1}^n c_jx_j,\\ &s.t.\ \sum_{j=1}^n a_jx_j\le b,\\ &\quad\quad x\in \{0,1\}^n. \end{aligned} maxj=1∑ncjxj,s.t. j=1∑najxj≤b,x∈{0,1}n.
指派问题 设有 m m m 台机器, n n n 个工件,第 i i i 台机器的可用工时数为 b i b_i bi ,第 i i i 台机器完成第 j j j 件工件需要的工时数为 a i j a_{ij} aij ,费用为 c i j c_{ij} cij 。问如何最优指派机器生产。
设
x i j = { 1 , 若第 i 个机器加工第 j 件工件, 0 , 其他 . x_{ij}=\begin{cases} 1,&若第\ i\ 个机器加工第\ j\ 件工件,\\ 0,&其他. \end{cases} xij={1,0,若第 i 个机器加工第 j 件工件,其他.
则指派问题可以表示为如下0-1规划问题:
min ∑ i = 1 n ∑ j = 1 n c i j x i j , s . t . ∑ j = 1 n a i j x i j ≤ b i , i = 1 , . . . , m , ∑ i = 1 m x i j = 1 , j = 1 , . . . , n , x ∈ { 0 , 1 } n . \begin{aligned}&\min \sum_{i=1}^n\sum_{j=1}^n c_{ij}x_{ij},\\ &s.t.\ \sum_{j=1}^n a_{ij}x_{ij}\le b_i,\ i = 1,...,m,\\ &\quad\quad\sum_{i = 1}^m x_{ij} =1,j=1,...,n, \\ &\quad\quad x\in \{0,1\}^n. \end{aligned} mini=1∑nj=1∑ncijxij,s.t. j=1∑naijxij≤bi, i=1,...,m,i=1∑mxij=1,j=1,...,n,x∈{0,1}n.
集合覆盖问题 设某地区划分为若干个区域,需要建立若干个应急服务中心(如消防站、急救中心等),每个中心的建立都需要一笔建站费用,设候选中心的位置已知,每个中心可以服务的区域预先知道,问如何选取中心使该应急服务能覆盖整个地区且使建站费用最小。
记 M = { 1 , ⋅ ⋅ ⋅ , m } M=\{1,···,m\} M={1,⋅⋅⋅,m} 为该地区中的区域, N = { 1 , ⋅ ⋅ ⋅ , n } N=\{1,···,n\} N={1,⋅⋅⋅,n} 是可选的中心,设 S ≤ M S≤M S≤M 为中心 j ∈ N j∈N j∈N 可以服务的区域集合, c j c_j cj 是中心 j j j 的建站费用,定义0-1关联矩阵 A = ( a i j ) A=(a_{ij}) A=(aij) ,其中如果 i ∈ S j i∈S_j i∈Sj, a i j = 1 a_{ij}=1 aij=1 ,否则 a i j = 0 a_{ij}=0 aij=0 。
设
x j = { 1 , 若选取中心 j , 0 , 其他 . x_j=\begin{cases} 1,&若选取中心j,\\ 0,&其他. \end{cases} xj={1,0,若选取中心j,其他.
则问题可以表述为:
min ∑ j = 1 n c j x j , s . t . ∑ j = 1 n a i j x j ≥ 1 , i = 1 , . . . , m , x ∈ { 0 , 1 } n . \begin{aligned}&\min \sum_{j=1}^n c_jx_j,\\ &s.t.\ \sum_{j=1}^n a_{ij}x_j\ge 1,i=1,...,m,\\ &\quad\quad x\in \{0,1\}^n. \end{aligned} minj=1∑ncjxj,s.t. j=1∑naijxj≥1,i=1,...,m,x∈{0,1}n.
旅行售货员问题(TSP) 设有一个旅行售货员需要去n个城市推销他的产品,他必须而且只能访问每个城市一次,并最后返回出发城市.设每个城市直接到达另一个城市的距离已知(如不能直接到达,则可设其距离为+∞),他应该如何选择旅行路线使得总的旅行距离最短?
设城市 i i i 到城市 j j j 的距离为 c i j c_{ij} cij,设
x i j = { 1 , 若他的旅游路线包括了直接从城市 i 到城市 j 的行程, 0 , 其他 . x_{ij}=\begin{cases} 1,&若他的旅游路线包括了直接从城市 i 到城市 j的行程,\\ 0,&其他. \end{cases} xij={1,0,若他的旅游路线包括了直接从城市i到城市j的行程,其他.
约束条件:
离开城市 i i i 一次:
∑ j ≠ i x i j = 1 , i = 1 , . . . , n \sum_{j\not= i}x_{ij}=1,\ i=1,...,n j=i∑xij=1, i=1,...,n
到达城市 j j j 一次:
∑ i ≠ j x i j = 1 , j = 1 , . . . , n \sum_{i\not= j}x_{ij}=1,\ j=1,...,n i=j∑xij=1, j=1,...,n
上面的约束条件使得每个城市正好经过一次,但仍可能包括含圈但不联通的路
线,我们需要用下面的约束条件来去除这种情况发生:∑ i ∈ S ∑ j ∉ S x i j ≥ 1 , ∀ S ⊂ N = { 1 , . . . , n } , S ≠ ∅ \sum_{i\in S}\sum_{j\not\in S}x_{ij}\ge 1,\quad \forall S\sub N=\{1,...,n\},S\not =\emptyset i∈S∑j∈S∑xij≥1,∀S⊂N={1,...,n},S=∅
或者
∑ i ∈ S ∑ j ∈ S x i j ≤ ∣ S ∣ − 1 , ∀ S ⊂ N , 2 ≤ ∣ S ∣ ≤ n − 1 \sum_{i\in S}\sum_{j\in S} x_{ij}\le |S|-1,\quad \forall S\sub N,\quad 2\le|S|\le n-1 i∈S∑j∈S∑xij≤∣S∣−1,∀S⊂N,2≤∣S∣≤n−1
从而旅行售货员问题可以表示为:
min ∑ i = 1 n ∑ j = 1 n c i j x i j , s . t . ∑ j ≠ i x i j = 1 , i = 1 , . . . , n , ∑ i ≠ j m x i j = 1 , j = 1 , . . . , n , ∑ i ∈ S ∑ j ∈ S x i j ≤ ∣ S ∣ − 1 , ∀ S ⊂ N , 2 ≤ ∣ S ∣ ≤ n − 1 , x ∈ { 0 , 1 } n . \begin{aligned}&\min \sum_{i=1}^n\sum_{j=1}^n c_{ij}x_{ij},\\ &s.t.\ \sum_{j\not=i} x_{ij}=1,\ i = 1,...,n,\\ &\quad\quad\sum_{i \not= j}^m x_{ij} =1,j=1,...,n, \\ &\quad\quad\sum_{i\in S}\sum_{j\in S} x_{ij}\le |S|-1,\quad \forall S\sub N,\quad 2\le|S|\le n-1,\\ &\quad\quad x\in \{0,1\}^n. \end{aligned} mini=1∑nj=1∑ncijxij,s.t. j=i∑xij=1, i=1,...,n,i=j∑mxij=1,j=1,...,n,i∈S∑j∈S∑xij≤∣S∣−1,∀S⊂N,2≤∣S∣≤n−1,x∈{0,1}n.
1.1.2 非线性整数规划
一般非线性混合整数规划(Mixed-Integer Nonlinear Programming)问题可表示为;
( MINLP ) min f ( x , y ) , s . t . g i ( x , y ) ≤ b i , i = 1 , . . . , m , x ∈ X , y ∈ Y \begin{aligned} (\text{MINLP})\quad\quad& \min f(x,y),\\\ & s.t.\quad g_i(x,y)\le b_i,\quad i =1,...,m,\\ &\quad\quad\ \ \ x \in X,\quad y\in Y \end{aligned} (MINLP) minf(x,y),s.t.gi(x,y)≤bi,i=1,...,m, x∈X,y∈Y
此处的 f , g i , i = 1 , . . . , m f,g_i,i=1,...,m f,gi,i=1,...,m 是 R n + q \R^{n+q} Rn+q 上的实值函数, X X X 是 Z n \Z^n Zn 的子集, Y Y Y 是 R q \R^q Rq 的子集。
当(MINLP)中没有连续变量 y y y 时,(MINLP)即是一个(纯)非线性整数规划:
( NLIP ) min f ( x , y ) , s . t . g i ( x , y ) ≤ b i , i = 1 , . . . , m , x ∈ X , y ∈ Y \begin{aligned} (\text{NLIP})\quad\quad& \min f(x,y),\\\ & s.t.\quad g_i(x,y)\le b_i,\quad i =1,...,m,\\ &\quad\quad\ \ \ x \in X,\quad y\in Y \end{aligned} (NLIP) minf(x,y),s.t.gi(x,y)≤bi,i=1,...,m, x∈X,y∈Y
最大割问题 设 G = ( V , E ) G=(V,E) G=(V,E) 是有 n n n 个顶点的无向图,设边 ( i , j ) (i,j) (i,j) 上的权为 w i j ( w i j = w j i ≥ 0 ) w_{ij}(w_{ij}=w_{ji}\ge 0) wij(wij=wji≥0)。图 G G G 的一个割 ( S , S ′ ) (S,S') (S,S′) 是指 n n n 个顶点上的一个分割: S ∩ S ′ = ∅ , S ∪ S ′ = V S\cap S'=\empty,S\cup S'=V S∩S′=∅,S∪S′=V。最大割问题是求一个分割 ( S , S ′ ) (S,S') (S,S′) 使连接 S S S 和 S ′ S' S′ 之间的所有边上的权最大。
设 $x_i = 1\ \text{if} \ \ i\in S,\ x_i = -1 \ \text{if} \ \ i\in S’ $,则分割 ( S , S ′ ) (S,S') (S,S′) 上的权为:
1 2 ( 1 2 ∑ i , j = 1 n w i j − 1 2 ∑ i , j = 1 n w i j x i x j ) = 1 4 ∑ i , j = 1 n w i j ( 1 − x i x j ) . \frac{1}{2}(\frac{1}{2}\sum_{i,j=1}^n w_{ij}-\frac{1}{2}\sum_{i,j=1}^n w_{ij} x_ix_j)=\frac{1}{4}\sum_{i,j=1}^n w_{ij}(1-x_ix_j). 21(21i,j=1∑nwij−21i,j=1∑nwijxixj)=41i,j=1∑nwij(1−xixj).
所以最大割问题可以表示为:
max 1 4 ∑ i , j = 1 n w i j ( 1 − x i x j ) , s . t . x ∈ { − 1 , 1 } n . \begin{aligned} &\max\ \frac{1}{4}\sum_{i,j=1}^n w_{ij}(1-x_ix_j),\\ & s.t.\ x\in \{-1,1\}^n. \end{aligned} max 41i,j=1∑nwij(1−xixj),s.t. x∈{−1,1}n.
最大割问题是组合优化中著名的NP难问题,l995年,Goemans和Williamson对
最大割问题的SDP松弛给出了一个漂亮的结果:
f o p t ≤ f S D P ≤ α f o p t , α = 1.138 ⋅ ⋅ ⋅ , f_{opt}≤f_{SDP}≤\alpha f_{opt},\alpha=1.138···, fopt≤fSDP≤αfopt,α=1.138⋅⋅⋅,
这里 f o p t f_{opt} fopt 是最大割问题的最优值, f S D P f_{SDP} fSDP是SDP松弛问题的最优值
可靠性网络 考虑有 n n n 个子系统的网络.设 r i ( 0 < r i < 1 ) r_i(0<r_i<1) ri(0<ri<1) 是第 i i i 个子系统中的部件可靠性, x i x_i xi 表示第 i i i 个子系统的冗余部件的个数。网络可靠性优化问题是求最优的冗余向量 x = ( x 1 , ⋅ ⋅ ⋅ , x n ) T x=(x_1,···,x_n)^T x=(x1,⋅⋅⋅,xn)T 使网络的整体可靠性最大。
第 i i i 个子系统的可靠性为
R i ( x i ) = 1 − ( 1 − r i ) x i , i = 1 , . . . , n R_i(x_i)=1-(1-r_i)^{x_i},\ i=1,...,n Ri(xi)=1−(1−ri)xi, i=1,...,n
整个网络的可靠性 R s ( x ) R_s(x) Rs(x) 是关于 R 1 ( x 1 ) , . . . , R n ( x n ) R_1(x_1),...,R_n(x_n) R1(x1),...,Rn(xn) 的增函数,下图所示的网络的可靠性为
R s = R 6 R 7 + R 1 R 2 R 3 ( Q 6 + R 6 Q 7 ) + R 1 R 4 R 7 Q 6 ( Q 2 + R 2 Q 3 ) R_s = R_6R_7+R_1R_2R_3(Q_6+R_6Q_7)+R_1R_4R_7Q_6(Q_2+R_2Q_3) Rs=R6R7+R1R2R3(Q6+R6Q7)+R1R4R7Q6(Q2+R2Q3)
其中 Q i = 1 − R i , i = 1 , . . . , n Q_i = 1-R_i,i=1,...,n Qi=1−Ri,i=1,...,n,对应的最优冗余问题为:max R s ( x ) = f ( R 1 ( x 1 ) , . . . , R n ( x n ) ) , s . t . g i ( x ) = ∑ j = 1 n g i j ( x j ) ≤ b i , i = 1 , . . . , m , x ∈ X = { x ∈ Z n ∣ 1 ≤ l j ≤ x j ≤ u j , j = 1 , . . . , n } \begin{aligned} &\max\ R_s(x)=f(R_1(x_1),...,R_n(x_n)),\\ & s.t.\ g_i(x)=\sum_{j=1}^ng_{ij}(x_j)\le b_i,\quad i=1,...,m,\\ &\quad\quad x\in X=\{x\in \Z^n|1\le l_j\le x_j\le u_j,j=1,...,n\} \end{aligned} max Rs(x)=f(R1(x1),...,Rn(xn)),s.t. gi(x)=j=1∑ngij(xj)≤bi,i=1,...,m,x∈X={x∈Zn∣1≤lj≤xj≤uj,j=1,...,n}
其中 g i ( x ) , i = 1 , . . . , m g_i(x),i=1,...,m gi(x),i=1,...,m 代表不同的资源消耗函数,例如费用、体积、重量等。
1.2 问题的挑战性
很多整数规划问题往往看上去很简单,数学模型也不复杂,如0-1背包问题、最大割问题等,但求解这类问题其实非常困难.绝大部分整数规划问题的可行域都只有有限多个可行点(决策方案),一个简单幼稚的想法是枚举所有的可行点,但是这样会使求解难度指数增加。大部分整数规划问题的困难在于:我们本质上只能使用枚举法或隐枚举法的思想来求解问题最优解,故当问题的规模越来越大时,算法的计算时间急剧增加。与此形成对照的是连续优化问题,我们知道,最简单的连续优化问题的可行点的个数也是无穷多个,但寻找可行域中的最优点并不需要借助枚举法的思想,因为利用微积分的工具可以刻画出最优点需要满足的一组容易验证的最优性条件,如KKT条件。故只有当算法需要枚举或部分枚举这些可行点时,可行域中可行点的个数才和问题的难度有关。
另外一个朴素的想法是“四舍五入”:求解相应的连续优化问题(丢掉整数约束),然后对求得的解进行四舍五入,得到一个整数解.这个方法有两个问题:(1)一般很难通过四舍五入得到一个满足约束条件的可行解;(2)即使能求得一个可行解,其质量往往很差,即可能离最优解的距离很远,甚至和随机产生的可行解差不多。贪心算法往往可以帮助我们求到一个问题的近似解。例如,在0-1背包问题中,可以先进行排序:
c j 1 a j 1 ≥ c j 2 a j 2 ≥ . . . ≥ c j n a j n \frac{c_{j1}}{a_{j1}}\ge\frac{c_{j2}}{a_{j2}}\ge ... \ge\frac{c_{jn}}{a_{jn}} aj1cj1≥aj2cj2≥...≥ajncjn
然后按照从大到小的顺序 j 1 , . . . , j n j_1,...,j_n j1,...,jn 选取物品知道背包的容量 b b b 不能再装下一个物品。
在实际应用中提出的很多整数规划问题的规模一般都很大,直接利用现有的算法和软件求解往往是不可能的.这就促使人们研究有效快速的近似算法或启发式算法以寻找问题的一个近似最优解或较好的可行解,如近年来发展起来的基于半定规划的随机化算法和各种针对具体整数规划和组合优化问题的近似算法。
参考资料
- 整数规划 孙小玲,李瑞 北京,科学出版社 2010
- Wolsey L A. Integer programming[M]. John Wiley & Sons, 2020.
相关文章:

整数规划——第一章 引言
整数规划——第一章 引言 整数规划是带整数变量的最优化问题,即最大化或最小化一个全部或部分变量为整数的多元函数受约束于一组等式和不等式条件的最优化问题。许多经济、管理、交通、通信和工程中的最优化问题都可以用整数规划来建模。 考虑一个电视机工厂的生产…...

C语言结构体讲解
目录 结构体的声明 结构的基础知识 结构的声明 为什么要出现结构体? 结构成员的类型 结构体变量的定义和初始化 定义:(全局变量//局部变量) 初始化: 结构体成员的访问 结构体传参 结构体的声明 结构的基础知识…...

021 - STM32学习笔记 - Fatfs文件系统(三) - 细化与总结
021 - STM32学习笔记 - Fatfs文件系统(三) - 细化与总结 上节内容中,初步实现了FatFs文件系统的移植,并且实现了设备的挂载、文件打开/关闭与读写功能,这里对上节遗留的一些问题进行总结,并且继续完善文件…...

jQuery如何获取动态添加的元素
jQuery如何获取动态添加的元素 使用 on()方法 本质上使用了事件委派,将事件委派在父元素身上 自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品,但是由于on()方法必须有事件,没有事件时可选择de…...

Keepalived 在CentOS 7安装并配置监听MySQL双主
keepalived安装 MySQL双主配置请看这里:https://tongyao.blog.csdn.net/article/details/132016200?spm1001.2014.3001.5502 128、129两台服务器安装步骤相同,配置文件不同,下面有介绍。 1.安装相关依赖包,并下载keepalived安…...

深度学习,神经网络介绍
目录 1.神经网络的整体构架 2.神经网络架构细节 3.正则化与激活函数 4.神经网络过拟合解决方法 1.神经网络的整体构架 ConvNetJS demo: Classify toy 2D data 我们可以看看这个神经网络的网站,可以用来学习。 神经网络的整体构架如下1: 感知器&…...

中国AI大模型峰会“封神之作”!开发者不容错过这场夏季盛会
年度最强大模型顶会来袭!喊话中国数百万AI开发者,速来! 硬核来袭!中国AI大模型峰会“封神之作”,开发者们不容错过! 前瞻大模型发展趋势,紧跟这场大会! 中国科技超级碗,大模型最新前…...

Android Studio多渠道打包
使用环境: Android studio 多渠道打包 使用方法: 1 APP下build.gradle文件 flavorDimensions "default"productFlavors {huawei {dimension "default"manifestPlaceholders [ channel:"huawei" ]}xiaomi {dimension &…...
RK3566 Android11默认客户Launcher修改
前言 客户需要默认自己的Launcher为home,同时保留系统的Launcher3. 解决办法:在启动home应用之前设置一下默认Launcher。查找home app启动相关资料,找到了frameworks/base/services/core/java/com/android/server/wm/RootWindowContainer.java的startHomeOnTaskDisplayA…...

ORB算法在opencv中实现方法
在OPenCV中实现ORB算法,使用的是: 1.实例化ORB orb cv.xfeatures2d.orb_create(nfeatures)参数: nfeatures: 特征点的最大数量 2.利用orb.detectAndCompute()检测关键点并计算 kp,des orb.detectAndCompute(gray,None)参数:…...
vue项目回显文本无法识别换行符
解决方法 1:使用<br/>替换文本中的\n,使用v-html渲染 <template> <div v-html"str"></div> </template> <script> let str 以下内容自动换行\n换行了 // 使用replace截取提换 this.str str.replace(/…...

Minio 部署
minio 官网:https://www.minio.org.cn/ 部署文档:https://www.minio.org.cn/docs/minio/container/operations/install-deploy-manage/deploy-minio-single-node-single-drive.html# 选择自己的部署环境: 我用的docker: docker pull qua…...

Kafka系列之:记录一次Kafka Topic分区扩容,但是下游flink消费者没有自动消费新的分区的解决方法
Kafka系列之:记录一次Kafka Topic分区扩容,但是下游flink消费者没有自动消费新的分区的解决方法 一、背景二、解决方法三、实现自动发现新的分区一、背景 生产环境Kafka集群压力大,Topic读写压力大,消费的lag比较大,因此通过扩容Topic的分区,增大Topic的读写性能理论上下…...
Ansible部署MariaDB galera集群(多主)
文章目录 Ansible部署MariaDB galera集群(多主)介绍节点规划基础环境准备编写剧本文件执行剧本文件查看集群状态测试 Ansible部署MariaDB galera集群(多主) 介绍 MariaDB Galera集群是一套基于同步复制的、多主的MySQL集群解决方案,使用节点没有单点故障ÿ…...
立体库-库龄
split 用法第一种: 1.对单个字符进行分割(注意这里是字符,不是字符串,故只能用单引号‘’) string sabcdeabcdeabcde; string[] sArrays.Split(c) ; foreach(string i in sArray) Console.WriteLine(i.ToString());…...
extern/头文件包含,实现一个函数被两个文件共用
目录 一、extern 1、在a.c文件中定义int add函数 2、在b.c文件中使用extern关键字声明add函数 二、用头文件包含的形式 1、在a.c文件中定义int add函数 2、创建一个名为a.h的头文件,其中包含add函数的函数原型 3、在b.c文件中包含a.c的头文件,并调…...

pgsql 查看某个表建立了那些索引sql
执行以下sql: SELECTns.nspname as schema_name,tab.relname as table_name,cls.relname as index_name,am.amname as index_type,idx.indisprimary as is_primary,idx.indisunique as is_unique FROMpg_index idx INNER JOIN pg_class cls ON cls.oididx.indexrel…...

【SCSS】网格布局中的动画
效果 index.html <!DOCTYPE html> <html><head><title> Document </title><link type"text/css" rel"styleSheet" href"index.css" /></head><body><div class"container">&l…...

Docker基础命令(一)
Docker使用1 一、运行终端 打开终端,输入docker images ,如果运行正常,表示docker已经可以在本电脑上使用了 二、docker常用命令 指令说明docker images查看已下载的镜像docker rmi 镜像名称:标签名删除已下载的镜像docker search 镜像从官…...

django4.2 day1Django快速入门
1、创建虚拟环境 打开cmd安装virtualenv pip install virtualenvwrapper-winworkon 查看虚拟环境mkvirtualenv 创建新的虚拟环境删除虚拟环境 rmvirtualenv 进入虚拟环境 workon env 2、创建django虚拟环境并安装django 创建虚拟环境mkvirtualenv django4env进入虚拟环境安…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...

Linux基础开发工具——vim工具
文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...

Tauri2学习笔记
教程地址:https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引:https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多,我按照Tauri1的教程来学习&…...
FTXUI::Dom 模块
DOM 模块定义了分层的 FTXUI::Element 树,可用于构建复杂的终端界面,支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...
使用python进行图像处理—图像滤波(5)
图像滤波是图像处理中最基本和最重要的操作之一。它的目的是在空间域上修改图像的像素值,以达到平滑(去噪)、锐化、边缘检测等效果。滤波通常通过卷积操作实现。 5.1卷积(Convolution)原理 卷积是滤波的核心。它是一种数学运算,…...

简约商务通用宣传年终总结12套PPT模版分享
IOS风格企业宣传PPT模版,年终工作总结PPT模版,简约精致扁平化商务通用动画PPT模版,素雅商务PPT模版 简约商务通用宣传年终总结12套PPT模版分享:商务通用年终总结类PPT模版https://pan.quark.cn/s/ece1e252d7df...