Thủ tục lai ghép sẽ tổng hợp thông tin từ hai cá thể bố mẹ để tạo ra cá thể mới (gọi là cá thể con). Trong thuật toán thứ nhất, với mục tiêu là xây dựng lời giải khả thi, các toán tử lai ghép một điểm cắt hay lai ghép đều thông dụng là không thích hợp. Ta sẽ sử dụng 2 toán tử lai ghép, Cross1 và Cross2 được mô tả tương ứng bởi hai thủ tục CROSS1(), CROSS2() sau đây:
Procedure CROSS1()
Khởi tạo NST con :
Child[i] Father1[i] nếu Father1[i] = Father2[i]; 0 ngược lại
Chọn ngẫu nhiên 1 NST từ NST bố mẹ: Father1; Chọn ngẫu nhiên 1 số r 0,n ;
Repeat
Đặt Father1 r ;
Đặt Ai|Father1 i ;
For mỗi iAmà Child[i]=0
Child i và cập nhật số vùng xử lý của vị trí kết nối ;
Else
Đặt Father2 i và Bl|Father2 l
For mỗi lB mà {child[l] = 0}
l Child ; Cập nhật số vùng xử lý của vị trí kết nối ; Endfor Endif Endfor ĐặtFather2 r ; Đặt Ai|Father2 i ;
For mỗi iA mà Child[i] = 0
Ifi có thể được kết nối với mà không vi phạm khả năng xử lý của Child i và cập nhật só vùng xử lý của vị trí kết nối
Else
Đặt Father2 i và Bl|Father2 l
For mỗi mỗi lB mà {child[l] = 0} Child l ;
Cập nhật số vùng xử lý của vị trí tiềm năng ;
Endfor Endif
Endfor
Until không tồn tại i với Child[i] = 0
Procedure CROSS2()
Chọn ngẫu nhiên 1 NST từ NST bố mẹ: Father1; Sinh ra 1 chỉnh hợp P(1..n)từ tập {1, 2, …, m};
i Father i
Child 1 ;
Endfor
For mỗi phần tử P(i), i = 1, …, n
Thay thế giá trị của vị trí P(i) trong NST con bởi Father2[P[i]] nếu điều đó không vi phạm điều kiện số vùng xử lý tối đa;
Endfor
Do ta có thể biến đổi lời giải hoặc là bằng cách thay đổi cách gán vùng truy cập với vị trí kết nối hoặc thay đổi tập các vị trí kết nối được mở và kéo theo thay đổi cách gán vùng truy cập với chúng, nên ta sẽ sử dụng hai toán tử đột biến