Giải thuật di truyền
Các toán tử của giải thuật GA hoạt động ở mức chuỗi nên cấu trúc dữ liệu cơ bản là quần thể các chuỗi. Một trong những cấu trúc dữ liệu sử dụng là bảng hai chiều với mỗi hàng là một cá thể và số cột là độ dài của mỗi cá thể. Do độ dài của mỗi cá thể và số cá thể th−ờng xuyên biến động nên bảng hai chiều đ−ợc cấp phát động. Hai quần thể cũ và mới đ−ợc định nghĩa là hai con trỏ chỉ đến hai bảng hai chiều có kích th−ớc động Oldpop( ) và NewPop( ).
Đồng thời với quần thể các cá thể là hai véc tơ đ−ợc cấp phát động của các số thực nhằm ghi nhận giá trị của hàm mục tiêu t−ơng ứng với các cá thể và giá trị sức khỏe t−ơng ứng : Objective( ) và Fitness( ).
Các biến Popsize ghi số cá thể trong quần thể, Pcross ghi xác suất tạp lai, Pmutation ghi xác suất đột biến, Gen ghi số thế hệ cần tiến hóa và độ dài chuỗi là Lchrom.
Mạng nơ ron
Mạng nơ ron truyền thẳng đ−ợc cài đặt là một lớp có tên gọi là Network, các tham số của mạng là các biến thành viên; NumInputs, NumOutputs, NumNeurals t−ơng ứng là số đầu vào, số đầu ra, số nơ ron trên lớp ẩn, Inputs( ) và Expected_Outputs( ) là hai véc tơ chứa đầu vào và đầu ra mong muốn của mạng, Layers( ) là véc tơ có kiểu phần tử thuộc lớp Layer chứa các lớp mạng. Lớp Layer có
biến thành viên là hai véc tơ Inputs( ), Outputs( ) và Output_Errors( ) chứa đầu vào, đầu ra và sai số đầu ra của lớp.
Để tích hợp giải thuật GA với giải thuật BP cần sử dụng một bảng hai chiều cấp phát động GA_Weights( ) để l−u trữ các trọng số của mạng tại mỗi thế hệ tiến hóa, số cột là số trọng số của mạng, số hàng là số cá thể trong quần thể. Mỗi hàng của bảng t−ơng ứng với một bộ trọng số của mạng, việc đ−a vào mạng bộ trọng số này đ−ợc thực hiện nhờ thủ tục GA_loadWeight( ) của lớp network.
Ngoài ra còn sử dụng bảng hai chiều cấp phát động BP_weights( ) để l−u trữ 0.05*N bộ trọng số kết quả của giải thuật GA sau Gen thế hệ tiến hóa làm đầu vào cho giải thuật BP.
Số liệu mẫu và tổ chức số liệu:
Số liệu thực nghiệm đ−ợc tổ chức trong một tệp số liệu. Các cặp véc tơ tín hiệu vào và tín hiệu ra đ−ợc viết trên một dòng. Do hàm biến đổi dùng trong mạng là hàm sigmoid nên các số liệu này sẽ đ−ợc ch−ơng trình tự động tỷ lệ hóa tuyến tính trong khoảng [0.1, 0.9] theo công thức (4.1). Tập dữ liệu sau khi đã đ−ợc tỷ lệ hóa nh− trên đ−ợc l−u trữ trong hai véc tơ cấp phát động Inputs( ) và Expected_outputs( ).