智能优化上机作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 ;

相关文档
最新文档