• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: Matlab
  • 标签: PMX  MATLAB  

资源简介

PMX算法,部分匹配交叉算法.

资源截图

代码片段和文件信息

function [newVanewVb]=PMX(VaVb) 
    startXorPoint=mod(ceil(rand(1)*10)length(Va) ); 
    if startXorPoint==0 
        startXorPoint=startXorPoint+1; 
    end    
    xorLength=mod(floor(rand(1)*10)length(Va)); 
    endXorPoint=startXorPoint+xorLength; 
    while(endXorPoint>length(Vb) ) 
        xorLength=mod(floor(rand(1)*10)length(Va)); 
        endXorPoint=startXorPoint+xorLength; 
    end    
    tempa=Va(startXorPoint:endXorPoint); 
    tempb=Vb(startXorPoint:endXorPoint); 
    %找出映射关系
    for ix=1:length(tempa) 
        aMappingb(ix1:2)=[Va(startXorPoint+ix-1)Vb(startXorPoint+ix-1)];
    end
    for ix=1:length(tempa) 
        bMappinga(ix1:2)=[Vb(startXorPoint+ix-1)Va(startXorPoint+ix-1)];
    end
    %交换子串
    Va(startXorPoint:endXorPoint)=tempb; 
    Vb(startXorPoint:endXorPoint)=tempa; 
    
    %对Va进行冲突检测
    indexVa = 1;
    while(indexVa        singleGene =  Va(indexVa);
        while( ismember(singleGenetempb) == 1 )
            conflictIndex = find(tempb==singleGene);
            singleGene = bMappinga(conflictIndex2);
        end
        V

评论

共有 条评论