当前位置: 首页 > news >正文

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划

  • 非线性规划
    • 1. 模型原理
      • 1.1 非线性规划的标准型
      • 1.2 非线性规划求解的Matlab函数
    • 2. 典型例题
    • 3. matlab代码求解
      • 3.1 例1 一个简单示例
      • 3.2 例2 选址问题
        • 1. 第一问 线性规划
        • 2. 第二问 非线性规划

非线性规划

非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。20世纪50年代初,库哈(H.W.Kuhn)和托克(A.W.Tucker)提出了非线性规划的基本定理,为非线性规划奠定了理论基础。这一方法在工业、交通运输、经济管理和军事等方面有广泛的应用,特别是在“最优设计”方面,它提供了数学基础和计算方法,因此有重要的实用价值。

非线性规划模型特点:

  • 模型中至少一个变量是非线性,即包含 x 2 , e x , 1 x , sin ⁡ x , log ⁡ 2 x x^2,e^x,\frac1x,\sin x,\log_2x x2,ex,x1,sinx,log2x等形式
  • 线性规划有通用求准确解的方法(单纯形法),它的最优解只存在于可行域的边界上;非线性规划的最优解(若存在)可能在其可行域的任一点达到,目前非线性规划还没有适合各种问题的一般解法,各种方法都有其特定的适用范围

1. 模型原理

1.1 非线性规划的标准型

m i n f ( x ) s.t. { A x ≤ b , A e q ⋅ x = b e q (线性) c ( x ) ≤ 0 , C e q ( x ) = 0 (非线性) l b ≤ x ≤ u b min\quad f(x)\\\text{s.t.}\begin{cases}Ax\leq b, Aeq\cdot x=beq&\text{(线性)}\\c\big(x\big)\leq0, Ceq\big(x\big)=0&\text{(非线性)}\\lb\leq x\leq ub\end{cases} minf(x)s.t. Axb,Aeqx=beqc(x)0,Ceq(x)=0lbxub(线性)(非线性)

1.2 非线性规划求解的Matlab函数

f m i n c o n fmincon fmincon函数: [ x f v a l ] = f m i n c o n ( f u n , x 0 , A , b , A e q , b e q , l b , u b , n o n l c o n , o p t i o n ) [x\:fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,option) [xfval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,option)

  • f u n : fun: fun把目标函数定义为一个单独的函数文件(min)
  • x 0 : x0: x0:决策变量的初始值
  • A , b : A, b: A,b: 线性约束的不等式变量系数矩阵和常数项矩阵 ≤ 或 < \le或< <
  • A e q , b e q : Aeq, beq: Aeq,beq: 线性约束的等式变量系数矩阵和常数项矩阵
  • l b , u b : lb, ub: lb,ub:决策变量的最小取值和最大取值
  • n o n l c o n : nonlcon: nonlcon:非线性约束,包括不等式和等式
  • o p t i o n : option: option:求解非线性规划使用的方法

注意:

  • 非线性规划中对于初始值 x 0 x0 x0的选取非常重要,因为非线性规划的算法求解出来的是一个局部优化解。如果要求全局最优解,有两个思路:

    • 给定不同初始值,在里面找到一个最优解;

    • 先用蒙特卡罗模拟,得到一个蒙特卡罗解,然后将这个解作为初始值来求最优解。

  • o p t i o n option option选项可以给定求解的算法,一共有五种,interior-point(内点法)trust-region-reflective(信赖域反射法)sqp(序列二次规划法)sqp-legacy(约束非线性优化算法)active-set (有效集法)。不同的算法有其各自的优缺点和适用情况,我们可以改变求解的算法来对比求解的结果。

  • $ fun $表示目标函数,我们要编写一个独立的”m文件“储存目标函数

  • n o n l c o n nonlcon nonlcon表示非线性部分的约束,也要编写一个独立的”m文件“存储非线性约束条件

  • 决策变量的下表要改括号,比如 x 1 x_1 x1要改为 x ( 1 ) x(1) x(1),matlab才能识别

  • 若不存在某种约束,可以用”[]“代替,若后面全为"[]“且option使用默认,后面的”[]"可以省略

2. 典型例题

选址问题:

临时料场: A ( 5 , 1 ) A( 5, 1) A(5,1), A ( 2 , 7 ) ; A( 2, 7) ; A(2,7);日储量各20吨

工地位置坐标及日需求量
横坐标1.258.750.55.7537.25
纵坐标1.250.754.7556.57.25
日需求量3547611

(1)试制定每天的供应计划,即从两料场分别向各工地运送多少吨水泥,使总的地千米数最小?

(2)为了进一步减少吨千米数,打算舍弃两个临时料场,改建两个新的,日储量各为20吨,问应建在何处,节省的吨千米数为多大?

  1. 确定决策变量

    设第 i i i个工地的坐标 ( a i , b i ) (a_i,b_i) (ai,bi),水泥日用量 d i , i = 1 , 2 , … , 6 d_i,i=1,2,\dots,6 di,i=1,2,,6,料场位置 ( x j , y j ) (x_j,y_j) (xj,yj),日储量 e j , j = 1 , 2 e_j,j=1,2 ej,j=1,2;从料场 j j j向工地 i i i的运送量为 x i j x_{ij} xij

  2. 确定约束条件

    • 料场水泥运输总量不超过其日储量: ∑ i = 1 6 x i j ≤ e j , j = 1 , 2 \sum_{i=1}^{6}x_{ij}\leq e_{j} ,j=1 ,2 i=16xijej,j=1,2
    • 两个料场向某工地运输量之和等于该工地水泥日用量: ∑ j = 1 2 x i j = d i , i = 1 , 2 , ⋯ , 6 \sum_{j=1}^{2}x_{ij}=d_{i} ,i=1 ,2 ,\cdots,6 j=12xij=di,i=1,2,,6
  3. 确定目标函数

    求总吨千米数最小,即运送量乘运送距离求和最小: min ⁡ f = ∑ j = 1 2 ∑ i = 1 6 x i j ( x j − a i ) 2 + ( y j − b i ) 2 \min f=\sum_{j=1}^{2}\sum_{i=1}^{6}x_{ij}\sqrt{\left(x_{j}-a_{i}\right)^{2}+\left(y_{j}-b_{i}\right)^{2}} minf=j=12i=16xij(xjai)2+(yjbi)2

  4. 建立模型
    m i n f = ∑ j = 1 2 ∑ i = 1 6 x i j ( x j − a i ) 2 + ( y j − b i ) 2 s . t . { ∑ i = 1 6 x i j ≤ e j , j = 1 , 2 ∑ j = 1 2 x i j = d i , i = 1 , 2 , … , 6 x i j ≥ 0 , i = 1 , 2 , … , 6 ; j = 1 , 2 \begin{aligned}&min\quad f=\sum_{j=1}^{2}\sum_{i=1}^{6}x_{ij}\sqrt{\left(x_{j}-a_{i}\right)^{2}+\left(y_{j}-b_{i}\right)^{2}}\\&s.t.\begin{cases}\sum_{i=1}^{6}x_{ij}\leq e_{j},j=1,2\\\sum_{j=1}^{2}x_{ij}=d_{i},i=1,2,\ldots,6\\x_{ij}\geq0,i=1,2,\ldots,6;j=1,2\end{cases}\end{aligned} minf=j=12i=16xij(xjai)2+(yjbi)2 s.t. i=16xijej,j=1,2j=12xij=di,i=1,2,,6xij0,i=1,2,,6;j=1,2

  5. 求解

    • 对于第一问:因料场位置已知,故决策变量仅为 x i j x_{ij} xij,为线性规划模型

    • 对于第二问:新料场位置未知,所以 x j x_j xj y j y_j yj均为变量,且不是线性的,故为非线性规划模型

    • 共有8个约束
      m i n f = ∑ j = 1 2 ∑ i = 1 6 x i j ( x j − a i ) 2 + ( y j − b i ) 2 s . t . { ∑ i = 1 6 x i j ≤ e j , j = 1 , 2 ( x 11 + x 21 + … + x 61 ≤ e 1 , x 12 + x 22 + … + x 62 ≤ e 2 ) ∑ j = 1 2 x i j = d i , i = 1 , 2 , … , 6 ( x 11 + x 12 = d 1 , … , x 61 + x 62 = d 6 ) x i j ≥ 0 , i = 1 , 2 , … , 6 ; j = 1 , 2 \begin{aligned}&min\quad f=\sum_{j=1}^{2}\sum_{i=1}^{6}x_{ij}\sqrt{\left(x_{j}-a_{i}\right)^{2}+\left(y_{j}-b_{i}\right)^{2}}\\ &s.t.\begin{cases}\sum_{i=1}^{6}x_{ij}\leq e_{j},j=1,2\left(x_{11}+x_{21}+\ldots+x_{61}\leq e_{1},x_{12}+x_{22}+\ldots+x_{62}\leq e_{2}\right)\\ \sum_{j=1}^{2}x_{ij}=d_{i},i=1,2,\ldots,6\begin{pmatrix}x_{11}+x_{12}=d_1,\ldots, x_{61}+x_{62}=d_6\end{pmatrix}\\ x_{ij}\geq0,i=1,2,\ldots,6;j=1,2\end{cases}\end{aligned} minf=j=12i=16xij(xjai)2+(yjbi)2 s.t. i=16xijej,j=1,2(x11+x21++x61e1,x12+x22++x62e2)j=12xij=di,i=1,2,,6(x11+x12=d1,,x61+x62=d6)xij0,i=1,2,,6;j=1,2
      注意:在matlab里这些双角标的变量要改为单角标的变量,如 x 11 → x 1 , x 21 → x 2 , … , x 62 → x 12 x_{11}\to x_{1} ,\quad x_{21}\to x_{2} ,\quad\ldots ,\quad x_{62}\to x_{12} x11x1,x21x2,,x62x12

3. matlab代码求解

3.1 例1 一个简单示例

求解:
m i n y = x 1 2 + x 2 2 − x 1 x 2 − 2 x 1 − 5 x 2 , s . t . { − ( x 1 − 1 ) 2 + x 2 ≥ 0 , 2 x 1 − 3 x 2 + 6 ≥ 0 \begin{aligned}&min\quad\mathrm{y}=x_{1}^{2}+x_{2}^{2}-x_{1}x_{2}-2x_{1}-5x_{2},\\&\mathrm{s.t.}\begin{cases}-\left(x_1-1\right)^2+x_2\geq0,\\2x_1-3x_2+6\geq0\end{cases}\end{aligned} miny=x12+x22x1x22x15x2,s.t.{(x11)2+x20,2x13x2+60
非线性规划的目标函数fun1.m:

function f=fun1(x)
%FUN1 非线性规划的目标函数
%   这里的f实际上就是目标函数,函数的返回值也是f
%   输入值x实际上就是决策向量,由x1和x2组成的向量
% min f(x)=x1^2+x2^2-x1*x2-2x1-5x2f=x(1)^2+x(2)^2-x(1)*x(2)-2*x(1)-5*x(2);
end

非线性规划中的非线性约束nonlfun1.m:

function [c ceq]=nonlfun1(x)
%NONLFUN1 非线性规划中的非线性约束,c为非线性不等式约束,ceq为非线性等式约束
%   输入值x为决策变量
%   返回值为 c(非线性不等式约束),ceq(非线性等式约束)
%   -(x1-1)^2+x2>=0c=(x(1)-1)^2-x(2);ceq=[];
end

给定任意初始值进行求解:

clear;
clc;
format long g %将matlab的计算结果显示为一般的长数字格式(默认保留两位小数或者使用科学计数法)
% min f(x)=x1^2+x2^2-x1*x2-2x1-5x2
% s.t. -(x1-1)^2+x2>=0; 2x1-3x2+6>=0
x0=[0 0];%任意给定一个初始值
A=[-2 3];
b=6;
disp("使用内点法求解:")
[x,fval]= fmincon(@fun1,x0,A,b,[],[],[],[],@nonlfun1)% 默认使用内点法
disp("使用SQP求解:")
option=optimoptions('fmincon','Algorithm','sqp');
[x,fval]= fmincon(@fun1,x0,A,b,[],[],[],[],@nonlfun1,option)

输出:

使用内点法求解:找到满足约束的局部最小值。优化已完成,因为目标函数沿
可行方向在最优性容差值范围内呈现非递减,
并且在约束容差值范围内满足约束。<停止条件详细信息>x =2.99941592955142          3.99922426270024fval =-12.9999995101786使用SQP求解:找到满足约束的局部最小值。优化已完成,因为目标函数沿
可行方向在最优性容差值范围内呈现非递减,
并且在约束容差值范围内满足约束。<停止条件详细信息>x =3.00000000090774          4.00000000060516fval =-13

使用蒙特卡罗的方法来找初始值在进行非线性规划求解:

%% 使用蒙特卡罗的方法来找初始值(推荐)
clc;
clear;
n=10000000;%生成的随机数组数
x1=unifrnd(-100,100,n,1); %生成在[-100,100]之间均匀分布的随机数组成n行1列的向量构成x1
x2=unifrnd(-100,100,n,1); %生成在[-100,100]之间均匀分布的随机数组成n行1列的向量构成x1
fmin=+inf; % 初始化函数f的最小值为正无穷
for i=1:nx=[x1(i),x2(i)];%构造x向量if ((x(1)-1)^2-x(2)<=0) && (-2*x1(i)-3*x2(i)-6<=0)result=x(1)^2+x(2)^2-x(1)*x(2)-2*x(1)-5*x(2);if result<fminfmin=result;x0=x;endend
end
disp("蒙特卡罗选取的初始值为:")
disp(x0)
A=[-2,3];
b=6;
[x,fval]= fmincon(@fun1,x0,A,b,[],[],[],[],@nonlfun1)

输出:

蒙特卡罗选取的初始值为:3.00156691366464          4.03556138516905找到满足约束的局部最小值。优化已完成,因为目标函数沿
可行方向在最优性容差值范围内呈现非递减,
并且在约束容差值范围内满足约束。<停止条件详细信息>x =2.9992425325257          3.99899914772717fval =-12.9999991826508

3.2 例2 选址问题

模型:
m i n f = ∑ j = 1 2 ∑ i = 1 6 x i j ( x j − a i ) 2 + ( y j − b i ) 2 s . t . { ∑ i = 1 6 x i j ≤ e j , j = 1 , 2 ∑ j = 1 2 x i j = d i , i = 1 , 2 , … , 6 x i j ≥ 0 , i = 1 , 2 , … , 6 ; j = 1 , 2 \begin{aligned}&min\quad f=\sum_{j=1}^{2}\sum_{i=1}^{6}x_{ij}\sqrt{\left(x_{j}-a_{i}\right)^{2}+\left(y_{j}-b_{i}\right)^{2}}\\&s.t.\begin{cases}\sum_{i=1}^{6}x_{ij}\leq e_{j},j=1,2\\\sum_{j=1}^{2}x_{ij}=d_{i},i=1,2,\ldots,6\\x_{ij}\geq0,i=1,2,\ldots,6;j=1,2\end{cases}\end{aligned} minf=j=12i=16xij(xjai)2+(yjbi)2 s.t. i=16xijej,j=1,2j=12xij=di,i=1,2,,6xij0,i=1,2,,6;j=1,2

1. 第一问 线性规划

代码:

%% 第一问:线性规划
clear
clc
% 6个工地坐标
a=[1.25 8.75 0.5 5.75 3 7.25];
b=[1.25 0.75 4.75 5 6.5 7.75];
% 临时料场位置
x=[5,2];
y=[1,7];
% 6个工地水泥日用量
d=[3 5 4 7 6 11];
% 计算目标函数系数,即六个工地与两个料场的距离,总共12个值
l=zeros([6,2]);
for i=1:6for j=1:2l(i,j)=sqrt((x(j)-a(i))^2+(y(j)-b(i))^2);end
end
f=[l(:,1);l(:,2)]; % 目标函数系数向量,共12个值
% 不等式约束条件的变量系数和常数项
% 双下标转换成单下标:x11=x1,x21=x2,...,x62=x12
A=[ 1 1 1 1 1 1 0 0 0 0 0 00 0 0 0 0 0 1 1 1 1 1 1];
% 两个临时料场日储量
b=[20;20];% 矩阵的行数等于约束条件的个数,列是变量的个数
% 等式约束的变量系数和常数项
Aeq=[eye(6),eye(6)];
beq=[d(1);d(2);d(3);d(4);d(5);d(6)];
% 所有变量的下限全为0
Vlb=[0 0 0 0 0 0 0 0 0 0 0 0];
disp("第一问:")
[x,fval]=linprog(f,A,b,Aeq,beq,Vlb)

输出:

第一问:找到最优解。x =3507010040610fval =136.227519883182
2. 第二问 非线性规划

非线性规划的目标函数fun2.m定义如下:

function f = fun2(x)
%FUN2 非线性规划的目标函数
%   这里的f实际上就是目标函数,函数的返回值也是f
%   输入值x实际上就是决策向量,由x1和x2组成的向量
% x前面12个是每个工地运输多少,后面四个为料场坐标
% 6个工地坐标
a=[1.25 8.75 0.5 5.75 3 7.25];
b=[1.25 0.75 4.75 5 6.5 7.75];
n=0;
f=0;
for j=13:2:16for i=1:6 n=n+1;f=f+x(n)*(sqrt((a(i)-x(j))^2+(b(i)-x(j+1))^2));end
end
end

求解代码:

%% 第二问 非线性规划
%注意,第二问中求新料场的位置,所以两个料场的横纵坐标也是变量,所以多了四个变量
% 对新坐标没有不等式约束,所以其不等式约束条件里面的系数为0
A2=[1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0];
B2=[20 ;20];
% 对新坐标也没有等式约束,所以相应项也为0
Aeq2=[eye(6),eye(6),zeros(6,4)];
beq2=[3 5 4 7 6 11]';
vlb2=[zeros(12,1);-inf;-inf;-inf;-inf];
% 非线性规划必须设置初始值,可以基于问题情况来设,设置rand()随机树等等
% 初始值设置为线性规划的计算结果,即临时料场的坐标
x0=[3 5 0 7 0 1 0 0 4 0 6 10 5 1 2 7]';
disp("第二问")
[x2,fval2]=fmincon(@fun2,x0,A2,B2,Aeq2,beq2,vlb2)
% 注意,若约束条件里面有非线性函数,可在fmincon里使用nonlcon项

输出:

第二问可能存在局部最小值。满足约束。fmincon 已停止,因为当前步长小于
步长容差值并且在约束容差值范围内满足约束。<停止条件详细信息>x2 =2.940992189650064.840558656820213.87793737832666.943070403079231.303130777556460.02206785079521080.05900781034994370.1594413431797950.1220626216734020.05692959692077314.6968692224435410.97793214920485.729798455203994.975789925150467.249999954976637.74999993108167fval2 =90.4919073875194

第二问中可以使用蒙特卡罗方法求得近似值作为初始值:

求解过程中的不等式约束函数constraint.m如下

function [g,k] = constraint(x)
%CONSTRAINT 不等式约束条件
%   sum(x(:,1:6),2)是对矩阵前6列按行求和,即对前6个元素求和
%   对于6个工地接收第一个料场的总量。再减去20,即把不等式右边常数项移到左边
g=[sum(x(:,1:6),2)-20sum(x(:,7:12),2)-20];
%   等式约束条件,6个工地从两个料场收到总量分别为3,5,4,7,6,11
k=[x(1)+x(7)-3x(2)+x(8)-5x(3)+x(9)-4x(4)+x(10)-7x(5)+x(11)-6x(6)+x(12)-11];
end

求解过程:

%% 若有条件,可使用蒙特卡罗法求一个近似的解作为初始值
p0=inf;
n=10^6;
ticfor i =1:n% 前12个数是6个工地从料场接收的量,不会超过日需求量,为了加速计算取整数% 后四个变量是料场的横纵坐标,根据题目工地的坐标都在0-9,这里也取该范围x_m=[randi(4)-1,randi(6)-1,randi(5)-1,randi(8)-1,randi(7)-1,randi(12)-1,...randi(4)-1,randi(6)-1,randi(5)-1,randi(8)-1,randi(7)-1,randi(12)-1,...9*rand(1,4)];% 约束条件[g,k]=constraint(x_m);if all(g<=0) % 等式约束难以满足,此处相差不大即可算近似if all(abs(k)<=1)ff=fun2(x_m); %目标函数if ff<p0x_m0=x_m;p0=ff;endendend
end
x_m0,p0,toc
disp("以蒙特卡罗求得近似值作为初始值的线性规划结果")
[x3,fval3]=fmincon(@fun2,x_m0,A2,B2,Aeq2,beq2,vlb2)

输出:

x_m0 =列 1 至 40                         0                         0                         5列 5 至 83                         9                         2                         4列 9 至 123                         1                         2                         1列 13 至 166.85179793730359          7.45156987818458          5.78450172159294          4.84001343131759p0 =87.3564817958772历时 2.518048 秒。
以蒙特卡罗求得近似值作为初始值的线性规划结果可能存在局部最小值。满足约束。fmincon 已停止,因为当前步长小于
步长容差值并且在约束容差值范围内满足约束。<停止条件详细信息>x3 =列 1 至 40.0267009295509488          4.82102444621973        0.0235678116431545         0.426803450498299列 5 至 80.0304197766741595           10.979350696337          2.97329907044905         0.178975553780268列 9 至 123.97643218835685           6.5731965495017          5.96958022332584         0.020649303662989列 13 至 167.2500000010943          7.74999998555883          3.22063993810178          5.66691666664995fval3 =85.9490103544715

相关文章:

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中…...

JavaScript中的控制流语句:break、continue、return、throw

在JavaScript编程中&#xff0c;控制流语句是控制代码执行流程的重要工具。这些语句包括break、continue、return和throw&#xff0c;它们可以在循环、函数以及其他代码块中使用&#xff0c;以改变正常的执行顺序。下面我们将逐一探讨这些语句的用途和示例。 break break语句…...

移动通信为啥要用双极化天线?

❝本文简单介绍下移动通信为啥要用双极化天线及其简单概述。 移动通信为啥要用双极化天线&#xff1f; - RFASK射频问问❝本文简单介绍下移动通信为啥要用双极化天线及其简单概述。什么是极化&#xff1f;电磁波的极化通常是用其电场矢量的空间指向来描述&#xff1a;在空间某…...

C语言从头学59——学习头文件math.h(二)

继续学习头文件<math.h>&#xff0c;编号接续前文。 六、三角函数 math.h中的三角函数包括&#xff1a; acos()&#xff1a;反余弦&#xff0c;参数范围-1至1&#xff0c;返回值double类型&#xff1a;0~PI asin()&#xff1a;反正弦&#xff0c;参…...

Leetcode 3283. Maximum Number of Moves to Kill All Pawns

Leetcode 3283. Maximum Number of Moves to Kill All Pawns 1. 解题思路2. 代码实现 题目链接&#xff1a;3283. Maximum Number of Moves to Kill All Pawns 1. 解题思路 这一题坦率地说没有想到什么好的思路&#xff0c;因此只能非常暴力地按照题意进行了一下构造。 显然…...

智能物流新“黑神话”:各位“天命人”,这份行业应用锦集请收下!

全球工业革新浪潮中&#xff0c;智能物流正成为制造业转型升级的核心驱动力之一。高柔性的智能物流解决方案可以帮助企业应对复杂的物流挑战&#xff0c;实现生产到仓储全过程的智能化、柔性化和高度集成&#xff0c;带来显著的经济效益。 作为行业领先的全场景柔性物流综合解…...

SpringSecurity原理解析(五):HttpSecurity 类处理流程

1、SpringSecurity 在spring boot中与SSM项目中基于配置文件的区别 通过前边的笔记我们可以知道&#xff0c;在传统的SSM项目中 SpringSecurity的使用是基于配置文件 的&#xff0c;然后spring 容器初始化的时候将 SpringSecurity 中的各种标签解析成对应的Bean对象&#xff0c…...

C++系列-匿名对象

匿名对象 &#x1f4a2;什么是匿名对象&#x1f4a2;匿名对象的创建方式及作用域&#x1f4a2;匿名对象的对象类型&#x1f4a2;&#x1f4a2;匿名的基本数据类型对象&#x1f4a2;&#x1f4a2;匿名的自定义的类类型对象&#x1f4a2;&#x1f4a2;匿名的标准库的类对象 &…...

tofixed和math.round什么区别

1、floor 返回不大于的最大整数&#xff08;向下取整&#xff09; 2、round 则是4舍5入的计算&#xff0c;入的时候是到大于它的整数&#xff08;当-1.5时可见&#xff0c;四舍五入后得到的结果不是我们期待的&#xff0c;解决办法是先对他取绝对值&#xff0c;然后在用round方…...

OPENAIGC开发者大赛高校组金奖 | 基于混合大语言模型与多模态的全过程通用AI Agent

在第二届拯救者杯OPENAIGC开发者大赛中&#xff0c;涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到&#xff0c;我们特意开设了优秀作品报道专栏&#xff0c;旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者&#xff0c;希望能带给您…...

MySql批量迁移数据库

导出数据库 将指定数据库实例&#xff08;MYSQL_HOST、MYSQL_PORT、MYSQL_USER、MYSQL_PASSWORD&#xff09;中的所有数据库&#xff08;表结构、数据&#xff09;导出到指定目录&#xff08;BACKUP_DIR&#xff09;下的多个单独的SQL脚本&#xff0c;每个SQL脚本名称即为数据…...

一、selenium自动化简介selenium工具集

文章目录 一、简介二、组成部分三、selenium工具集3.1 Selenium IDE3.2 Selenium WebDriver3.3 Selenium Grid3.4 Appium 一、简介 官方网站 Selenium 是支持 web 浏览器自动化的一系列工具和库的综合项目。 它提供了扩展来模拟用户与浏览器的交互&#xff0c;用于扩展浏览器分…...

CCF推荐B类会议和期刊总结:(计算机网络领域)

CCF推荐B类会议和期刊总结&#xff08;计算机网络领域&#xff09; 在计算机网络领域&#xff0c;中国计算机学会&#xff08;CCF&#xff09;推荐的B类会议和期刊代表了该领域的较高水平。以下是对所有B类会议和期刊的总结&#xff0c;包括全称、出版社、dblp文献网址以及所属…...

[Web安全 网络安全]-文件包含漏洞

文章目录&#xff1a; 一&#xff1a;前言 1.什么是文件包含漏洞 2.文件包含漏洞的成因 3.文件包含漏洞的分类 4.文件包含漏洞的防御策略 5.文件包含函数&#xff08;触发点Sink&#xff09; 6.环境 6.1 靶场 6.2 其他工具 二&#xff1a;文件包含LFI labs靶场实验…...

使用soui4实现一个拾色器

拾色器类 #pragma once class CClrPickerCtrl : public SWindow {DEF_SOBJECT(SWindow, L"clrpicker") public:CClrPickerCtrl(void);~CClrPickerCtrl(void);//跟solider控件设置色调void SetSliderPos(int nPos);//获取选取位置的颜色COLORREF GetColor(); protect…...

Thinkphp5 + Swoole实现邮箱异步通知

在 ThinkPHP 中实现邮箱异步通知的常见做法是通过队列系统来处理异步任务&#xff0c;结合 Swoole 来处理异步发送邮件的请求。这样可以避免同步处理邮件发送导致的阻塞&#xff0c;提高响应速度。 以下是基于 ThinkPHP5 框架和 Swoole 的异步邮件通知实现步骤&#xff1a; 一…...

LLM - 理解 多模态大语言模型 (MLLM) 的预训练与相关技术 (三)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142063880 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 完备(F…...

工具篇之Joda-Time

在Java应用程序开发中&#xff0c;处理日期和时间是一项常见且复杂的任务。尽管Java标准库提供了基本的日期和时间操作类&#xff0c;但它们的使用常常不够直观和灵活。Joda-Time 是一个强大的日期和时间库&#xff0c;提供了丰富的API&#xff0c;用于简化日期和时间的操作。本…...

架构师应该懂得东西,软考应该具备的

架构师应该懂得知识 架构师作为软件系统设计和开发的关键角色&#xff0c;需要掌握广泛的知识和技能。具体来说&#xff0c;他们应该懂得以下几方面的知识&#xff1a; 编程语言&#xff1a;掌握至少一种编程语言&#xff0c;如Java、C、Python等&#xff0c;以便于进行系统设…...

图论篇--代码随想录算法训练营第五十一天打卡| 99. 岛屿数量(深搜版),99. 岛屿数量(广搜版),100. 岛屿的最大面积

99. 岛屿数量&#xff08;深搜版&#xff09; 题目链接&#xff1a;99. 岛屿数量 题目描述&#xff1a; 给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的矩阵&#xff0c;你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而…...

什么是API网关(API Gateway)?

1. 什么是API网关&#xff08;API Gateway&#xff09;&#xff1f; 在微服务体系结构中&#xff0c;客户端可能与多个前端服务进行交互。 API 网关位于客户端与服务之间。 它充当反向代理&#xff0c;将来自客户端的请求路由到服务。 它还可以执行各种横切任务&#xff0c;例…...

对话:LLC磁集成能否成为充电桩模块电源常态产品?

编者按&#xff1a;在终端需求疲软的影响下&#xff0c;前两年火热的新能源汽车、光伏、储能等新能源领域也掀起了价格战&#xff0c;储能已正式进入0.5元时代&#xff0c;新能源汽车领域价格战更是一轮接一轮&#xff0c;成本管控成为2024年企业绕不开的话题。 接下来我们将围…...

基于SSM的二手物品交易管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的二手物品交易管理系统7拥有两种角色 管理员&#xff1a;用户管理、分类管理、商品管理、订单管理、系统管理等 用户&#xff1a;登录注册、充值、收货、评价、收藏、购物车、订…...

视觉语言模型中的人脸社会感知

本文研究了视觉语言模型CLIP在处理人脸图像时的社会感知能力及其潜在偏见。研究者们构建了一个名为CausalFace的合成人脸数据集&#xff0c;通过系统地独立变化年龄、性别、人种、面部表情、照明和姿势等六个维度来评估模型的社会感知。他们发现&#xff0c;尽管CLIP是在多样化…...

JAVA学习-练习试用Java实现“最小覆盖子串”

问题&#xff1a; 给定一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 "" 。 注意&#xff1a;如果 s 中存在这样的子串&#xff0c;我们保证它是唯一的答案。 示例 1&…...

关于axios同步获取数据的问题

axios同步获取数据 Axios介绍问题代码修改 总结 Axios介绍 Axios 是一个基于 promise 网络请求库&#xff0c;作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 X…...

java-在ANTLR中,如何从java文件中提取类名和方法名0.1.8

java-在ANTLR中&#xff0c;如何从java文件中提取类名和方法名0.1.0 目标java源文件java的g4文件生成antlr代码最终代码调测结果阶段性总结 2024年9月12日11:16:01----0.1.8 目标 从一个java文件中提取出类名和方法名 java源文件 文件名是main.java&#xff0c;具体内容如下…...

十大护眼灯钢琴灯品牌是智商税吗?十大钢琴灯品牌排行榜

十大护眼灯钢琴灯品牌是智商税吗&#xff1f;不良的光线不仅会使得孩子在读写用眼时眼睛不舒服&#xff0c;还会引起视觉疲劳伤眼视力健康&#xff0c;这个时候要能有一台可靠的护眼灯钢琴灯&#xff0c;那真是再好不过了。但是市面上护眼灯钢琴灯的种类太多&#xff0c;盲目挑…...

搜维尔科技:CyberGlove将实时捕捉运动信号和触觉反馈,将其重新定位到人形机器人进行驱动

CyberGlove将实时捕捉运动信号和触觉反馈&#xff0c;然后将其重新定位到人形机器人上。 这款18个传感器&#xff08;有18节点和22节点两个型号&#xff0c;22节点早期用于美国军事方面&#xff0c;支持无线通信、蓝牙、WiFi、射频&#xff09;数据手套的每个手指上有两个弯曲…...

数据结构:堆的算法

目录 一堆的向上调整算法二堆的向下调整算法三堆的应用:堆排序四TOPK问题 一堆的向上调整算法 我们在堆中插入一个数据一般实在堆的最后插入然后可以一步一步与上层结点&#xff08;父结点进行比较&#xff09;&#xff0c;继而进行交换&#xff0c;完成二叉树的结构&#xff0…...