智能优化上机作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算智能课程上机备选题目
选做下列其中一题,用2A 算法或模拟退火算法或遗传算法或禁忌搜索算法进行编程求解。
1、求函数的最大值
.310,)(max 2≤≤=x x x f
2、求函数的最大值
.5,,,5,1
1
),,,(43212
42322214321≤≤-++++=
x x x x x x x x x x x x f 3、求函数的最小值
.100,
)(12≤∑==i n
i i x x X f
4、求函数的最小值
.100|| ,5.0)]
(001.01[5
.0sin )(2
22212
2212≤-++-+=i x x x x x X f 5、设10,6==b n ,物品价值分别为61,59,31,21,15,5,对应的重量为6,5,3,2,1,1。利用2A 算法求解该问题。
6、已知背包的装载量为10=c ,现有5=n 件物品,它们的重量和价值分别是2,3,5,1,4和2,5,8,3,6。试用模拟退火算法求解该问题。
7、求解4城市TSP 问题,任两城市之间的距离矩阵如下
.06815607108705
151050
)(⎥
⎥
⎥⎥⎦
⎤⎢⎢⎢
⎢⎣⎡==ij d D 8、求解5城市TSP 问题,任两城市之间的距离矩阵如下
⎪⎪⎪⎪⎪⎪⎭
⎫ ⎝⎛=0246820681546071068702581510250ij d .
9、求解10城市TSP 问题(691.2*=d )
10、求解30城市TSP 问题(741.423*=d by D B Fogel )
11、求解4城市非对称TSP 问题,任两城市之间的距离矩阵如下
.0111
1055.11101
15.010)(⎥
⎥
⎥⎥⎦
⎤⎢⎢⎢
⎢⎣⎡==ij d D Function Chrom=TSPinitialize(Popsize, Ncities) for i=1: Popsize
Chrom(i,1)=1 ;%推销员从城市1出发 for j= 2: Ncities
Chrom (i ,j)= round ( rand *(Ncities-j))+1; end end
解码 : Function pop=TSPdecode( Popsize, Ncities,Chrom,W )
For i = 1:Popsize
temp W=W ;
for j=1: Ncities
pop (i ,j) = temp W ( chrom(i,j) );
for k = (Chrom( i, j)) :( Ncities-j)
tempW (k ) = tempW( k + 1)
end
end
end ;
计算目标函数:Function rpop=rotatepop( pop)
for i = 1 :Popsize
rpop = [pop(i,2: Ncitie),pop (i,1)]
end
Function cost =TSPcost (Popsize,pop,rpop)
For i =1 :Popsize
cost(i)= Sum(diag (D( pop (i,:)’)(pop(i,:)’)));
end ;
遗传操作设计
选择:采用具有排名的转盘式选择算子.Function Chrom=select (Popsize, cost , chrom)
B= 2 *( a-1);
[fit ,I]= sort (-cost);
for i=1 :Popsize
P fit(i)= (a-b*i/(Popsinx+1))/ Popsize;
en
pfit = cum Sum(pfit);
rs= rand ( 1,Popsize);
for i =1 :Popsize
if rs(i)<=pfit(i) ,Chrom(i,:)=Chrom( I(i),:);
else Chrom( I,:)=Chrom(( round*Popsize)+,:);
end
end;
若发生交叉操作,在[1, Ncitie-1]区间随机确定一个交叉位置,进行该位后的所有基因对换,否则不做任何处理.
Function Chrom=crossover( Chrom )
For i =1 :Popsize/2
If rand jcross= fix ( rand*(Ncitie-1))+1;%jcorss为交叉位 P1 = Chrom( 2*i-1;:),P2=Chrom( 2*I;:) Chrom ( 2*i -1,;:)=[P1(1:jcross),P1(( jcorss+1): Ncitie)]; Else Chrom( 2*i -1,:)=chrom (2*i-1,:); Chrom(2*i:),=Chrom(2*i:) end end; 变异:Function Chorm=popmut(Chrom, cost) for i =1:Popsize/2 sameidx=[Chrom(i*i-1= =Chrom(2*i,:) ] diffidx =find( sameidx= =0); if length (diffidx)<=2 if cost (2*i-1) for j=2: Ncities Chrom(2*i, j)=round( rand*( Ncities-j))+1; else for j=2: Ncities.Chorm( 2*i-1,j)=round(rand*( Ncities -j))+1 end end ;