当前位置: 首页 > 编程日记 > 正文

【优秀作业】蚁群优化算法

蚁群优化算法

一.概述

生物学家发现,自然界中的蚁群觅食是一种群体性行为,并非单只蚂蚁自行寻找食物源。蚂蚁在寻找食物源时,会在其经过的路径上释放一种信息素,并能够感知其它蚂蚁释放的信息素。信息素浓度的大小表征到食物源路径的远近,信息素浓度越高,表示对应的路径距离越短。通常,蚂蚁会以较大的概率优先选择信息素浓度较高的路径,并释放一定量的信息素,以增强该条路径上的信息素浓度,这样会形成一个正反馈。最终,蚂蚁能够找到一条从巢穴到食物源的最佳路径,即最短距离。值得一提的是,生物学家同时发现,路径上的信息素浓度会随着时间的推进而逐渐衰减

20世纪90年代初,意大利学者M.Dorigo等人提出了模拟自然界蚂蚁群体觅食行为的蚁群算法。其基本思想是:用蚂蚁的行走路径表示待优化问题的可行解,整个蚂蚁群体的所有路径构成待优化问题的解空间。路径较短的蚂蚁释放的信息素量较多,随着时间的推进,较短的路径上积累的信息素浓度逐渐增高,选择该路径上的蚂蚁个数也越来越多。最终,整个蚂蚁会在正反馈的作用下集中到最佳的路径上,此时对应的便是待优化问题的最优解。

二.蚁群算法解决TSP问题

1. 算法原理

M.Dorigo等人最早将蚁群算法用于解决旅行商问题(Traveling Salesman Problem,TSP),并取得了较好的实验结果。设整个蚂蚁群体中蚂蚁的数量为 mmm,城市的数量为nnn,城市iii与城市jjj之间的距离为dij(i,j=1,2,⋯,n)d_{ij} (i,j=1,2,\cdots,n)dij(i,j=1,2,,n)ttt时刻城市iii与城市jjj连接路径上的信息素浓度为τij(t)\tau_{ij}(t)τij(t)。初始时刻,各个城市间连接路径上的信息素浓度相同,不妨设τij(0)=τ0\tau_{ij} (0)=\tau_{0}τij(0)=τ0

蚂蚁k(k=1,2,⋯,m)k(k=1,2,\cdots,m)k(k=1,2,,m)根据各个城市间连接路径上的信息素浓度决定下一个访问城市,Pijk(t)P_{ij}^k(t)Pijk(t)表示ttt时刻蚂蚁kkk从城市iii转移到城市jjj的转移概率,其公式为:

Pijk={[τij(t)]α×[ηij(t)]β∑s∈allowk[τis(t)]α×[ηis(t)]β,s∈allowk0,s∉allowk\Large P_{ij}^k = \left \{ \begin{array}{l} \frac{[\tau_{ij}(t)]^\alpha\times[\eta_{ij}(t)]^\beta}{\sum_{s\in allow_k}[\tau_{is}(t)]^\alpha\times[\eta_{is}(t)]^\beta} , s\in allow_{k}\\ 0, s\notin allow_{k}\\ \end{array} \right. Pijk=sallowk[τis(t)]α×[ηis(t)]β[τij(t)]α×[ηij(t)]β,sallowk0,s/allowk

其中:ηij(t)=1dij\eta_{ij}(t)=\frac{1}{d_{ij}}ηij(t)=dij1为启发函数,表示蚂蚁从城市iii转移到城市jjj的期望程度;allowk(k=1,2,⋯,m)allow_k(k=1,2,\cdots,m)allowk(k=1,2,,m)为蚂蚁kkk待访问城市的集合,开始时,allowkallow_kallowk中有(n−1)(n-1)(n1)个元素,即包括除了蚂蚁kkk出发城市的所有其它城市,随着时间的推进,allowkallow_kallowk中的元素不断减少,直至为空,即表示所有的城市均访问完毕;α\alphaα为信息素重要程度因子,其值越大,表示信息素的浓度在转移中起的作用越大;β\betaβ为启发函数重要程度因子,其值越大,表示启发函数在转移中的作用越大,即蚂蚁会以较大的概率转移到距离短的城市。当α=0\alpha=0α=0时,算法就是传统的贪心算法,而当β=0\beta=0β=0时,就成了纯粹的正反馈的启发式算法。经过nnn个时刻,蚂蚁可以走完所有的城市,完成一次循环,每只蚂蚁所走过的路径就是一个解。

由于蚂蚁释放信息素的同时,各个城市间连接路径上的信息素逐渐消失,设参数ρ(0<ρ<1)\rho(0<\rho<1)ρ(0<ρ<1)表示信息素的挥发程度。因此,当所有蚂蚁完成一次循环后,各个城市间连接路径上的信息素浓度需进行实时更新,即

{τij(t+1)=(1−ρ)τij(t)+ΔτijΔτij=∑k=1mΔτijk,0<ρ<1\left \{ \begin{array}{l} \tau_{ij}(t+1)=(1-\rho)\tau_{ij}(t)+\Delta\tau_{ij}\\ \Delta\tau_{ij}=\sum_{k=1}^{m}{\Delta\tau_{ij}^k}\\ \end{array} \right.,0<\rho<1 {τij(t+1)=(1ρ)τij(t)+ΔτijΔτij=k=1mΔτijk,0<ρ<1

其中,Δτijk\Delta\tau_{ij}^kΔτijk表示第kkk只蚂蚁在城市iii与城市jjj连接路径上释放的信息素浓度;Δτij\Delta\tau_{ij}Δτij表示所有蚂蚁在城市iii与城市jjj连接路径上释放的信息素浓度之和。

针对蚂蚁释放信息素问题,M.Dorigo等人曾给出3种不同的模型,分别称之为Ant Cycle System、Ant Quantity System和Ant Density System,其计算公式如下:

(1)Ant Cycle System模型

Δτijk={QLk,第k只蚂蚁从城市i访问城市j0,其它\Delta\tau_{ij}^k = \left \{ \begin{array}{l} \frac{Q}{L_k},第k只蚂蚁从城市i访问城市j\\ 0,其它\\ \end{array} \right. Δτijk={LkQ,ki访j0

其中,QQQ为常数,表示蚂蚁循环一次所释放的信息素总量LkL_kLk为第kkk只蚂蚁经过路径的长度。

(2)Ant Quantity System

Δτijk={Qdij,第k只蚂蚁从城市i访问城市j0,其它\Delta\tau_{ij}^k = \left \{ \begin{array}{l} \frac{Q}{d_{ij}},第k只蚂蚁从城市i访问城市j\\ 0,其它\\ \end{array} \right. Δτijk={dijQ,ki访j0

(3)Ant Density System

Δτijk={Q,第k只蚂蚁从城市i访问城市j0,其它\Delta\tau_{ij}^k = \left \{ \begin{array}{l} Q,第k只蚂蚁从城市i访问城市j\\ 0,其它\\ \end{array} \right. Δτijk={Q,ki访j0

上述3种模型中,Ant Cycle System模型利用蚂蚁经过路径的整体信息(经过路径的总长)计算释放的信息素浓度;Ant Quantity System模型利用蚂蚁经过路径的局部信息(经过各个城市间的距离)计算释放的信息素浓度;Ant Density System模型更为简单地将信息素释放的浓度取为恒值,并没有考虑不同蚂蚁经过路径长度的影响。因此,一般选用Ant Cycle System模型计算释放的信息素浓度,即蚂蚁经过的路径越短,释放的信息素浓度越高。

2. 算法步骤

步骤1:初始化参数

在计算之初,需要对相关参数进行初始化,如蚁群规模(蚂蚁数量)mmm、信息素重要程度因子α\alphaα、启发函数重要程度因子β\betaβ、信息素挥发程度因子ρ\rhoρ、信息素释放总量QQQ、最大迭代次数iter_maxiter\_maxiter_max

注:在初始化之前需要根据城市位置坐标,计算两两城市间的相互距离,从而得到对称的距离矩阵。由于启发函数为ηij(t)=1dij\eta_{ij} (t)=\frac{1}{d_{ij}}ηij(t)=dij1,为了保证分母不为零,需要将对角线上的元素零,修正为一个非常小的正数(如10−410^{-4}10410−510^{-5}105等)。

步骤2:构建解空间

将各个蚂蚁随机地置于不同出发点,对每个蚂蚁k(k=1,2,⋯,m)k(k=1,2,\cdots,m)k(k=1,2,,m),按照转移概率计算公式,确定其下一个待访问的城市,直到所有蚂蚁访问完所有的城市,即构造完一组路径。

步骤3:更新信息素

计算各个蚂蚁经过的路径长度Lk(k=1,2,⋯,m)L_k (k=1,2,\cdots,m)Lk(k=1,2,,m),根据信息素迭代公式对各个城市路径上的信息素浓度进行更新。同时,记录当前迭代次数中的最优解(最短路径)。

步骤4:判断是否终止

若达到最大迭代次数,则终止计算,输出最优解。否则,清空蚂蚁经过路径的记录表,并返回步骤2。

三. 利用蚁群算法求解旅行商问题

按照枚举法,我国 34 个直辖市、省会和自治区首府的巡回路径应有 34! 种。但是那种巡回路径最短呢,我们可以利用蚁群算法进行求解。

城市坐标如下表所示:

序号城市到0°经线距离(X)到赤道距离(Y)
1北京99324439
2天津101094351
3上海115523472
4重庆103023290
5拉萨87763333
6乌鲁木齐70404867
7银川92524278
8呼和浩特93954539
9南宁111012540
10哈尔滨98255087
11长春100474879
12沈阳102274648
13石家庄100274229
14太原98784211
15西宁90874065
16济南104384075
17郑州103823865
18南京111963563
19合肥110753543
20杭州115443365
21福州119152900
22南昌113053189
23长沙110733137
24武汉109503394
25广州115762575
26台北122392785
27海口115292226
28兰州93284006
29西安100123811
30成都99523410
31贵阳106122954
32昆明103492784
33香港117472469
34澳门116732461

代码如下:

%% 清空环境变量
clear
clc
close all%% 导入数据
%表中34个城市的位置坐标保存在citys_data1.mat文件中,变量citys为34行2列的
%数据,第1列表示城市的横坐标,第2列表示城市的纵坐标。
load citys_data.mat%% 计算城市间相互距离
n = size(citys,1);
D = zeros(n,n);
for i = 1:nfor j = 1:nif i ~= jD(i,j) = sqrt(sum((citys(i,:) - citys(j,:)).^2));elseD(i,j) = 1e-4;endend    
end%% 初始化参数
m = 35;                              % 蚂蚁数量
alpha = 1;                           % 信息素重要程度因子
beta = 5;                            % 启发函数重要程度因子
rho = 0.1;                           % 信息素挥发因子
Q = 1;                               % 常系数
Eta = 1./D;                          % 启发函数
Tau = ones(n,n);                     % 信息素矩阵
Table = zeros(m,n);                  % 路径记录表
iter = 1;                            % 迭代次数初值
iter_max = 200;                      % 最大迭代次数 
Route_best = zeros(iter_max,n);      % 各代最佳路径       
Length_best = zeros(iter_max,1);     % 各代最佳路径的长度  
Length_ave = zeros(iter_max,1);      % 各代路径的平均长度  %% 迭代寻找最佳路径
while iter <= iter_max% 随机产生各个蚂蚁的起点城市start = zeros(m,1);for i = 1:mtemp = randperm(n);start(i) = temp(1);endTable(:,1) = start; % 构建解空间citys_index = 1:n;% 逐个蚂蚁路径选择for i = 1:m% 逐个城市路径选择for j = 2:ntabu = Table(i,1:(j - 1));         % 已访问的城市集合(禁忌表)allow_index = ~ismember(citys_index,tabu);allow = citys_index(allow_index);  % 待访问的城市集合P = allow;% 计算城市间转移概率for k = 1:length(allow)P(k) = Tau(tabu(end),allow(k))^alpha ...* Eta(tabu(end),allow(k))^beta;endP = P/sum(P);% 轮盘赌法选择下一个访问城市Pc = cumsum(P);     target_index = find(Pc >= rand); target = allow(target_index(1));Table(i,j) = target;endend% 计算各个蚂蚁的路径距离Length = zeros(m,1);for i = 1:mRoute = Table(i,:);for j = 1:(n - 1)Length(i) = Length(i) + D(Route(j),Route(j + 1));endLength(i) = Length(i) + D(Route(n),Route(1));end% 计算最短路径距离及平均距离if iter == 1[min_Length,min_index] = min(Length);Length_best(iter) = min_Length;  Length_ave(iter) = mean(Length);Route_best(iter,:) = Table(min_index,:);else[min_Length,min_index] = min(Length);Length_best(iter) = min(Length_best(iter - 1),min_Length);Length_ave(iter) = mean(Length);if Length_best(iter) == min_LengthRoute_best(iter,:) = Table(min_index,:);elseRoute_best(iter,:) = Route_best((iter-1),:);endend% 更新信息素Delta_Tau = zeros(n,n);% 逐个蚂蚁计算for i = 1:m% 逐个城市计算for j = 1:(n - 1)Delta_Tau(Table(i,j),Table(i,j+1)) = ...Delta_Tau(Table(i,j),Table(i,j+1)) + Q/Length(i);endDelta_Tau(Table(i,n),Table(i,1)) = ...Delta_Tau(Table(i,n),Table(i,1)) + Q/Length(i);endTau = (1-rho) * Tau + Delta_Tau;% 迭代次数加1,清空路径记录表iter = iter + 1;Table = zeros(m,n);
end%% 结果显示
[Shortest_Length,index] = min(Length_best);
Shortest_Route = Route_best(index,:);
disp(['最短距离:' num2str(Shortest_Length)]);
disp(['最短路径:' num2str([Shortest_Route Shortest_Route(1)])]);%% 绘图
figure(1)
plot([citys(Shortest_Route,1);citys(Shortest_Route(1),1)],...[citys(Shortest_Route,2);citys(Shortest_Route(1),2)],'o-');
grid on
for i = 1:size(citys,1)text(citys(i,1),citys(i,2),['   ' num2str(i)]);
end
text(citys(Shortest_Route(1),1),citys(Shortest_Route(1),2),'       起点');
text(citys(Shortest_Route(end),1),...citys(Shortest_Route(end),2),'       终点');
xlabel('城市位置横坐标')
ylabel('城市位置纵坐标')
title(['蚁群算法优化路径(最短距离:' num2str(Shortest_Length) ')'])
figure(2)
plot(1:iter_max,Length_best,'b',1:iter_max,Length_ave,'r:')
legend('最短距离','平均距离')
xlabel('迭代次数')
ylabel('距离')
title('各代最短距离与平均距离对比')

结果分析:

蚁群算法优化路径

从上图中可以清晰地看到,自起点出发,每个城市访问一次,遍历所有城市后,返回起点。寻找到的最短距离为16407.8008公里。最短路径为15,28,7,8,10,11,12,1,2,13,14,29,17,16,19,18,24,23,22,20,3,21,26,33,34,25,27,9,31,32,4,30,5,6,15。

各代的最短距离与平均距离对比

各代的最短距离与平均距离如上图所示,从图中不难发现,随着迭代次数的增加,最短距离与平均距离均呈现不断下降的趋势。当迭代次数大于116时,最短距离已不再变化,表示已经寻找到最佳路径。

四. 练习

张三学习了蚁群算法之后特别高兴,他定义了一个特别的图,希望找到图中的最短路径。

张三的图由 2021 个结点组成,依次编号 1 至 2021。

对于两个不同的结点 aaabbb,如果 aaabbb 的差的绝对值大于 21,则两个结点之间没有边相连;如果 aaabbb 的差的绝对值小于等于 21,则两个点之间有一条 长度为 aaabbb 的最小公倍数的无向边相连。

例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75。

利用蚁群算法确定最短的巡回路径,以及从结点 1 到结点 2021 之间的最短路径长度是多少。

相关文章:

RPC-原理及RPC实例分析

还有就是&#xff1a;RPC支持的BIO,NIO的理解 (1)BIO: Blocking IO;同步阻塞&#xff1b; (2)NIO:Non-Blocking IO&#xff0c; 同步非阻塞; 参考&#xff1a;IO多路复用,同步&#xff0c;异步&#xff0c;阻塞和非阻塞 区别 在学校期间大家都写过不少程序&#xff0c;比如写个…

hdu 4608 I-number

http://acm.hdu.edu.cn/showproblem.php?pid4608 直接暴力 代码&#xff1a; #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<cmath> #include<set> #include<map> #include<stack> #inc…

php tab标签,JavaScript代码分享:tab标签的切换

本文实例讲述了js实现点击切换TAB标签。分享给大家供大家参考。具体如下&#xff1a;这里演示的选项卡效果代码&#xff0c;无jq,纯JS来实现&#xff0c;灰色风格&#xff0c;没有怎么美化&#xff0c;或许看上去比较普通&#xff0c;不过兼容性和操作起来挺舒服的&#xff0c;…

二进制,十进制,十六进制

生活中其实很多地方的计数方法都多少有点不同进制的影子。 比如我们最常用的10进制&#xff0c;其实起源于人有10个指头。如果我们的祖先始终没有摆脱手脚不分的境况&#xff0c;我想我们现在一定是在使用20进制。 至于二进制……没有袜子称为0只袜子&#xff0c;有一只袜子称为…

D3.js系列——初步使用、选择元素与绑定数据

D3 的全称是&#xff08;Data-Driven Documents&#xff09;&#xff0c;顾名思义可以知道是一个被数据驱动的文档。听名字有点抽象&#xff0c;说简单一点&#xff0c;其实就是一个 JavaScript 的函数库&#xff0c;使用它主要是用来做数据可视化的。 D3 提供了各种简单易用的…

秦州:西瓜书 + 南瓜书 吃瓜系列 12. 聚类

Datawhale南瓜书是经典机器学习教材《机器学习》&#xff08;西瓜书&#xff09;的公式推导解析指南&#xff0c;旨在让在学习西瓜书的过程中&#xff0c;再也没有难推的公式&#xff0c;学好机器学习。 航路开辟者&#xff1a;谢文睿、秦州开源内容&#xff1a;https://githu…

php 5/0,PHP 5.5.0 released.该怎么解决

当前位置:我的异常网 PHP PHP 5.5.0 released.该怎么解决PHP 5.5.0 released.该怎么解决www.myexceptions.net 网友分享于&#xff1a;2013-08-02 浏览&#xff1a;12次PHP 5.5.0 released.The PHP development team is proud to announce the immediate availability of PH…

Windows下SVN权限配置过程详解

本节讲解一下Windows下SVN权限配置说明&#xff0c;针对的是一个目录下多库的情况&#xff0c;下面是具体的介绍&#xff0c;希望通过本文的学习&#xff0c;你能够对SVN权限配置问题有更加深刻的认识。 1、本文档适用于对Subvesion的自带服务svnserve进行权限配置&#xff0c;…

胡小明:大数据应用方向思考

一、警惕大数据过热 1.1 过热产生盲目性 国内大数据的宣传早已过热&#xff0c;很多区县级政府也在考虑成立大数据局&#xff0c;政府对大数据热几乎没有抵抗力&#xff0c;企业没有紧跟就对了&#xff0c;在大数据高潮中反省政府的大数据行为、冷静一下头脑是有益的&#xff0…

Datawhale组队学习周报(第040周)

本周报总结了从 11月15日至11月21日&#xff0c;Datawhale组队学习的运行情况&#xff0c;我们一直秉承“与学习者一起成长的理念”&#xff0c;希望这个活动能够让更多的学习者受益。 第 31 期组队学习已经与大家见面了&#xff0c;这次组队学习一共 11 门开源课程&#xff0…

matlab 无序数对,MATLAB中sort函数对矩阵数进行排序

(1)Bsort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序.eg: A[1,5,3],则sort(A)[1,3,5]A[1,5,3;2,4,1],则sort(A)[1,4,1;2,5,3](2)Bsort(A,dim),对数组按指定方向进行升序排序,dim 1,表示对每一列进行排序,,dim2表示对每一行进行排序…

云智易获上海CIO联盟“年度物联网云平台技术创新奖”

6月23日&#xff0c;云智易作为国内领先物联网云平台&#xff0c;受邀出席“跨界融合 聚势谋远”上海CIO联盟峰会。本次大会汇聚了全球各地各行业300位精英翘楚&#xff0c;共话未来发展趋势。 在本次大会中&#xff0c;云智易物联云平台凭借强大的技术实力、成熟的平台架构、…

d3d导致cairo不正常

最近要把cairo集成到项目中,却发现cairo不能工作了 折腾了两天才找到了原因:cairo的一个trick导致浮点数计算错误: http://blog.163.com/lvan100yeah/blog/static/6811721420131191434556/ 给d3dcreate加上D3DCREATE_FPU_PRESERVE之后一切正常 如果我直接调cairo的代码就能早点…

青少年编程竞赛交流群周报(第038周)

2021年11月21日&#xff08;周日&#xff09;晚20:00我们在青少年编程竞赛交流群开展了第三十八期直播活动。 一、直播内容 我们直播活动的主要内容如下&#xff1a; 讲解了上次测试中小朋友们做错的题目 Scratch青少年编程能力等级测试模拟题&#xff08;四级&#xff09;。…

php的遍历方法,PHP数组遍历方法总结

在PHP中数组分为两类&#xff1a; 数字索引数组和关联数组。其中数字索引数组和C语言中的数组一样&#xff0c;下标是为0&#xff0c;1&#xff0c;2…而关联数组下标可能是任意类型&#xff0c;与其它语言中的hash&#xff0c;map等结构相似。下面介绍PHP中遍历关联数组的三种…

二、Silverlight中使用MVVM(二)——提高

在第一篇文章中的示例中&#xff0c;我们已经简单的了解了应用MVVM模式的流程&#xff0c;我的本意是你已经了解了一点MVVM的概念&#xff0c;然后又没有一个较好的例子学习&#xff0c;可以跟着我一起学习MVVM模式&#xff0c;所以这个部分&#xff0c;都是没有理论知识的&…

中国电子学会青少年编程能力等级测试图形化四级编程题:太空大战

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

Pycharm开发环境设置与熟悉。

练习基本输入输出&#xff1a; print(你好,{}..format(name)) print(sys.argv) 库的使用方法&#xff1a; import ... from ... import ... 条件语句&#xff1a; if (abs(pos()))<1: break 循环语句&#xff1a; for i in range(5): while True: 函数定义&#xff1a; def …

oracle 默认表空间 10g,Oracle10g 表空间管理

1.表空间分类&#xff1a;(1)临时表空间&#xff1a;存放临时数据(2)数据表空间&#xff1a;又称为用户表空间&#xff0c;用来存放永久数据(不删除永久存在)(3)日志表空间&#xff1a;用来存放日志信息一般情况下&#xff0c;用户使用时只需要创建数据表空间即可&#xff0c;根…

POJ1022 Packing Unit 4D Cubes

题目来源&#xff1a;http://poj.org/problem?id1022 题目大意&#xff1a; 有一些4维的单位体积的立方体盒子&#xff0c;每个立方体有8个面。要用一个大的4为盒子将它们包起来&#xff0c;求最小的大盒子体积。 输入&#xff1a;第一行为测试用例数。每个用例的第一行为单位…

中国电子学会青少年编程能力等级测试图形化三级编程题:海底寻宝

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

用Ajax请求服务器的图片,并显示在浏览器中(转)

前言 一直在数据库里面存的都是图片在服务器的地址&#xff0c;然后再到浏览器中显示&#xff0c;但是发现两个问题 第一&#xff1a;为了安全起见&#xff0c;js是无法读取本地的图片的&#xff0c;不然你写一个js&#xff0c;岂不是可以获取任何人电脑里面的文件了。 第二&am…

pb设置Oracle事务的隔离级别,Oracle的事务隔离级别

ANSI/ISO SQL规定了四种事务隔离级别&#xff0c;分别是&#xff1a;read uncommitted,read committed,repeatable read,serializableORACE提供了SQ92标准中的read committed和seriaizabe&#xff0c;同时提供了非SQ92标准的read-ony。read committed&#xff1a;这是ORACE缺省…

inux php pdo mysql 扩展

今天在本机部署了一个pdo项目&#xff0c;发现一些问题&#xff0c;真没想到pdo mysql&#xff0c;不容易装啊&#xff0c;哈哈&#xff0c;我说的不容易&#xff0c;是因为php5.3以前版本&#xff0c;yum源里面根本没有。部署后就报&#xff0c;Undefined class constant MYSQ…

Maven项目Spring Boot启动

1. pom.xml中增加配置 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.RELEASE</version></parent><dependencies><dependency><gr…

中国电子学会青少年编程能力等级测试图形化四级模拟题

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

Oracle设置date数据比较,ORACLE DATE和TIMESTAMP数据类型的比较

DATE数据类型这个数据类型我们实在是太熟悉了&#xff0c;当我们需要表示日期和时间的话都会想到date类型。它可以存储月&#xff0c;年&#xff0c;日&#xff0c;世纪&#xff0c;时&#xff0c;分和秒。它典型地用来表示什 么时候事情已经发生或将要发生。DATE数据类型的问题…

POJ 1552 Doubles (C++ STL set使用)

题目&#xff1a; 题意&#xff1a;题意&#xff1a;给出几个正数&#xff08;2~15个&#xff09;&#xff0c;然后就是求有这些数字的2倍有没有和原先的正数相同的&#xff0c;求出有几个&#xff0c;没有就是0. 分析&#xff1a;水题。用数组解决&#xff0c;开一个数组存正数…

凌亮:动手学数据分析笔记

凌亮是华北电力大学数理系大二的学生&#xff0c;LSGO软件技术团队&#xff08;Dreamtech算法组&#xff09;成员&#xff0c;参加了多期Datawhale的组队学习。 这篇图文是他在线下组队学习时&#xff0c;为大家分享自己学习“动手学数据分析”的笔记。 希望参与我们线下组队…

【H.264/AVC视频编解码技术详解】十九:熵编码算法(5)——H.264的CABAC(上):语法元素的二值化方法...

《H.264/AVC视频编解码技术详解》视频教程已经在“CSDN学院”上线&#xff0c;视频中详述了H.264的背景、标准协议和实现&#xff0c;并通过一个实战工程的形式对H.264的标准进行解析和实现&#xff0c;欢迎观看&#xff01; “纸上得来终觉浅&#xff0c;绝知此事要躬行”&…