【优秀作业】粒子群算法
粒子群优化算法
一、概述
粒子群优化算法(Particle Swarm Optimization,PSO)的思想来源于对鸟捕食行为的模仿,最初,Reynolds.Heppner 等科学家研究的是鸟类飞行的美学和那些能使鸟群同时突然改变方向,分散,聚集的定律上,这些都依赖于鸟的努力来维持群体中个体间最佳距离来实现同步。而社会生物学家 E.O.Wilson 参考鱼群的社会行为认为从理论上说,在搜寻食物的过程中,尽管食物的分配不可知,群中的个体可以从群中其它个体的发现以及以往的经验中获益。
粒子群从这种模型中得到启发并用于解决优化问题。如果我们把一个优化问题看作是在空中觅食的鸟群,那么粒子群中每个优化问题的潜在解都是搜索空间的一只鸟,称之为“粒子”(Particle),“食物”就是优化问题的最优解。每个粒子都有一个由优化问题决定的适应度用来评价粒子的“好坏”程度,每个粒子还有一个速度决定它们飞翔的方向和距离,它根据自己的飞行经验和同伴的飞行经验来调整自己的飞行。粒子群初始化为一群随机粒子(随机解),然后通过迭代的方式寻找最优解,在每一次的迭代中,粒子通过跟踪两个“极值”来更新自己,第一个是粒子本身所经历过的最好位置,称为个体极值即PbestPbestPbest;另一个是整个群体经历过的最好位置称为全局极值GbestGbestGbest。每个粒子通过上述的两个极值不断更新自己,从而产生新一代的群体。
二、粒子群算法
算法的描述如下:
假设搜索空间是LLL维,并且群体中有NNN个粒子。那么群体中的第iii个粒子可以表示为一个LLL维的向量,Xi=(xi1,xi2,⋯,xiL),i=1,2,⋯,NX_i=(x_{i1},x_{i2},\cdots,x_{iL}),i=1,2,\cdots,NXi=(xi1,xi2,⋯,xiL),i=1,2,⋯,N,即第iii个粒子在LLL维的搜索空间的位置是XiX_iXi,它所经历的“最好”位置记作Pbesti=(pi1,pi2,⋯,piL),i=1,2,⋯,NPbest_i=(p_{i1},p_{i2},\cdots,p_{iL}),i=1,2,\cdots,NPbesti=(pi1,pi2,⋯,piL),i=1,2,⋯,N。粒子的每个位置代表要求的一个潜在解,把它代入目标函数就可以得到它的适应度值,用来评判粒子的“好坏”程度。整个群体迄今为止搜索到的最优位置记作Gbestg=(pg1,pg2,⋯,pgL)Gbest_g=(p_{g1},p_{g2},\cdots,p_{gL})Gbestg=(pg1,pg2,⋯,pgL),ggg是最优粒子位置的索引。
Vit+1=ωVit+c1r1(Pbestit−Xit)+c2r2(Gbestgt−Xit)(1)V_{i}^{t+1}=\omega V_{i}^{t} + c_1 r_1 (Pbest_i^{t}-X_i^{t}) + c_2 r_2 (Gbest_g^{t}-X_i^{t}) \tag{1} Vit+1=ωVit+c1r1(Pbestit−Xit)+c2r2(Gbestgt−Xit)(1)
Xit+1=Xit+Vit+1(2)X_{i}^{t+1} = X_{i}^{t} + V_{i}^{t+1} \tag{2} Xit+1=Xit+Vit+1(2)
ω\omegaω为惯性权重(inertia weight),PbestitPbest_i^{t}Pbestit为第iii个粒子到第ttt代为止搜索到的历史最优解,GbestgtGbest_g^{t}Gbestgt为整个粒子群到目前为止搜索到的最优解,XitX_i^{t}Xit,VitV_i^{t}Vit分别是第iii个粒子当前的位置和飞行速度,c1,c2c_1,c_2c1,c2为非负的常数,称为加速度因子,r1,r2r_1,r_2r1,r2是[0,1][0,1][0,1]之间的随机数。
公式由三部分组成,第一部分是粒子当前的速度,表明了粒子当前的状态;第二部分是认知部分(Cognition Modal),表示粒子本身的思考(c1c_1c1也称为自身认知系数);第三部分是社会认知部分(Social Modal),表示粒子间的信息共享(c2c_2c2为社会认知系数)。
参数的选择:
粒子数目一般取30~50,参数c1,c2c_1,c_2c1,c2一般取2。适应度函数、粒子的维数和取值范围要视具体问题而定。问题解的编码方式通常可以采用实数编码。
算法的主要步骤如下:
第一步:对粒子群的随机位置和速度进行初始设定,同时设定迭代次数。
第二步:计算每个粒子的适应度值。
第三步:对每个粒子,将其适应度值与所经历的最好位置PbestiPbest_iPbesti的适应度值进行比较,若较好,则将其作为当前的个体最优位置。
第四步:对每个粒子,将其适应度值与全局所经历的最好位置GbestgGbest_gGbestg的适应度值进行比较,若较好,则将其作为当前的全局最优位置。
第五步:根据公式(1),(2)对粒子的速度和位置进行优化,从而更新粒子位置。
第六步:如未达到结束条件(通常为最大循环数或最小误差要求),则返回第二步。
三、基于粒子群算法的非线性函数寻优
本案例寻优的非线性函数为
y=−c×exp(−0.21n∑i=1nxi2)−exp(1n∑i=1ncos2πxi)+c+ey=-c\times \exp(-0.2\sqrt{\frac{1}{n}\sum_{i=1}^{n}{x_i^2}}) - \exp(\frac{1}{n}\sum_{i=1}^{n}{\cos 2\pi x_i})+c+e y=−c×exp(−0.2n1i=1∑nxi2)−exp(n1i=1∑ncos2πxi)+c+e
当c=20c=20c=20,n=2n=2n=2时,该函数为Ackley函数,函数图形如图1所示。
从函数图形可以看出,该函数有很多局部极小值,在(0,0)(0,0)(0,0)处取到全局最小值0。
本案例群体的粒子数为20,每个粒子的维数为2,算法迭代进化次数为100。加速度因子c1=1.4c_1=1.4c1=1.4,c2=1.5c_2=1.5c2=1.5,惯性权重ω=0.1\omega = 0.1ω=0.1。
适应度函数代码如下:
function y = fun(x)
% 函数用于计算粒子适应度值
% x input 输入粒子
% y output 粒子适应度值 c=20;y=-c*exp(-0.2*sqrt((x(1)^2+x(2)^2)/2))-...exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)+c+exp(1);
end
PSO算法代码如下:
%% 清空环境
clc
clear
%% 参数初始化
c1 = 1.4;c2 = 1.5; %加速度因子
maxgen = 100; %进化次数
sizepop = 20; %群体规模
w = 0.1; %惯性权重
Vmax = 1;Vmin = -1; %速度最大值,最小值
popmax = 5;popmin = -5; %个体最大值,最小值
pop = zeros(sizepop,2); %种群
V = zeros(sizepop,2); %速度
fitness = zeros(sizepop,1); %适应度
trace = zeros(maxgen,1); %结果
%% 随机产生一个群体,初始粒子和速度
for i=1:sizepoppop(i,:) = 5*rands(1,2); %初始种群V(i,:) = rands(1,2); %初始化速度 fitness(i)=fun(pop(i,:)); %计算染色体的适应度
end
%% 个体极值和群体极值
[bestfitness,bestindex] = min(fitness);
Gbest = pop(bestindex,:); %全局最佳
fitnessGbest = bestfitness; %全局最佳适应度值
Pbest = pop; %个体最佳
fitnessPbest = fitness; %个体最佳适应度值
%% 迭代寻优
for i=1:maxgen for j=1:sizepop V(j,:) = w*V(j,:) + c1*rand*(Pbest(j,:) - pop(j,:)) + ... %速度更新c2*rand*(Gbest - pop(j,:));V(j,V(j,:)>Vmax)=Vmax;V(j,V(j,:)<Vmin)=Vmin; pop(j,:)=pop(j,:)+V(j,:); %群体更新pop(j,pop(j,:)>popmax)=popmax;pop(j,pop(j,:)<popmin)=popmin;fitness(j)=fun(pop(j,:)); %适应度值 end for j=1:sizepop if fitness(j) < fitnessPbest(j) %个体最优更新Pbest(j,:) = pop(j,:);fitnessPbest(j) = fitness(j);end if fitness(j) < fitnessGbest %群体最优更新Gbest = pop(j,:);fitnessGbest = fitness(j);endend trace(i)=fitnessGbest; disp([Gbest,fitnessGbest]);
end
%% 结果分析
plot(trace)
title('最优个体适应度');
xlabel('进化代数');
ylabel('适应度');
算法结果如下:
最终得到的个体适应度值为0.4441×10−140.4441\times 10^{-14}0.4441×10−14,对应的粒子位置为(0.0125×10−14,0.1310×10−14)(0.0125\times 10^{-14}, 0.1310\times 10^{-14})(0.0125×10−14,0.1310×10−14),PSO算法寻优得到最优值接近函数实际最优值,说明PSO算法具有较强的函数极值寻优能力。
四、基于自适应变异粒子群算法的非线性函数寻优
本案例寻优的非线性函数(Shubert函数)为
f(x1,x2)=∑i=15icos[(i+1)x1+i]×∑i=15icos[(i+1)x2+i],−10≤x1,x2≤10f(x_1,x_2 )=\sum_{i=1}^{5}{i\cos[(i+1) x_1+i]}\times\sum_{i=1}^{5}{icos[(i+1) x_2+i]},-10\leq x_1,x_2 \leq 10 f(x1,x2)=i=1∑5icos[(i+1)x1+i]×i=1∑5icos[(i+1)x2+i],−10≤x1,x2≤10
该函数图形如图3所示:
从函数图形可以看出,该函数有很多局部极小值,很难用传统的梯度下降方法进行全局寻优。
自适应变异是借鉴遗传算法中的变异思想,在PSO算法中引入变异操作,即对某些变量以一定的概率重新初始化。变异操作拓展了在迭代中不断缩小的种群搜索空间,使粒子能够跳出先前搜索到的最优值位置,在更大的空间中开展搜索,同时保持了种群多样性,提高算法寻找更优值的可能性。因此,在普通粒子群算法的基础上引入简单变异算子,在粒子每次更新之后,以一定概率重新初始化粒子。
本案例群体的粒子数为50,每个粒子的维数为2,算法迭代进化次数为500。加速度因子c1=1.4c_1=1.4c1=1.4,c2=1.5c_2=1.5c2=1.5,惯性权重ω=0.8\omega = 0.8ω=0.8。
适应度函数代码如下:
function y = funShubert(x)
% 函数用于计算粒子适应度值
% x input 输入粒子
% y output 粒子适应度值 h1=0;h2=0;for i=1:5h1 = h1+i*cos((i+1)*x(1)+i);h2 = h2+i*cos((i+1)*x(2)+i);endy = h1*h2;
end
自适应变异PSO算法代码如下:
%% 清空环境
clc
clear
%% 参数初始化
c1 = 1.4;c2 = 1.5; %加速度因子
maxgen = 500; %进化次数
sizepop = 50; %种群规模
w = 0.8; %惯性权重
Vmax = 5;Vmin = -5; %速度最大值,最小值
popmax = 10;popmin = -10; %个体最大值,最小值
pop = zeros(sizepop,2); %种群
V = zeros(sizepop,2); %速度
fitness = zeros(sizepop,1); %适应度
trace = zeros(maxgen,1); %结果
%% 随机产生一个群体,初始粒子和速度
for i=1:sizepoppop(i,:) = 10*rands(1,2); %初始种群V(i,:) = 5*rands(1,2); %初始化速度fitness(i) = funShubert(pop(i,:)); %计算染色体的适应度
end
%% 个体极值和群体极值
[bestfitness, bestindex] = min(fitness);
Gbest = pop(bestindex,:); %全局最佳
fitnessGbest = bestfitness; %全局最佳适应度值
Pbest = pop; %个体最佳
fitnessPbest = fitness; %个体最佳适应度值
%% 迭代寻优
for i=1:maxgen for j=1:sizepop V(j,:) = w*V(j,:) + c1*rand*(Pbest(j,:) - pop(j,:)) +...%速度更新c2*rand*(Gbest - pop(j,:));V(j,V(j,:)>Vmax) = Vmax;V(j,V(j,:)<Vmin) = Vmin; pop(j,:) = pop(j,:)+V(j,:); %群体更新pop(j,pop(j,:)>popmax) = popmax;pop(j,pop(j,:)<popmin) = popmin; if rand>0.9 %自适应变异 pop(j,:) = rands(1,2);end fitness(j) = funShubert(pop(j,:)); %适应度值 endfor j=1:sizepop if fitness(j) < fitnessPbest(j) %个体最优更新Pbest(j,:) = pop(j,:);fitnessPbest(j) = fitness(j);end if fitness(j) < fitnessGbest %群体最优更新Gbest = pop(j,:);fitnessGbest = fitness(j);endend trace(i)=fitnessGbest; disp([Gbest,fitnessGbest]);
end
%% 结果分析
plot(trace)
title('最优个体适应度');
xlabel('进化代数');
ylabel('适应度');
算法结果如下:
最终得到的个体适应度值为-186.7309,对应的例子位置为(−1.4252,−0.8003)(-1.4252,-0.8003)(−1.4252,−0.8003),自适应变异PSO算法寻优得到最优值接近函数实际最优值,说明该算法具有较强的函数极值寻优能力。
五、补充
惯性权重ω\omegaω体现的是粒子当前速度多大程度上继承先前的速度,Shi.Y最先将惯性权重ω\omegaω引入到PSO算法中,并分析指出一个较大的惯性权值有利于全局搜索,而一个较小的惯性权值则更有利于局部搜索。为了更好地平衡算法的全局搜索与局部搜索能力,其提出了线性递减惯性权重(Linear Decreasing Inertia Weight,LDIW),即
ω(t)=ωstart−(ωstart−ωend)×tTmax\omega(t)=\omega_{start}-(\omega_{start}-\omega_{end})\times\frac{t}{T_{max}} ω(t)=ωstart−(ωstart−ωend)×Tmaxt
式中,ωstart\omega_{start}ωstart为初始惯性权重,ωend\omega_{end}ωend为迭代至最大次数时的惯性权重,ttt为当前迭代次数,TmaxT_maxTmax为最大迭代次数。
一般来说,惯性权重取值为ωstart=0.9\omega_{start}=0.9ωstart=0.9,ωend=0.4\omega_{end}=0.4ωend=0.4时算法性能最好。这样,随着迭代的进行,惯性权重由0.9线性递减至0.4,迭代初期较大的惯性权重使算法保持了较强的全局搜索能力,而迭代后期较小的惯性权值有利于算法进行更精确的局部搜索。
线性惯性权重只是一种经验做法,常用的惯性权重的选择还包括以下几种:
ω(t)=ωstart−(ωstart−ωend)×(tTmax)2\omega(t)=\omega_{start}-(\omega_{start}-\omega_{end})\times(\frac{t}{T_{max}})^2 ω(t)=ωstart−(ωstart−ωend)×(Tmaxt)2
ω(t)=ωstart−(ωstart−ωend)×(2tTmax−(tTmax)2)\omega(t)=\omega_{start}-(\omega_{start}-\omega_{end})\times(\frac{2t}{T_{max}}-(\frac{t}{T_{max}})^2) ω(t)=ωstart−(ωstart−ωend)×(Tmax2t−(Tmaxt)2)
六、练习
求测试函数的最小值,以及最小值点。
1. Rastrigin function:
f(x)=An+∑i=1n[xi2−Acos(2πxi)],−5.12≤xi≤5.12f(\bm x)=A_n+\sum_{i=1}^{n}{[x_i^2-A\cos (2\pi x_i)]},-5.12\leq x_i\leq 5.12 f(x)=An+i=1∑n[xi2−Acos(2πxi)],−5.12≤xi≤5.12
当A=10,n=2A=10,n=2A=10,n=2时,如下图所示:
2. Sphere function:
f(x)=∑i=1nxi2,−∞≤xi≤∞f(\bm x) = \sum_{i=1}^{n}{x_i^2},-\infty\leq x_i \leq \infty f(x)=i=1∑nxi2,−∞≤xi≤∞
当n=2n=2n=2时,如下图所示:
3. Beale function:
f(x,y)=(1.5−x+xy)2+(2.25−x+xy2)2+(2.625−x+xy3)2,−4.5≤x,y≤4.5f(x,y)=(1.5-x+xy)^2+(2.25-x+xy^2)^2+(2.625-x+xy^3)^2,-4.5\leq x,y\leq 4.5 f(x,y)=(1.5−x+xy)2+(2.25−x+xy2)2+(2.625−x+xy3)2,−4.5≤x,y≤4.5
4. Booth function:
f(x,y)=(x+2y−7)2+(2x+y−5)2,−10≤x,y≤10f(x,y)=(x+2y-7)^2+(2x+y-5)^2,-10\leq x,y\leq 10 f(x,y)=(x+2y−7)2+(2x+y−5)2,−10≤x,y≤10
5. Bukin function:
f(x,y)=100∣y−0.01x2∣+0.01∣x+10∣,−15≤x≤−5,−3≤y≤3f(x,y)=100\sqrt{|y-0.01x^2|}+0.01|x+10|,-15\leq x\leq -5,-3\leq y\leq 3 f(x,y)=100∣y−0.01x2∣+0.01∣x+10∣,−15≤x≤−5,−3≤y≤3
6. three-hump camel function:
f(x,y)=2x2−1.05x4+x66+xy+y2,−5≤x,y≤5f(x,y)=2x^2-1.05x^4+\frac{x^6}{6}+xy+y^2,-5\leq x,y\leq 5 f(x,y)=2x2−1.05x4+6x6+xy+y2,−5≤x,y≤5
7. Hölder table function:
f(x,y)=−∣sinxcosyexp(∣1−x2+y2π∣)∣,−10≤x,y≤10f(x,y)=-|\sin x \cos y \exp(|1-\frac{\sqrt{x^2+y^2}}{\pi}|)|,-10\leq x,y\leq 10 f(x,y)=−∣sinxcosyexp(∣1−πx2+y2∣)∣,−10≤x,y≤10
相关文章:

面向对象进阶2 组合
2019独角兽企业重金招聘Python工程师标准>>> 一:命名空间 class Person:Country 中国人 # 静态变量print(Person.Country) alex Person() # 创建了一个空的命名空间 alex.name alex # 对象 alex.Country 泰国人 egon Person() egon.name ego…

Android基础知识之Manifest文件的组织结构
原文:http://android.eoe.cn/topic/android_sdk 是AndroidManifest.xml文件中的根标签,她必须包含一个标签和指定的xmlns:android、 package两个属性。 属性: xmlns:android定义了Android的命名空间。这个属性一般可以设置为:&quo…

java类的注释模板_IDEA添加Java类注释模版的方法
本文介绍了idea添加java类注释模版的方法,分享给大家,具体如下:idea版本:intellij idea 2017.2.5 x64eclipse能在类上方输入/**,回车添加类注释模版,但idea没有默认添加这个功能,需要做一些设置。下面介绍三…

POJ 2586 Y2K Accounting Bug(贪心)
题目连接:http://poj.org/problem?id2586 题意:某公司要统计全年盈利状况,对于每一个月来说,如果盈利则盈利S,如果亏空则亏空D。公司每五个月进行一次统计,全年共统计8次(1-5、2-6、3-7、4-8、5-9、6-10、…

【组队学习】10月份微信图文索引
10月份微信图文索引 一、组队学习相关 周报: Datawhale组队学习周报(第036周)Datawhale组队学习周报(第035周)Datawhale组队学习周报(第034周)Datawhale组队学习周报(第033周&…

java spring scope_如何在Spring中自定义scope的方法示例
大家对于 Spring 的 scope 应该都不会默认。所谓 scope,字面理解就是“作用域”、“范围”,如果一个 bean 的 scope 配置为 singleton,则从容器中获取 bean 返回的对象都是相同的;如果 scope 配置为prototype,则每次返…

学习ExtJS4 常用控件
ExtJS组件配置方式介绍 1.使用逗号分隔参数列表配置组件 首先来看一个简单的逗号分隔参数列表的例子。这个例子非常简单,它用来显示信息提示框。 2.使用Json对象配置组件 接下来看一个使用Json对象配置组件的例子,很多地方习惯性称之为配…

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

中国电信打造“三朵云”战略 助力互联网+医疗发展
随着云计算、大数据的快速发展,全行业上云成为一个趋势,在健康医疗这个领域,应大势之趋,纷纷构建医疗云。近日,中国电信医疗云专区北京节点发布会在京顺利召开,会后北京电信副总经理项煌妹接受了中国IDC圈记…

python 数据类笔试题_一道 Python 类的笔试题详解
r {}class C(object):def __init__(self, a, b):self.a aself.b bif b a:orig super(C, cls)r[cls.instance] 1a C(1, a)b C(1, a)c C(1, b)l [a, b, c]for i in l:if i not in r:r[i] 1else:r[i] 1assert r[a] 2assert r[b] 2assert r[c] 1原题目要求如下&…

【优秀作业】粒子群算法(Python)
粒子群优化算法 一、概述 粒子群优化算法(Particle Swarm Optimization,PSO)的思想来源于对鸟捕食行为的模仿,最初,Reynolds.Heppner 等科学家研究的是鸟类飞行的美学和那些能使鸟群同时突然改变方向,分散…

警惕企业中的五种虚假执行力
第一种虚假执行力:无条件服从——只强调员工“服从”,不强调员工的智慧 很多人讲执行力,很喜欢强调员工的无条件服从。这种观念是OEM(代工生产)制造业时代的产物。实际上这是一种基于“规模制造”的虚假执行力,其本质是把人当成了…

真实记录疑似Linux病毒导致服务器 带宽跑满的解决过程
案例描述 由于最近我在重构之前的APP,需要和server端进行数据交互,发现有一个现象,那么就是隔1~2天总会发生获取数据超时的问题,而且必须要重启服务器才能解决。早在之前,我有留意到这个问题,但是由于这个服…

java集合总结_Java中集合总结
Java数组的长度是固定的,为了使程序能够方便地存储和操作数目不固定的一组数据,JDK类库提供了Java集合,这些集合类都位于java.util包中,但是与数组不同的是,集合中不能存放基本类型数据,而只能存放对象的引…

区块链基本解读
最近看着这个区块链,稍有新得,写下菜鸟自己的理解,希望大牛多多指点。 总体心得,如果互联网技术解决的是通讯问题的话,区块链技术解决的是信任问题。 下面举个日常例子:打赌 比如A和B赌石头是否为天然玉石&…

PDO防注入原理分析以及使用PDO的注意事项 (转)
我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下两个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特别注意什么? 一、为何要优先使用PDO? P…

LSGO软件技术团队招新 线下组队学习
团队招新 LSGO软件技术团队(Dreamtech算法组)成立于2010年09月,团队主要从事地理信息系统、管理信息系统、计算机视觉等领域的应用开发,团队同时具有培养学生的重要职能,毕业学生分布在IBM、百度、阿里、腾讯、京东、…

java spring 配置文件_[Java教程]Spring配置文件
[Java教程]Spring配置文件02016-03-19 00:00:08Spring配置文件是集成了Spring框架的项目的核心,引擎从哪里开始,中间都执行了哪些操作,小谈一下它的执行流程。容器先是加载web.接着是applicationContext.一种方法是加入ContextLoaderServlet这…
王子朝:一种高效且容错的方法用于协作车辆定位
王子朝是华北电力大学计算机系大四的学生,Dreamtech成员,参加了多期Dreamtech与Datawhale联合组织的组队学习活动,现保送西安电子科技大学深造。 这篇图文是他在线下组队学习时,为大家分享自己所看论文的总结。 希望参与我们组队…

python文件句柄_Python文件操作
classfile(object):def close(self): #real signature unknown; restored from __doc__关闭文件"""close() -> None or (perhaps) an integer. Close the file.Sets data attribute .closed to True. A closed file cannot be used forfurther I/O operation…

XML简单的增改删操作
XML文件的简单增改删,每一个都可以单独拿出来使用。 新创建XML文件,<?xmlversion"1.0"encoding"utf-8"?> <bookstore> <bookgenre"fantasy"ISBN"2-3631-4"> <title>Oberons Legacy&l…

javascript推荐书籍
WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没有学校的正规教育,大多数人都是靠自己自学成才。本文主要介绍自己从事web开发以来(从大二至今)看过的书籍和自己的成长过程,目的是给想了解 JavaScript或者是刚接触JavaScrip…

【青少年编程竞赛交流】10月份微信图文索引
10月份微信图文索引 由于“组队学习”这个公众号的功能主要是组织Datawhale社群中的学习者们每个月的组队学习,所以,我另外新建了这个微信公众号“青少年编程竞赛交流”,在这个公众号上分享有关青少年编程方面的知识。如果大家需要就关注这个…

java 简单万年历_JAVA实现的简单万年历代码
本文实例讲述了JAVA实现的简单万年历。分享给大家供大家参考,具体如下:import java.util.Scanner;public class PrintCalendar {public static void main(String[] args) {int years 0;int month 0;int days 0;boolean isRun false;//從控制台輸入年…

mongoDB 入门指南、示例
http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html mongoDB 入门指南、示例 上一篇:简单介绍mongoDB 一、准备工作 1、 下载mongoDB 下载地址:http://www.mongodb.org/downloads 选择合适你的版本 相关文档:http://www.mongodb.…

中国电子学会图形化四级编程题:成语接龙
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100,小马老…

sidecar学习
1、SideCar的出现 微服务的结构是细粒度的,由多个服务构成,支持不同的服务用不同的语言来编写,比如a服务用python,b服务用java,C服务用php等,我们称为异构语言,那么在利用zuul来代理访问服务的时…

java整数常量区_在Java中,我可以用二进制格式定义一个整数常量吗?
所以,随着Java SE 7的发布,二进制表示法是标准的。 如果你对二进制有一个很好的理解,语法是非常简单明了的。byte fourTimesThree 0b1100; byte data 0b0000110011; short number 0b111111111111111; int overflow 0b1010101010101010101…

[LeetCode 120] - 三角形(Triangle)
问题 给出一个三角形,找出从顶部至底部的最小路径和。每一步你只能移动到下一行的邻接数字。 例如,给出如下三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 从顶部至底部的最小路径和为11(即235111)。 注意: …