function x2=CreateNeighbor(x1)

    n=numel(x1);
    
    METHOD=randi([1 3]);

    ii=randperm(n);
    
    switch METHOD
        case 1
            % Swap
            i1=ii(1);
            i2=ii(2);
            x2=x1;
            x2([i1 i2])=x2([i2 i1]);
            
        case 2
            % Reversion
            i1=min(ii(1),ii(2));
            i2=max(ii(1),ii(2));
            x2=x1;
            x2(i1:i2)=x2(i2:-1:i1);
            
        case 3
            % Insertion
            i1=ii(1);
            i2=ii(2);
            if i1<i2
                x2=[x1(1:i1) x1(i2) x1(i1+1:i2-1) x1(i2+1:end)];
            else
                x2=[x1(1:i2-1) x1(i2+1:i1) x1(i2) x1(i1+1:end)];
            end
            
    end

end