算法中的最优化方法课程复习

算法中的最优化方法课程复习

  • 单模函数、拟凸函数、凸函数
    • 证明
      • 证明一个线性函数与一个凸函数的和也是凸的
  • 梯度
  • 线性规划标准形式以及如何标准化
    • 标准形式
    • 常见标准化方法
    • 线性化技巧
  • 单纯形法
  • 二次规划
  • 无约束优化
    • Nelder-Mead
    • 线搜索
    • FR共轭梯度法
      • 例题
  • 优化算法的选择、停止准则
    • 算法选择
    • 停止准则
    • 例题

单模函数、拟凸函数、凸函数

单模函数
注意符号是小于等于,可以取等于号。
在这里插入图片描述
拟凸函数
在这里插入图片描述

凸函数
在这里插入图片描述
例子1
在这里插入图片描述
根据上面的性质判断,这个函数同时是拟凸函数、单模函数,但不是凸函数。
例子2
在这里插入图片描述
根据上面的性质判断,函数是单模函数、拟凸函数,但并不是凸函数。

证明

证明一个线性函数与一个凸函数的和也是凸的

f ( x ) = g ( x ) + h ( x ) f(x) = g(x) + h(x) f(x)=g(x)+h(x)其中 g ( x ) g(x) g(x)是一个凸函数 h ( x ) h(x) h(x)是一个线性函数(下面我们可以看出,线性函数也是凸函数)。
因此有以下性质 g ( λ x + ( 1 − λ ) y ) < = λ g ( x ) + ( 1 − λ ) g ( y ) g(\lambda x+(1-\lambda )y) <=\lambda g(x) + (1-\lambda)g(y) g(λx+(1λ)y)<=λg(x)+(1λ)g(y)以及 h ( λ x + ( 1 − λ ) y ) < = λ h ( x ) + ( 1 − λ ) h ( y ) h(\lambda x+(1-\lambda )y) <= \lambda h(x) + (1-\lambda)h(y) h(λx+(1λ)y)<=λh(x)+(1λ)h(y)
开始证明:
f ( λ x + ( 1 − λ ) y ) = g ( λ x + ( 1 − λ ) y ) + h ( λ x + ( 1 − λ ) y ) < = λ g ( x ) + ( 1 − λ ) g ( y ) + λ h ( x ) + ( 1 − λ ) h ( y ) = λ ( g ( x ) + h ( x ) ) + ( 1 − λ ) ( g ( y ) + h ( y ) ) = λ ( f ( x ) ) + ( 1 − λ ) ( f ( y ) ) f(\lambda x+(1-\lambda )y) \\ \qquad \qquad \qquad = g(\lambda x+(1-\lambda )y) + h(\lambda x+(1-\lambda )y) \\ \qquad \qquad \qquad \qquad \quad <=\lambda g(x) + (1-\lambda)g(y) +\lambda h(x) + (1-\lambda)h(y) \\ \qquad \qquad \qquad = \lambda (g(x)+h(x)) + (1-\lambda)(g(y)+h(y)) \\ = \lambda (f(x)) + (1-\lambda)(f(y)) f(λx+(1λ)y)=g(λx+(1λ)y)+h(λx+(1λ)y)<=λg(x)+(1λ)g(y)+λh(x)+(1λ)h(y)=λ(g(x)+h(x))+(1λ)(g(y)+h(y))=λ(f(x))+(1λ)(f(y))得证
其他如凸函数于凸函数的和仍为凸函数,也是如此证明。

梯度

负梯度方向是从当前来看函数值下降最快的方向,所以V1是负梯度方向,而梯度方向与负梯度方向相反。所以V5是梯度方向。(梯度方向与负梯度方向垂直于等值线的切线)
在这里插入图片描述

线性规划标准形式以及如何标准化

标准形式

目标函数:最小化
Minimize c ⊤ x \text{Minimize} \quad \mathbf{c}^\top \mathbf{x} Minimizecx
约束条件:
Subject to A x = b x ≥ 0 \begin{align*} \text{Subject to} \quad & \mathbf{Ax} = \mathbf{b} \\ & \mathbf{x} \geq \mathbf{0} \end{align*} Subject toAx=bx0

其中,

  • c \mathbf{c} c 是目标函数的系数向量;
  • x \mathbf{x} x 是决策变量向量;
  • A \mathbf{A} A 是约束系数矩阵;
  • b \mathbf{b} b 是约束右端项向量。

常见标准化方法

接下来以几个例子说明常见的标准化方法
m a x 7 x 1 + 2 x 2 − 2 x 3 + 8 s . t . x 1 − 2 x 2 + 3 x 3 − 8 x 4 < = 6 x 1 − x 3 < = 5 0 < = x 1 < = 9 x 2 < = 1 max \qquad 7x_1 + 2x_2 - 2x_3 + 8 \\s.t. \qquad x_1-2x_2+3x_3-8x_4<=6 \\ \qquad x_1 - x_3<=5 \\ \qquad 0<=x_1<=9 \\ \qquad x_2<=1 max7x1+2x22x3+8s.t.x12x2+3x38x4<=6x1x3<=50<=x1<=9x2<=1

  • 通过目标函数统一乘以-1将max优化问题转为min优化问题
  • 对于<=的不等式约束,加上一个非负的变量使其变为等式约束
  • 对于>=的不等式约束,减去一个非负的变量使其变为等式约束
  • 对于x<=0之类的约束,变为 -x>=0
  • 对于x正负无限制的变量,利用两个非负变量令 x = x 1 − x 2 , x 1 > = 0 , x 2 > = 0 x = x_1-x_2 ,x_1>=0,x_2>=0 x=x1x2,x1>=0,x2>=0化为非负变量
    因此上面的线性规划问题可以标准化如下
    m a x 7 x 1 + 2 x 2 − 2 x 3 + 8 s . t . x 1 − 2 x 2 + 3 x 3 − 8 x 4 + x 5 = 6 x 1 − x 3 + x 6 = 5 x 1 + x 7 = 9 x 2 + x 8 = 1 x 1 , x 5 , x 6 , x 7 , x 8 > = 0 max \qquad 7x_1 + 2x_2 - 2x_3 + 8 \\s.t. \qquad x_1-2x_2+3x_3-8x_4+x_5=6 \\ \qquad x_1 - x_3 + x_6=5 \\ \qquad x_1 + x_7=9 \\ \qquad x_2 + x_8=1 \\ \qquad x_1,x_5,x_6,x_7,x_8>=0 max7x1+2x22x3+8s.t.x12x2+3x38x4+x5=6x1x3+x6=5x1+x7=9x2+x8=1x1,x5,x6,x7,x8>=0
    由于 x 2 , x 3 , x 4 x_2,x_3,x_4 x2,x3,x4并没有非负性的限制,因此需要把这些变量也做一定的变换。
    x 2 = x 9 − x 10 , x 3 = x 11 − x 12 , x 4 = x 13 − x 14 x_2 = x_9 - x_{10},x_3 = x_{11}-x_{12},x_4 = x_{13}-x_{14} x2=x9x10,x3=x11x12,x4=x13x14且有 x 9 . . . x 14 > = 0 x_9...x_{14}>=0 x9...x14>=0
    原线性规划问题可以变为
    m a x 7 x 1 + 2 ( x 9 − x 10 ) − 2 ( x 11 − x 12 ) + 8 s . t . x 1 − 2 ( x 9 − x 10 ) + 3 ( x 11 − x 12 ) − 8 ( x 13 − x 14 ) + x 5 = 6 x 1 − ( x 11 − x 12 ) + x 6 = 5 x 1 + x 7 = 9 ( x 9 − x 10 ) + x 8 = 1 x 1 , x 5 , x 6 , x 7 , x 8 , x 9 . . . x 14 > = 0 max \qquad 7x_1 + 2(x_9 - x_{10}) - 2(x_{11}-x_{12}) + 8 \\s.t. \qquad x_1-2(x_9 - x_{10})+3(x_{11}-x_{12})-8(x_{13}-x_{14})+x_5=6 \\ \qquad x_1 - (x_{11}-x_{12})+ x_6=5 \\ \qquad x_1 + x_7=9 \\ \qquad (x_9 - x_{10}) + x_8=1 \\ \qquad x_1,x_5,x_6,x_7,x_8,x_9...x_{14}>=0 max7x1+2(x9x10)2(x11x12)+8s.t.x12(x9x10)+3(x11x12)8(x13x14)+x5=6x1(x11x12)+x6=5x1+x7=9(x9x10)+x8=1x1,x5,x6,x7,x8,x9...x14>=0

线性化技巧

有待更新

单纯形法

单纯形法详细内容见这篇博客

二次规划

有待更新

无约束优化

多维无约束优化(牛顿法、BFGS、DFP、Levenberg-Marquardt)

Nelder-Mead

Nelder-Mead方法在优化过程中不需要用到导数,但是在优化变量个数较多时相对没那么高效。
在这里插入图片描述

线搜索

在这里插入图片描述

FR共轭梯度法

在这里插入图片描述

例题

什么是最速下降法?最速下降法的步聚是什么?最速下降法是不是一定能够最快搜索到最优解?如果是请阐述原因,如果不是,请说明什么情况下不能,可以采用什么方法更高效,为什么?

最速下降法用于寻找多元函数的局部最小值。它的核心思想是沿着目标函数的梯度方向迭代地调整参数值,以达到逐渐接近最优解的目的。
步骤:

  1. 初始值设置: 选择初始点 x 0 \mathbf{x}_0 x0
  2. 计算梯度: 在当前点计算目标函数的梯度 ∇ f ( x ) \nabla f(\mathbf{x}) f(x)
  3. 更新参数: 沿着负梯度方向调整参数值,计算下一个点的位置 x k + 1 = x k − α k ∇ f ( x k ) \mathbf{x}_{k+1} = \mathbf{x}_k - \alpha_k \nabla f(\mathbf{x}_k) xk+1=xkαkf(xk),其中 α k \alpha_k αk 是步长(学习率)。
  4. 重复迭代: 重复步骤 2 和步骤 3,直到满足收敛条件或达到迭代次数上限。

最速下降法的步骤通常是沿着梯度方向最陡峭的下降方向更新参数。但它不一定能够最快地搜索到最优解。这是因为最速下降法可能会受到以下几个限制或问题的影响:

  1. 初始点选择:若初始点选择不当,可能会导致收敛到局部最优解而非全局最优解。
  2. 学习率的选取:学习率过大或过小都可能导致算法的性能不佳。过大的学习率可能导致振荡或错过最优解,而过小的学习率会导致收敛速度慢。
  3. 目标函数的形状:在目标函数非凸或存在高度不规则的情况下,最速下降法可能陷入局部最优解,而无法到达全局最优解。

在存在这些问题的情况下,可以考虑使用其他更高效的优化算法,例如:

  1. 牛顿法和拟牛顿法:这些方法利用了目标函数的二阶导数信息,能够更快地收敛,并且对于某些情况下,能够避免最速下降法所遇到的问题。
  2. 启发式算法:使用模拟退火算法、遗传算法等启发式算法可以消除局部最优点的影响。也可以在启发式算法结果的基础上进一步做基于梯度的精确优化算法。
  3. 多起点局部优化:选择多个初始点,分别基于这些初始点进行优化。

因此,最速下降法并不总是能够最快搜索到最优解,特别是在目标函数复杂、非凸或存在不良条件数的情况下。针对不同的问题,需要综合考虑目标函数的特性,并根据实际情况选择合适的优化算法。

优化算法的选择、停止准则

算法选择

  1. 目标函数和约束都是线性的:单纯形法或者内点法(变量或者约束个数>1000)
  2. 目标函数二次的(凸)线性约束:改进的单纯形法或者内点法
  3. 目标函数和约束都是凸的:椭圆法、割平面法、内点法
  4. 有多个局部极小点:多初始值优化、模拟退火算法、遗传算法
  5. 非线性、非凸优化、无约束:Levenberg-Marquardt 、Newton、quasi-Newton 、steepest descent、 Powell’s perpendicular method (or Nelder-Mead)
  6. 非线性、非凸优化、有约束:
  • 等式约束:elimination, Lagrange method
  • 线性约束:gradient projection or SQP
  • 非线性约束:SQP,or penalty or barrier function

停止准则

  • 单纯形法:可以在有限步迭代内收敛
  • 凸优化算法:
    ∣ f ( x ∗ ) − f ( x k ) ∣ ⩽ ε f , g ( x k ) ⩽ ε g ∥ x ∗ − x k ∥ 2 ⩽ ε x (for ellipsoid)  \begin{aligned} \left|f\left(x^*\right)-f\left(x_k\right)\right| & \leqslant \varepsilon_f, \quad g\left(x_k\right) \leqslant \varepsilon_g \\ \left\|x^*-x_k\right\|_2 & \leqslant \varepsilon_x \quad \text { (for ellipsoid) } \end{aligned} f(x)f(xk)xxk2εf,g(xk)εgεx (for ellipsoid) 
  • 无约束非线性优化: ∥ ∇ f ( x k ) ∥ 2 ⩽ ε ∇ \left\|\nabla f\left(x_k\right)\right\|_2 \leqslant \varepsilon_{\nabla} f(xk)2ε
  • 有约束非线性优化:
    ∥ ∇ f ( x k ) + ∇ g ( x k ) μ + ∇ h ( x k ) λ ∥ 2 ⩽ ε K T , 1 ∣ μ T g ( x k ) ∣ ⩽ ε K T , 2 μ ⩾ − ε K T , 3 ∥ h ( x k ) ∥ 2 ⩽ ε K T , 4 g ( x k ) ⩽ ε K T , 5 \begin{aligned} \left\|\nabla f\left(x_k\right)+\nabla g\left(x_k\right) \mu+\nabla h\left(x_k\right) \lambda\right\|_2 & \leqslant \varepsilon_{\mathrm{KT}, 1} \\ \left|\mu^T g\left(x_k\right)\right| & \leqslant \varepsilon_{\mathrm{KT}, 2} \\ \mu & \geqslant-\varepsilon_{\mathrm{KT}, 3} \\ \left\|h\left(x_k\right)\right\|_2 & \leqslant \varepsilon_{\mathrm{KT}, 4} \\ g\left(x_k\right) & \leqslant \varepsilon_{\mathrm{KT}, 5} \end{aligned} f(xk)+g(xk)μ+h(xk)λ2 μTg(xk) μh(xk)2g(xk)εKT,1εKT,2εKT,3εKT,4εKT,5
  • 模拟退火、遗传算法:达到最大迭代次数。

例题

max ⁡ x ∈ R 3 4 x 1 + 5 x 2 − 6 x 3 s.t.  log ⁡ ∣ 2 x 1 + 7 x 2 + 5 x 3 ∣ ⩽ 1 x 1 , x 2 , x 3 ⩾ 0 \begin{aligned} & \max _{x \in \mathbb{R}^3} 4 x_1+5 x_2-6 x_3 \\ & \text { s.t. } \log \left|2 x_1+7 x_2+5 x_3\right| \leqslant 1 \\ & x_1, x_2, x_3 \geqslant 0 \\ \end{aligned} xR3max4x1+5x26x3 s.t. log2x1+7x2+5x31x1,x2,x30
约束可以逐步简化
先简化为 ∣ 2 x 1 + 7 x 2 + 5 x 3 ∣ ⩽ e \left|2 x_1+7 x_2+5 x_3\right| \leqslant e 2x1+7x2+5x3e
在简化为 2 x 1 + 7 x 2 + 5 x 3 ⩽ e − 2 x 1 − 7 x 2 − 5 x 3 ⩽ e 2 x_1+7 x_2+5 x_3 \leqslant e \\ -2 x_1-7 x_2-5 x_3 \leqslant e 2x1+7x2+5x3e2x17x25x3e
这样约束就变为了一个线性化约束,可以在化为标准型之后用单纯性法求解,也可以用内点法求解。
单纯形法在有限步会求得最终结果,而内点法收敛条件为 ∣ f ( x ∗ ) − f ( x k ) ∣ ⩽ ε f \left|f\left(x^*\right)-f\left(x_k\right)\right|\leqslant \varepsilon_f f(x)f(xk)εf

min ⁡ x ∈ R 3 max ⁡ ( cosh ⁡ ( x 1 + x 2 + x 3 ) , ( 5 x 1 − 6 x 2 + 7 x 3 + 6 ) 2 ) s.t.  ∥ x ∥ 2 ⩽ 10 R e m a r k : cosh ⁡ x = e x + e − x 2 \begin{aligned} & \min _{x \in \mathbb{R}^3} \max \left(\cosh \left(x_1+x_2+x_3\right),\left(5 x_1-6 x_2+7 x_3+6\right)^2\right) \\ & \text { s.t. }\|x\|_2 \leqslant 10 \end{aligned} \\Remark: \cosh x=\frac{e^x+e^{-x}}{2} xR3minmax(cosh(x1+x2+x3),(5x16x2+7x3+6)2) s.t. x210Remark:coshx=2ex+ex
问题仍然可以做简化令 t > = cosh ⁡ ( x 1 + x 2 + x 3 ) t > = ( 5 x 1 − 6 x 2 + 7 x 3 + 6 ) 2 t >= \cosh \left(x_1+x_2+x_3\right)\\ t>=\left(5 x_1-6 x_2+7 x_3+6\right)^2 t>=cosh(x1+x2+x3)t>=(5x16x2+7x3+6)2化为
min ⁡ x ∈ R 3 t s.t.  ∥ x ∥ 2 ⩽ 10 t > = cosh ⁡ ( x 1 + x 2 + x 3 ) t > = ( 5 x 1 − 6 x 2 + 7 x 3 + 6 ) 2 \begin{aligned} & \min _{x \in \mathbb{R}^3} t \\ & \text { s.t. }\|x\|_2 \leqslant 10\\ & t >= \cosh \left(x_1+x_2+x_3\right)\\& t>=\left(5 x_1-6 x_2+7 x_3+6\right)^2 \end{aligned} xR3mint s.t. x210t>=cosh(x1+x2+x3)t>=(5x16x2+7x3+6)2
问题变为了常见的含约束凸优化问题,可以用切平面法、椭球法、内点法
收敛条件:
∣ f ( x ∗ ) − f ( x k ) ∣ ⩽ ε f , g ( x k ) ⩽ ε g ∥ x ∗ − x k ∥ 2 ⩽ ε x (for ellipsoid)  \begin{aligned} \left|f\left(x^*\right)-f\left(x_k\right)\right| & \leqslant \varepsilon_f, \quad g\left(x_k\right) \leqslant \varepsilon_g \\ \left\|x^*-x_k\right\|_2 & \leqslant \varepsilon_x \quad \text { (for ellipsoid) } \end{aligned} f(x)f(xk)xxk2εf,g(xk)εgεx (for ellipsoid) 

max ⁡ x ∈ R 2 e − x 1 2 − x 2 2 ( x 1 2 + x 1 x 2 + 6 x 1 ) \max _{x \in \mathbb{R}^2} e^{-x_1^2-x_2^2}\left(x_1^2+x_1 x_2+6 x_1\right) xR2maxex12x22(x12+x1x2+6x1)
无约束非线性问题,用LM,牛顿法,那几种共轭梯度法,最速下降法,方向+一维搜索法,NM法等
LM,牛顿法,那几种共轭梯度法,最速下降法,方向+一维搜索法收敛条件: ∥ ∇ f ( x k ) ∥ 2 ⩽ ε ∇ \left\|\nabla f\left(x_k\right)\right\|_2 \leqslant \varepsilon_{\nabla} f(xk)2ε
NM法收敛条件:
∣ f ( x ∗ ) − f ( x k ) ∣ ⩽ ε f , ∥ x ∗ − x k ∥ 2 ⩽ ε x \begin{aligned} \left|f\left(x^*\right)-f\left(x_k\right)\right| & \leqslant \varepsilon_f,\\ \left\|x^*-x_k\right\|_2 & \leqslant \varepsilon_x \end{aligned} f(x)f(xk)xxk2εf,εx

max ⁡ x ∈ R 3 x 1 x 2 x 3 1 + x 1 6 + x 2 4 + x 3 2 s.t.  x 1 + x 2 + x 3 = 1 \begin{aligned} & \max _{x \in \mathbb{R}^3} \frac{x_1 x_2 x_3}{1+x_1^6+x_2^4+x_3^2} \\ & \text { s.t. } x_1+x_2+x_3=1 \end{aligned} xR3max1+x16+x24+x32x1x2x3 s.t. x1+x2+x3=1
由于有多个局部最优点,使用模拟退火算法、遗传算法、以及多起点优化算法(每个起点可分别用内点法之类的优化算法)。
模拟退火算法、遗传算法在达到最大迭代次数之后算法退出。

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

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

相关文章

electron命令下载失败,手动安装教程

现象&#xff1a;pnpm i electron, 一直卡在提示错误node install.js 一 、下载需要的electron版本 地址 二、下载完毕&#xff0c;解压压缩包&#xff0c; 进入项目的node_modules/electron文件夹&#xff0c;创建dist文件夹&#xff0c;将下载的zip包里的文件复制到dist…

链路追踪详解(四):分布式链路追踪的事实标准 OpenTelemetry 概述

目录 OpenTelemetry 是什么&#xff1f; OpenTelemetry 的起源和目标 OpenTelemetry 主要特点和功能 OpenTelemetry 的核心组件 OpenTelemetry 的工作原理 OpenTelemetry 的特点 OpenTelemetry 的应用场景 小结 OpenTelemetry 是什么&#xff1f; OpenTelemetry 是一个…

DevEco Studio 鸿蒙(HarmonyOS)项目结构

DevEco Studio 鸿蒙&#xff08;HarmonyOS&#xff09;项目结构 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、项目结构 创建简单的Hello World移动应用项目结构如下图 由上到下说明各个文件夹的作用 .hvigor&#xff1a;存…

阅读笔记——《UTOPIA: Automatic Generation of Fuzz Driverusing Unit Tests》

【参考文献】Jeong B, Jang J, Yi H, et al. UTOPIA: automatic generation of fuzz driver using unit tests[C]//2023 IEEE Symposium on Security and Privacy (SP). IEEE, 2023: 2676-2692.【注】本文仅为作者个人学习笔记&#xff0c;如有冒犯&#xff0c;请联系作者删除。…

智慧储能数字孪生:能源未来的智慧引擎

随着社会对清洁能源的需求不断增加&#xff0c;智能储能技术成为能源转型的关键驱动力。在这一领域中&#xff0c;数字孪生技术的应用为智慧储能带来了全新的可能性。数字孪生是指数字化、实时、可视化的模拟系统&#xff0c;通过复制现实世界中的对象或过程&#xff0c;为智能…

SpeechGPT领航:创新的130亿参数跨模态AI模型

引言 在人工智能的最新进展中&#xff0c;SpeechGPT以其130亿参数的规模和跨模态会话能力引起了业界的广泛关注。这一由复旦大学邱锡鹏教授团队开发的模型&#xff0c;不仅在技术层面上取得了重大突破&#xff0c;也为多模态人工智能&#xff08;AI&#xff09;的未来发展指明…

Selenium库自动化测试入门

前言 为什么要学selenium&#xff1f;&#xff1f;前面已经学了requests库我们会发现 对于绝大多数动态渲染的网页来说&#xff0c;用requests进行爬虫比较繁琐。 所以我们还是要学习一下selenium库&#xff0c;以帮助我们更高效的爬取网页。 环境&#xff1a; pychar 202…

机器学习算法新手入门指南

AI算法的种类在人工智能领域中非常丰富&#xff0c;而且多样化&#xff0c;AI算法利用数学、统计学和计算机科学等领域的原理和方法&#xff0c;通过模拟人类智能和学习能力来解决各种复杂的问题。 在监督学习领域&#xff0c;我们有经典的线性回归和逻辑回归算法&#xff0c;…

光栅化渲染:可见性问题和深度缓冲区算法

在前面第二章中&#xff0c;我们了解到&#xff0c;在投影点&#xff08;屏幕空间中的点&#xff09;的第三个坐标中&#xff0c;我们存储原始顶点 z 坐标&#xff08;相机空间中点的 z 坐标&#xff09;&#xff1a; 当一个像素与多个三角形重叠时&#xff0c;查找三角形表面上…

Java 多线程之线程安全集合

文章目录 一、概述二、List 接口线程安全实现类2.1 普通 List 变线程安全 List2.2 Vector2.3 CopyOnWriteArrayList 三、Map 接口线程安全实现类3.1 普通 Map 变线程安全 Map3.2 Hashtable3.3 ConcurrentHashMap3.4 ConcurrentSkipListMap 有序/跳表 四、Set 接口线程安全实现类…

J2EE(架构师考试复习资料)

J2EE 是针对 Web Service、业务对象、数据访问和消息报传送的一组规范。这组应用编程接口确定了 Web 应用与驻留它们的服务器之间的通信方式。J2EE 注重两件事&#xff0c;一是建立标准&#xff0c;使 Web 应用的部署与服务器无关&#xff1b;二是使服务器能控制构件的生命周期…

自定义Mybatis LanguageDriver性能优化

场景&#xff1a;高并发情况下mybatis 动态sql 解析 锁问题优化 优化前 并发测试 XMLLanguageDriver 类 的 createSqlSource 方法有锁 而且 每次执行时都会走该方法 优化前 &#xff1a; 线程有Block 优化后的 LanguageDriver public class CustomXMLLanguageDriver im…

大数据机器学习与深度学习——回归模型评估

大数据机器学习与深度学习——回归模型评估 回归模型的性能的评价指标主要有&#xff1a;MAE(平均绝对误差)、MSE(平均平方误差)、RMSE(平方根误差)、R2_score。但是当量纲不同时&#xff0c;RMSE、MAE、MSE难以衡量模型效果好坏&#xff0c;这就需要用到R2_score。 平均绝对…

Python实现多种图像锐化方法:拉普拉斯算子和Sobel算子

Python实现多种图像锐化方法&#xff1a;拉普拉斯算子和Sobel算子 图像和视频逐渐成为人们生活中信息获取的重要来源&#xff0c;而图像和视频在传输过程中有很多因素可能造成图像模糊&#xff0c;比如不正确的聚焦会产生离焦模糊&#xff0c;景物和照相机的相对运动会造成运动…

GBASE南大通用携手宇信科技打造“一表通”全链路解决方案

什么是“一表通”&#xff1f; “一表通”是国家金融监督管理总局为发挥统计监督效能、完善银行保险监管统计制度、推进监管数据标准化建设、打破数据壁垒&#xff0c;而制定的新型监管数据统计规范。相较于以往的报送接口&#xff0c;“一表通”提高了对报送时效性、校验准确性…

java集合的迭代器与遍历

文章目录 迭代器Iterator1、什么是Iterator2&#xff0c;iterator接口的API3、Irerator()方法细节解释4. Irerator的原理示意图5. forEach循环与Iterator遍历的区别与联系 ListIterator1.ListIterator的概述(1) 概念(2) 解析 2.ListIterator的生成3.ListIterator的API4.ListIte…

【从零开始学习JVM | 第九篇】了解 常见垃圾回收器

前言&#xff1a; 垃圾回收器&#xff08;Garbage Collector&#xff09;是现代编程语言中的一项重要技术&#xff0c;它提供了自动内存管理的机制&#xff0c;极大地简化了开发人员对内存分配和释放的繁琐工作。通过垃圾回收器&#xff0c;我们能够更高效地利用计算机的内存资…

selenium+python自动化测试 —— 解决无法启动IE浏览器及报错问题!

前言&#xff1a;记录启动IE浏览器的报错及解决方法。 错误1&#xff1a; selenium.common.exceptions.WebDriverException: Message: IEDriverServer.exe executable needs to be in PATH. Please download from http://selenium-release.storage.googleapis.com/index.html…

【C语言:动态内存管理】

文章目录 前言1.malloc2.free3.calloc4.realloc5.动态内存常见错误6.动态内存经典笔试题分析7.柔性数组8.C/C中的内存区域划分 前言 文章的标题是动态内存管理&#xff0c;那什么是动态内存管理&#xff1f;为什么有动态内存管理呢&#xff1f; 回顾一下以前学的知识&#xff…

SpringBoot+Vue3前后端快速整合入门

前言 最近需要维护一个个人项目&#xff0c;由于笔者是一个大后端&#xff0c;所以借此机会把前端学习过程记录一下&#xff0c;方便后续回顾。 前端项目初始化 安装npm 在前端项目初始化时&#xff0c;我们必须要安装好node&#xff0c;官网地址如下&#xff0c;因为笔者后…