智能优化上机作业

  • 格式:doc
  • 大小:53.50 KB
  • 文档页数:4

计算智能课程上机备选题目
选做下列其中一题,用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<Pc
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)<cost(2*i)
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 ;。