用遗传算法求解飞机巡航的程序的问题吗

用遗传算法求解飞机巡航的程序的问题吗,第1张

遗传算法求解飞机巡航的程序的代码,仅供参考:

clc,clear

sj0=[53.7121   15.3046  51.1758    0.0322   46.3253   28.2753   30.3313    6.9348

56.5432   21.4188   10.8198   16.2529   22.7891   23.1045   10.1584   12.4819

20.1050   15.4562   1.9451    0.2057    26.4951   22.1221   31.4847    8.9640

26.2418   18.1760   44.0356   13.5401   28.9836   25.9879   38.4722   20.1731

28.2694   29.0011   32.1910    5.8699   36.4863   29.7284   0.9718   28.1477

8.9586   24.6635    16.5618   23.6143   10.5597   15.1178   50.2111   10.2944

8.1519    9.5325    22.1075   18.5569   0.1215   18.8726    48.2077   16.8889

31.9499   17.6309   0.7732    0.4656    47.4134   23.7783   41.8671    3.5667

43.5474    3.9061   53.3524   26.7256   30.8165   13.4595   27.7133    5.0706

23.9222    7.6306   51.9612   22.8511   12.7938   15.7307   4.9568    8.3669

21.5051   24.0909   15.2548   27.2111   6.2070    5.1442    49.2430   16.7044

17.1168   20.0354   34.1688   22.7571   9.4402    3.9200    11.5812   14.5677

52.1181    0.4088   9.5559   11.4219    24.4509    6.5634   26.7213   28.5667

37.5848   16.8474   35.6619    9.9333   24.4654    3.1644   0.7775    6.9576

14.4703   13.6368   19.8660   15.1224   3.1616    4.2428    18.5245   14.3598

58.6849   27.1485   39.5168   16.9371   56.5089   13.7090   52.5211   15.7957

38.4300    8.4648   51.8181   23.0159   8.9983   23.6440    50.1156   23.7816

13.7909    1.9510   34.0574   23.3960   23.0624    8.4319   19.9857    5.7902

40.8801   14.2978   58.8289   14.5229   18.6635    6.7436   52.8423   27.2880

39.9494   29.5114   47.5099   24.0664   10.1121   27.2662   28.7812   27.6659

8.0831   27.6705    9.1556   14.1304    53.7989    0.2199   33.6490    0.3980

1.3496   16.8359    49.9816    6.0828   19.3635   17.6622   36.9545   23.0265

15.7320   19.5697   11.5118   17.3884   44.0398   16.2635   39.7139   28.4203

6.9909   23.1804    38.3392   19.9950   24.6543   19.6057   36.9980   24.3992

4.1591    3.1853    40.1400   20.3030   23.9876    9.4030   41.1084   27.7149

]       %加载100个目标的数据

x=sj0(:,1:2:8) x=x(:)

y=sj0(:,2:2:8) y=y(:)

sj=[x y] d1=[70,40] 

sj=[d1sjd1] sj=sj*pi/180  %单位化成弧度

d=zeros(102) %距离矩阵d的初始值

for i=1:101

  for j=i+1:102

  d(i,j)=6370*acos(cos(sj(i,1)-sj(j,1))*cos(sj(i,2))*cos(sj(j,2))+sin(sj(i,2))*sin(sj(j,2)))

  end

end

d=d+d' w=50 g=100 %w为种群的个数,g为进化的代数

rand('state',sum(clock)) %初始化随机数发生器

for k=1:w  %通过改良圈算法选取初始种群

    c=randperm(100) %产生1,...,100的一个全排列  

    c1=[1,c+1,102] %生成初始解

    for t=1:102 %该层循环是修改圈 

        flag=0 %修改圈退出标志

    for m=1:100

      for n=m+2:101

        if d(c1(m),c1(n))+d(c1(m+1),c1(n+1))<d(c1(m),c1(m+1))+d(c1(n),c1(n+1))

           c1(m+1:n)=c1(n:-1:m+1)  flag=1 %修改圈

        end

      end

    end

   if flag==0

      J(k,c1)=1:102 break %记录下较好的解并退出当前层循环

   end

   end

end

J(:,1)=0 J=J/102 %把整数序列转换成[0,1]区间上的实数,即转换成染色体编码

for k=1:g  %该层循环进行遗传算法的 *** 作 

    A=J %交配产生子代A的初始染色体

    c=randperm(w) %产生下面交叉 *** 作的染色体对 

    for i=1:2:w  

        F=2+floor(100*rand(1)) %产生交叉 *** 作的地址

        temp=A(c(i),[F:102]) %中间变量的保存值

        A(c(i),[F:102])=A(c(i+1),[F:102]) %交叉 *** 作

        A(c(i+1),F:102)=temp  

    end

    by=[]  %为了防止下面产生空地址,这里先初始化

while ~length(by)

    by=find(rand(1,w)<0.1) %产生变异 *** 作的地址

end

B=A(by,:) %产生变异 *** 作的初始染色体

for j=1:length(by)

   bw=sort(2+floor(100*rand(1,3)))  %产生变异 *** 作的3个地址

   B(j,:)=B(j,[1:bw(1)-1,bw(2)+1:bw(3),bw(1):bw(2),bw(3)+1:102]) %交换位置

end

   G=[JAB] %父代和子代种群合在一起

   [SG,ind1]=sort(G,2) %把染色体翻译成1,...,102的序列ind1

   num=size(G,1) long=zeros(1,num) %路径长度的初始值

   for j=1:num

       for i=1:101

           long(j)=long(j)+d(ind1(j,i),ind1(j,i+1)) %计算每条路径长度

       end

   end

     [slong,ind2]=sort(long) %对路径长度按照从小到大排序

     J=G(ind2(1:w),:) %精选前w个较短的路径对应的染色体

end

path=ind1(ind2(1),:), flong=slong(1)  %解的路径及路径长度

xx=sj(path,1)yy=sj(path,2)

plot(xx,yy,'-o') %画出路径

function [path,lmin]=ga(data,d) %data为点集,d为距离矩阵,即赋权图

tic

%======================

sj0=data%开环最短路线

%=================================

% sj0=[datadata(1,:)]%闭环最短路线

%=========================

x=sj0(:,1)y=sj0(:,2)

N=length(x)

%=========================

% d(N,:)=d(1,:)%闭环最短路线

% d(:,N)=d(:,1)%距离矩阵d

%======================

L=N %sj0的长度

w=800dai=1000

%通过改良圈算法选取优良父代A

for k=1:w

c=randperm(L-2)

c1=[1,c+1,L]

flag=1

while flag>0

flag=0

for m=1:L-3

for n=m+2:L-1

if d(c1(m),c1(n))+d(c1(m+1),c1(n+1))<d(c1(m),c1(m+1))+d(c1(n),c1(n+1))

flag=1

c1(m+1:n)=c1(n:-1:m+1)

<a href="https://www.baidu.com/s?wd=end&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3PvF-rjf1rj6LryD3Pjm30ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0dnHmvrHcYnWTYnjn4rHb3Ps" target="_blank" class="baidu-highlight">end</a>

<a href="https://www.baidu.com/s?wd=end&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3PvF-rjf1rj6LryD3Pjm30ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0dnHmvrHcYnWTYnjn4rHb3Ps" target="_blank" class="baidu-highlight">end</a>

<a href="https://www.baidu.com/s?wd=end&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3PvF-rjf1rj6LryD3Pjm30ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0dnHmvrHcYnWTYnjn4rHb3Ps" target="_blank" class="baidu-highlight">end</a>

end

J(k,c1)=1:L

end

J=J/L

J(:,1)=0J(:,L)=1

rand('state',sum(clock))

%遗传算法实现过程

A=J

for k=1:dai %产生0~1 间随机数列进行编码

B=A

c=randperm(w)

%交配产生子代B

for i=1:2:w

F=2+floor(100*rand(1))

temp=B(c(i),F:L)

B(c(i),F:L)=B(c(i+1),F:L)

B(c(i+1),F:L)=temp

end

%变异产生子代C

by=find(rand(1,w)<0.1)

if length(by)==0

by=floor(w*rand(1))+1

end

C=A(by,:)

L3=length(by)

for j=1:L3

<a href="https://www.baidu.com/s?wd=bw&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3PvF-rjf1rj6LryD3Pjm30ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0dnHmvrHcYnWTYnjn4rHb3Ps" target="_blank" class="baidu-highlight">bw</a>=floor(1+fix(rand(1,3)*N)) %产生1-N的3个随机数

<a href="https://www.baidu.com/s?wd=bw&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3PvF-rjf1rj6LryD3Pjm30ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0dnHmvrHcYnWTYnjn4rHb3Ps" target="_blank" class="baidu-highlight">bw</a>=sort(<a href="https://www.baidu.com/s?wd=bw&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3PvF-rjf1rj6LryD3Pjm30ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0dnHmvrHcYnWTYnjn4rHb3Ps" target="_blank" class="baidu-highlight">bw</a>)

C(j,:)=C(j,[1:bw(1)-1,bw(2)+1:bw(3),bw(1):bw(2),bw(3)+1:L])

end

G=[ABC]

<a href="https://www.baidu.com/s?wd=TL&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3PvF-rjf1rj6LryD3Pjm30ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0dnHmvrHcYnWTYnjn4rHb3Ps" target="_blank" class="baidu-highlight">TL</a>=size(G,1)

%在父代和子代中选择优良品种作为新的父代

[<a href="https://www.baidu.com/s?wd=dd&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3PvF-rjf1rj6LryD3Pjm30ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0dnHmvrHcYnWTYnjn4rHb3Ps" target="_blank" class="baidu-highlight">dd</a>,IX]=sort(G,2)

temp=[]

temp(1:<a href="https://www.baidu.com/s?wd=TL&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3PvF-rjf1rj6LryD3Pjm30ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0dnHmvrHcYnWTYnjn4rHb3Ps" target="_blank" class="baidu-highlight">TL</a>)=0

for j=1:<a href="https://www.baidu.com/s?wd=TL&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3PvF-rjf1rj6LryD3Pjm30ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0dnHmvrHcYnWTYnjn4rHb3Ps" target="_blank" class="baidu-highlight">TL</a>

for i=1:L-1

temp(j)=temp(j)+d(IX(j,i),IX(j,i+1))

end

end

[DZ,IZ]=sort(temp)

A=G(IZ(1:w),:)

end

path=IX(IZ(1),:)

% for i=1:length(path)

% path(i)=path(i)-1

% end

% path=path(2:end-1)

lmin=0l=0

for j=1:(length(path)-1)

<a href="https://www.baidu.com/s?wd=t1&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3PvF-rjf1rj6LryD3Pjm30ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0dnHmvrHcYnWTYnjn4rHb3Ps" target="_blank" class="baidu-highlight">t1</a>=path(j)t2=path(j+1)

l=d(<a href="https://www.baidu.com/s?wd=t1&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3PvF-rjf1rj6LryD3Pjm30ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0dnHmvrHcYnWTYnjn4rHb3Ps" target="_blank" class="baidu-highlight">t1</a>,t2)

lmin=lmin+l

end

xx=sj0(path,1)yy=sj0(path,2)

plot(xx,yy,'r-o')

axis equal

toc

无总结反省则无进步

写这篇文章,一是为了总结之前为了准备美赛而学的算法,而是将算法罗列并有几句话解释方便以后自己需要时来查找。

数学建模问题总共分为四类:

1. 分类问题 2. 优化问题 3. 评价问题 4. 预测问题

我所写的都是基于数学建模算法与应用这本书

一 优化问题

线性规划与非线性规划方法是最基本经典的:目标函数与约束函数的思想

现代优化算法:禁忌搜索;模拟退火;遗传算法;人工神经网络

模拟退火算法:

简介:材料统计力学的研究成果。统计力学表明材料中不同结构对应于粒子的不同能量水平。在高温条件下,粒子的能量较高,可以自由运动和重新排列。在低温条件下,粒子能量较低。如果从高温开始,非常缓慢地降温(此过程称为退火),粒子就可以在每个温度下达到热平衡。当系统完全被冷却时,最终形成处于低能状态的晶体。

思想可用于数学问题的解决 在寻找解的过程中,每一次以一种方法变换新解,再用退火过程的思想,以概率接受该状态(新解) 退火过程:概率转化,概率为自然底数的能量/KT次方

遗传算法: 遗传算法是一种基于自然选择原理和自然遗传机制的搜索算法。模拟自然界中的生命进化机制,在人工系统中实现特定目标的优化。

遗传算法的实质是通过群体搜索技术(?),根据适者生存的原则逐代进化,最终得到最优解或准最优解。

具体实现过程(P329~331)

* 编码

* 确定适应度函数(即目标函数)

* 确定进化参数:群体规模M,交叉概率Pc,变异概率Pm,进化终止条件

* 编码

* 确定初始种群,使用经典的改良圈算法

* 目标函数

* 交叉 *** 作

* 变异 *** 作

* 选择

改良的遗传算法

两点改进 :交叉 *** 作变为了以“门当户对”原则配对,以混乱序列确定较差点位置 变异 *** 作从交叉 *** 作中分离出来

二 分类问题(以及一些多元分析方法)

* 支持向量机SVM

* 聚类分析

* 主成分分析

* 判别分析

* 典型相关分析

支持向量机SVM: 主要思想:找到一个超平面,使得它能够尽可能多地将两类数据点正确分开,同时使分开的两类数据点距离分类面最远

聚类分析(极其经典的一种算法): 对样本进行分类称为Q型聚类分析 对指标进行分类称为R型聚类分析

基础:样品相似度的度量——数量化,距离——如闵氏距离

主成分分析法: 其主要目的是希望用较少的变量去解释原来资料中的大部分变异,将掌握的许多相关性很高的变量转化成彼此相互独立或不相关的变量。通常是选出比原始变量个数少,能解释大部分资料中的变异的几个新变量,及主成分。实质是一种降维方法

判别分析: 是根据所研究的个体的观测指标来推断个体所属类型的一种统计方法。判别准则在某种意义下是最优的,如错判概率最小或错判损失最小。这一方法像是分类方法统称。 如距离判别,贝叶斯判别和FISHER判别

典型相关分析: 研究两组变量的相关关系 相对于计算全部相关系数,采用类似主成分的思想,分别找出两组变量的各自的某个线性组合,讨论线性组合之间的相关关系

三 评价与决策问题

评价方法分为两大类,区别在于确定权重上:一类是主观赋权:综合资讯评价定权;另一类为客观赋权:根据各指标相关关系或各指标值变异程度来确定权数

* 理想解法

* 模糊综合评判法

* 数据包络分析法

* 灰色关联分析法

* 主成分分析法(略)

* 秩和比综合评价法 理想解法

思想:与最优解(理想解)的距离作为评价样本的标准

模糊综合评判法 用于人事考核这类模糊性问题上。有多层次模糊综合评判法。

数据包络分析法 是评价具有多指标输入和多指标输出系统的较为有效的方法。是以相对效率为概念基础的。

灰色关联分析法 思想:计算所有待评价对象与理想对象的灰色加权关联度,与TOPSIS方法类似

主成分分析法(略)

秩和比综合评价法 样本秩的概念: 效益型指标从小到大排序的排名 成本型指标从大到小排序的排名 再计算秩和比,最后统计回归

四 预测问题

* 微分方程模型

* 灰色预测模型

* 马尔科夫预测

* 时间序列(略)

* 插值与拟合(略)

* 神经网络

微分方程模型 Lanchester战争预测模型。。

灰色预测模型 主要特点:使用的不是原始数据序列,而是生成的数据序列 优点:不需要很多数据·,能利用微分方程来充分挖掘系统的本质,精度高。能将无规律的原始数据进行生成得到规律性较强的生成序列。 缺点:只适用于中短期预测,只适合指数增长的预测

马尔科夫预测 某一系统未来时刻情况只与现在状态有关,与过去无关。

马尔科夫链

时齐性的马尔科夫链

时间序列(略)

插值与拟合(略)

神经网络(略)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11879266.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存