赞
踩
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Lower_bound = lower * np.ones((1,d))
Upper_bound = upper * np.ones((1,d))
Q = np.zeros((N_pop, 1)) # 频率
v = np.zeros((N_pop, d)) # 速度
S = np.zeros((N_pop, d))
#=初始化种群、初始解===
Sol = np.zeros((N_pop, d))
Fitness = np.zeros((N_pop, 1))
for i in range(N_pop):
Sol[i] = np.random.uniform(Lower_bound, Upper_bound, (1, d))
Fitness[i] = objfun(Sol[i])
#找出初始最优解=======
fmin = min(Fitness)
Index = list(Fitness).index(fmin)
best = Sol[Index]
#开始迭代=
for t in range(N_gen):
#====对所有蝙蝠/解决方案进行循环 ======
for i in range(N_pop):
Q[i] = np.random.uniform(Qmin, Qmax)
v[i] = v[i] + (Sol[i] - best) * Q[i]
S[i] = Sol[i] + v[i]
#=应用简单的界限/限制==
Sol[i] = simplebounds(Sol[i], Lower_bound, Upper_bound)
if rand() > r:
S[i] = best + 0.001*np.random.randn(1, d)
#====评估新的解决方案 ===========
Fnew = objfun(S[i])
#如果解决方案有所改进,或者声音不太大,请更新
if (Fnew <= Fitness[i]) and (rand() < A):
Sol[i] = S[i]
Fitness[i] = Fnew
#更新当前的最佳解决方案==
if Fnew <= fmin:
best = S[i]
fmin = Fnew
N_iter = N_iter + N_pop
print('Number of evaluations: ', N_iter)
print("Best = ", best, '\n fmin = ', fmin)
return best
def simplebounds(s, Lower_bound, Upper_bound):
Index = s > Lower_bound
s = Index * s + ~Index * Lower_bound
Index = s < Upper_bound
s = Index * s + ~Index * Upper_bound
return s
#目标函数=========
def test_function(u):
a = u ** 2
return a.sum(axis=0)
if name == ‘main’:
bat_algorithm(test_function)
5 Matlab实现
clear
wmax=0.9;%惯性权重最大值
wmin=0.4;%惯性权重最小值
n=10000; % 群体大小
A=rand(1,n); % 声音响度 (不变或者减小)
%% 频率范围
Qmin=0; % 最低频率
Qmax=1; % 最高频率
d=2;% 搜索变量的维数(即频率和速度)
%% 初始矩阵
Q=zeros(n,1); % 频率矩阵初始化
v=zeros(n,d); % 速度矩阵初始化,初始化意义就是产生一个初始矩阵
%% x自变量范围
u=-3;
o=12.1;
% y自变量范围
p=4.1;
l=5.8;
%% 初始化群体/解
for i=1:n
Sol(i,1)=-3+(12.1+3)*rand(1,1);%x自变量范围【-3,12.1】
Sol(i,2)=4.1+(5.8-4.1)*rand(1,1);%y自变量【4.1,5.8范围】
%将随机生成的两个自变量带入函数式
Fitness(i)=Fun(Sol(i,:));%函数值
end
%% 寻找当前最优解
[fmax,I]=max(Fitness);
best=Sol(I,:);
T=100;%飞行次数
%% 开始飞行
for t=1:T
for i=1:n,
Q(i)=Qmin+(Qmin-Qmax)*rand;%rand均匀分布的随机数
%v(i,:)=v(i,:)+(Sol(i,:)-best)*Q(i);(原速度)
w=(wmax-wmin)exp(-2(t/T)^2)+wmin;%惯性权重因子
v(i,:)=w*v(i,:)+(Sol(i,:)-best)*A(i)*Q(i);%更改后的速度
S(i,:)=Sol(i,:)+v(i,:);%位置移动
%% 边界问题,如果下次飞行超出自变量范围外了,那么下次飞行的位置为投影在的边界上的位置
%x轴
if S(i,1)>o
S(i,1)=o;
end
if S(i,1)<u
S(i,1)=u;
end
%y轴
if S(i,2)>l
S(i,2)=l;
end
if S(i,2)<p
S(i,2)=p;
end
%% 评估该次飞行后产生的新解
Fnew(i)=Fun(S(i,:));
end
[Fmax,Z]=max(Fnew);%找出该次飞行后产生的最大值
C(t,:)=S(Z,:);
FFnew(t)=Fmax;
end
[Ffmax,N]=max(FFnew);%找出整个飞行过程中的最大值
M=C(N,:)
Ffmax
%目标函数
function z=Fun(u)
z=21.5+u(1)sin(4piu(1))+u(2)sin(20piu(2));
如果是其他函数怎么办呢?
函数z=21.5+u(1)*sin(4*pi*u(1))+u(2)*sin(20*pi*u(2))中的两个自变量对应程序中的是Sol(i,1)=-3+(12.1+3)*rand(1,1);%x自变量范围【-3,12.1】和Sol(i,2)=4.1+(5.8-4.1)*rand(1,1);%y自变量【4.1,5.8范围】,两自变量产生的是列矩阵,而程序中Sol(i,:) 提取的是矩阵中的行,所以如果对该函数增减自变量,或者想求其他含有多个自变量的函数,程序中只用修改以下程序部分,其他参数也可以自行更改(注:自变量的范围和个数增加了,那么种群个数和飞行次数务必要增加):
Sol(i,1)=-3+(12.1+3)*rand(1,1);%x自变量范围【-3,12.1】
Sol(i,2)=4.1+(5.8-4.1)*rand(1,1);%y自变量【4.1,5.8范围】
和
% x自变量范围
u=-3;
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。