Suppose there are n facilities and m customers. We wish to choose:
- which of the n facilities to open
- the assignment of customers to facilities
The objective is to minimize the sum of the opening cost
and the assignment cost.
The total demand assigned to a facility must not exceed
its capacity.
|J| |I|
s_1 f_1
s_2 f_2
...
s_|J| f_|J|
d_1 d_2 d_3 … d_|I|
c_{11} c_{12} c_{13} … c_{1|I|}
c_{21} c_{22} c_{23} … c_{2|I|}
... ... ... ....
c_{|J|1} c_{|J|2} c_{|J|3} … c_{|J||I|}
where:
|J| is the number of potential facility locations;
|I| is the number of customers;
s_j (j=1,...,|J|) is the capacity of facility j;
f_j (j=1,...,|J|) is the fixed cost of opening facility j;
d_i (i=1,...,|I|) is the demand of customer i;
c_{ji} (j=1,...,|J|), (i=1,...,|I|) is the cost of allocating all the demand of customer i to facility j.
写成如下优化问题
min ∑ 0 < = j < = ∣ J ∣ i s o p e n fj \sum_{0<=j<=|J|}^{isopen}\text{fj} ∑0<=j<=∣J∣isopenfj + ∑ j , i i a s s i g n t o j cj,i \sum_{j,i}^{iassigntoj}\text{cj,i} ∑j,iiassigntojcj,i
s.t ∑ i a s s i g n t o j di \sum_{i}^{assigntoj}\text{di} ∑iassigntojdi ≤ s j \leq s_j ≤sj , ∀ j ∈ J \forall j \in J ∀j∈J
遇到超出容量的情况,剪枝
遇到大于最小值的情况,剪枝
#include
#include
#include
#include
#include
#include
using namespace std;
int J, I;
int *d, *s, *f;
int **c;
int sum;
bool *isopen;
int *capacities;
int *gene;
long min_v;
int *min_gene;
void read_data(ifstream &data) {
data >> J >> I;
cout << J << " " << I << endl;
s = new int[J];
f = new int[J];
for (int i = 0; i < J; i ++) {
data >> s[i] >> f[i];
cout << s[i] << " " << f[i] << endl;
}
d = new int[I];
float tmp;
for (int i = 0; i < I; i ++) {
data >> tmp;
d[i] = tmp;
cout << d[i] << " ";
}
cout << endl;
c = new int*[J];
for (int i = 0; i < J; i ++) c[i] = new int[I];
for (int i = 0; i < J; i ++) {
for (int j = 0; j < I; j ++) {
data >> tmp;
c[i][j] = tmp;
cout << c[i][j] << " ";
}
cout << endl;
}
data.close();
cout << "Finish Reading Data" << endl;
}
void delete_arr() {
delete[] s;
delete[] d;
delete[] f;
for (int i = 0; i < J; i ++) delete[] c[i];
delete[] c;
}
void dfs(int index) {
if (index == I) {
for (int i=0; i<I; i++) cout << gene[i] << " ";
cout << " costs " << sum << endl;
min_v = sum;
memcpy(min_gene, gene, I*sizeof(int));
return;
}
for(int i = 0; i < J; i ++) {
if (capacities[i] + d[index] > s[i]) continue;
bool flag = true;
if (isopen[i]) flag = false;
else {
if (sum + f[i] > min_v) continue;
isopen[i] = true;
sum += f[i];
}
if (sum + c[i][index] > min_v) {
if (flag) {
isopen[i] = false;
sum -= f[i];
}
continue;
}
sum += c[i][index];
capacities[i] += d[index];
gene[index] = i;
dfs(index+1);
capacities[i] -= d[index];
sum -= c[i][index];
if (flag) {
isopen[i] = false;
sum -= f[i];
}
}
}
void process(int file_index) {
ifstream data("Instances/p"+to_string(file_index));
if (data.is_open()) {
cout << "p" << file_index << endl;
read_data(data);
clock_t start = clock();
sum = 0;
capacities = new int[J];
memset(capacities,0,J*sizeof(int));
isopen = new bool[J];
memset(isopen,false,J*sizeof(bool));
min_v = 10000000;
min_gene = new int[I];
gene = new int[I];
dfs(0);
clock_t end = clock();
cout << "Cost time " << (end-start)/CLOCKS_PER_SEC << "s, Best individual values for p" << file_index << " : " << endl
<< min_v << endl;
memset(isopen,false,I*sizeof(bool));
for (int i = 0; i < I; i ++) isopen[ min_gene[i] ] = true;
for (int i = 0; i < J; i ++) cout << isopen[i] << " ";
cout << endl;
for (int i = 0; i < I; i ++) cout << min_gene[i] << " ";
cout << endl << endl;
delete[] gene;
delete[] capacities;
delete[] isopen;
delete[] min_gene;
delete_arr();
}
}
int main() {
for (int i = 1; i <= 71; i ++) process(i);
}
GA为群体搜索,不单单只保留最优解
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int J, I;
int *d, *s, *f;
int **c;
int min_v;
int *min_gene;
ofstream result("result.txt");
ofstream genestxt("genes.txt");
//修复基因、贪心进化、估值
int fixup_greedy_value(int *gene) {
map<int, int> capacities; //工厂的容量
bool isopen[J] = {false}; //工厂的开关
int sum = 0; //估值
for (int j = 0; j < I; j ++)
if (isopen[ gene[j] ]) capacities[ gene[j] ] += d[j];
else {
isopen[ gene[j] ] = true;
capacities[ gene[j] ] = d[j];
}
//随机函数所用数组和计数器
bool isranI[I] = {false}, isranJ[J] = {false};
int countj = 0, counti;
while (countj < J) {
int j = rand()%J;
if (isranJ[j]) continue;
isranJ[j] = true;
countj ++;
if (isopen[j]) {
//修复
while (capacities[j] > s[j]) {
int r = rand()%I;
if (gene[r] == j) {
int r2 = rand()%J;
if (isopen[r2] && capacities[r2] + d[r] <= s[r2]) {
capacities[r2] += d[r];
capacities[j] -= d[r];
gene[r] = r2;
}
}
}
//贪心
counti = 0;
memset(isranI,false,I*sizeof(bool));
while (counti < I) {
int i = rand()%I;
if (isranI[i]) continue;
isranI[i] = true;
counti++;
if (capacities[j]+d[i] <= s[j] && c[j][i] < c[ gene[i] ][i]) {
capacities[ gene[i] ] -= d[i];
capacities[j] += d[i];
gene[i] = j;
}
}
}
}
memset(isopen,false,J*sizeof(bool));
for (int j = 0; j < I; j ++) isopen[gene[j]] = true;
//估值
for (int j = 0; j < I; j ++) sum += c[ gene[j] ][j];
for (int j = 0; j < J; j ++) if (isopen[j]) sum += f[j];
if (sum < min_v) {
min_v = sum;
memcpy(min_gene, gene, I*sizeof(int));
}
// cout << "cost for gene ";
// for (int j = 0; j < I; j ++) cout << gene[j] << " ";
// cout << "is " << sum << endl;
return sum;
}
void process(int file_index) {
ifstream data("Instances/p"+to_string(file_index));
if (data.is_open()) {
data >> J >> I;
//cout << J << " " << I << endl;
s = new int[J];
f = new int[J];
for (int i = 0; i < J; i ++) {
data >> s[i] >> f[i];
//cout << s[i] << " " << f[i] << endl;
}
d = new int[I];
float tmp;
for (int i = 0; i < I; i ++) {
data >> tmp;
d[i] = tmp;
//cout << d[i] << " ";
}
//cout << endl;
c = new int*[J];
for (int i = 0; i < J; i ++) c[i] = new int[I];
for (int i = 0; i < J; i ++) {
for (int j = 0; j < I; j ++) {
data >> tmp;
c[i][j] = tmp;
//cout << c[i][j] << " ";
}
//cout << endl;
}
data.close();
//cout << "Finish Reading Data" << endl;
clock_t start = clock();
min_v = 10000000; //保存最优解
min_gene = new int[I]; //保存最优基因
vector<int*> genes; //种群,保存所有个体的基因
srand((unsigned)time(NULL));
vector<int> value; //某基因对应的估值
long long total_val = 0; //所有估值的和
for (int i = 0; i < I/5; i ++) { //种群大小固定为I/5
int *gene = new int[I];
for (int j = 0; j < I; j ++) gene[j] = rand() % J;
genes.push_back(gene);
value.push_back(fixup_greedy_value(genes[i]));
total_val += value[i];
}
//cout << "Generated Initial Population" << endl;
int k_size = genes.size()/5; //锦标赛的规模
int count = 0; //当前Generation
int father, mother; //父、母的序号
bool selected[I]; //随机函数所用数组
while (++count) {
//cout << "Generation " << count++ << endl;
//选择
memset(selected,false,I*sizeof(bool));
father = -1;
for (int j = 0; j < k_size; j ++) {
int ran = rand()%genes.size();
if (!selected[ran]) {
selected[ran] = true;
if (father == -1) father = ran;
else if (value[ran] < value[father]) father = ran;
}
}
// cout << "father is " << father << ", gene is ";
// for (int j = 0; j < I; j ++) cout << genes[father][j] << " ";
// cout << "with value " << value[father] << endl;
mother = -1;
while (mother == -1) {
memset(selected,false,I*sizeof(bool));
for (int j = 0; j < k_size; j ++) {
int ran = rand()%genes.size();
if (!selected[ran]) {
selected[ran] = true;
//结束条件,若选到的基因相同并且代数大于10
if (memcmp(genes[father],genes[ran],I*sizeof(int)) == 0) {
if (count > 10) {
clock_t end = clock();
cout << "Result for p" << file_index << " is : "
<< "Cost time " << 1000.0*(end-start)/CLOCKS_PER_SEC
<< "ms, Total generation is " << count << " : " << endl
<< min_v << endl;
result << "| p" << file_index << " | " << min_v << " | "
<< 1000.0*(end-start)/CLOCKS_PER_SEC << " | "
<< count << " |" << endl;
genestxt << "* p" << file_index << endl << "```java" << endl
<< min_v << endl;
bool isopen[J] = {false};
for (int i = 0; i < I; i ++) isopen[ min_gene[i] ] = true;
for (int i = 0; i < J; i ++) cout << isopen[i] << " ";
cout << endl;
for (int i = 0; i < I; i ++) cout << min_gene[i] << " ";
cout << endl << endl;
for (int i = 0; i < J; i ++) genestxt << isopen[i] << " ";
genestxt << endl;
for (int i = 0; i < I; i ++) genestxt << min_gene[i] << " ";
genestxt << endl << "```" << endl << endl;
for (int i = 0; i < genes.size(); i ++) delete[] genes[i];
delete[] f;
delete[] d;
delete[] s;
for (int i = 0; i < J; i ++) delete[] c[i];
delete[] c;
delete[] min_gene;
return;
}
continue;
}
if (mother == -1) mother = ran;
else if (value[ran] < value[mother]) mother = ran;
}
}
}
// cout << "mother is " << mother << ", gene is ";
// for (int j = 0; j < I; j ++) cout << genes[mother][j] << " ";
// cout << "with value " << value[mother] << endl;
int *off_gene1 = new int[I], *off_gene2 = new int[I];
//交叉,单点交叉,长度为I/2
int index = rand()%(I/2);
for (int j = 0; j < index; j ++) {
off_gene1[j] = genes[father][j];
off_gene2[j] = genes[mother][j];
}
for (int j = index; j < index + I/2; j ++) {
off_gene1[j] = genes[mother][j];
off_gene2[j] = genes[father][j];
}
for (int j = index + I/2; j < I; j ++) {
off_gene1[j] = genes[father][j];
off_gene2[j] = genes[mother][j];
}
//变异,单点变异
if (rand() % genes.size() == 0) off_gene1[rand()%I] = rand()%J;
if (rand() % genes.size() == 1) off_gene2[rand()%I] = rand()%J;
//替换
delete[] genes[father];
delete[] genes[mother];
total_val -= value[father];
total_val -= value[mother];
genes[father] = off_gene1;
genes[mother] = off_gene2;
value[father] = fixup_greedy_value(off_gene1);
value[mother] = fixup_greedy_value(off_gene2);
total_val += value[father];
total_val += value[mother];
// 每代加入一个随机基因的个体
// int *gene = new int[I];
// for (int j = 0; j < I; j ++) gene[j] = rand() % J;
// genes.push_back(gene);
// long v = fixup_greedy_value(gene);
// value.push_back(v);
// total_val += v;
// 删除一个高于均值的个体
// while (true) {
// int r = rand()%genes.size();
// if (value[r] >= total_val/genes.size()) {
// delete[] genes[r];
// genes.erase(r+genes.begin());
// total_val -= value[r];
// value.erase(r+value.begin());
// break;
// }
// }
}
}
}
int main() {
if (!result) return 0;
for (int i = 1; i <= 71; i ++) process(i);
result.close();
genestxt.close();
return 0;
}
程序多处采用随机数,下为某次结果
数据 | 结果 | 耗时ms | 代数 |
---|---|---|---|
p1 | 9322 | 6 | 13 |
p2 | 8008 | 5 | 13 |
p3 | 10008 | 0 | 13 |
p4 | 12008 | 6 | 13 |
p5 | 9396 | 18 | 20 |
p6 | 8082 | 6 | 20 |
p7 | 10082 | 15 | 20 |
p8 | 12082 | 0 | 20 |
p9 | 9040 | 0 | 11 |
p10 | 7726 | 0 | 11 |
p11 | 9726 | 15 | 11 |
p12 | 11726 | 16 | 11 |
p13 | 10883 | 15 | 14 |
p14 | 8516 | 15 | 12 |
p15 | 11510 | 16 | 18 |
p16 | 14811 | 16 | 13 |
p17 | 10716 | 16 | 12 |
p18 | 8593 | 15 | 12 |
p19 | 11993 | 16 | 12 |
p20 | 14807 | 16 | 11 |
p21 | 10689 | 16 | 13 |
p22 | 8521 | 15 | 14 |
p23 | 11921 | 0 | 14 |
p24 | 15290 | 16 | 14 |
p25 | 18268 | 78 | 11 |
p26 | 15467 | 78 | 13 |
p27 | 20467 | 81 | 13 |
p28 | 25491 | 78 | 11 |
p29 | 18684 | 94 | 14 |
p30 | 15849 | 93 | 14 |
p31 | 21049 | 94 | 14 |
p32 | 26249 | 78 | 14 |
p33 | 18446 | 125 | 23 |
p34 | 15389 | 78 | 14 |
p35 | 20389 | 88 | 14 |
p36 | 25389 | 110 | 14 |
p37 | 17529 | 110 | 19 |
p38 | 15089 | 109 | 21 |
p39 | 19889 | 94 | 18 |
p40 | 24689 | 63 | 13 |
p41 | 7100 | 20 | 12 |
p42 | 9654 | 27 | 20 |
p43 | 11309 | 26 | 12 |
p44 | 7281 | 1 | 12 |
p45 | 8996 | 16 | 11 |
p46 | 11103 | 31 | 17 |
p47 | 6526 | 15 | 17 |
p48 | 8288 | 31 | 16 |
p49 | 10681 | 31 | 16 |
p50 | 9873 | 31 | 30 |
p51 | 10972 | 16 | 12 |
p52 | 11031 | 16 | 13 |
p53 | 12849 | 31 | 11 |
p54 | 9573 | 16 | 13 |
p55 | 10497 | 32 | 17 |
p56 | 23882 | 157 | 18 |
p57 | 32882 | 169 | 16 |
p58 | 53882 | 125 | 11 |
p59 | 39121 | 125 | 11 |
p60 | 23558 | 156 | 14 |
p61 | 31886 | 125 | 11 |
p62 | 52558 | 132 | 12 |
p63 | 37406 | 119 | 12 |
p64 | 23587 | 140 | 11 |
p65 | 32287 | 140 | 12 |
p66 | 52587 | 140 | 12 |
p67 | 36476 | 133 | 11 |
p68 | 23882 | 125 | 11 |
p69 | 32276 | 161 | 15 |
p70 | 52560 | 140 | 11 |
p71 | 38240 | 125 | 11 |
9322
1 1 1 1 1 1 1 1 1 1
0 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 4 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 7 0 4 3 4 0
8008
1 1 1 1 1 1 1 1 1 1
0 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 4 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 7 0 4 3 4 0
10008
1 1 1 1 1 1 1 1 1 1
0 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 4 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 7 0 4 3 4 0
12008
1 1 1 1 1 1 1 1 1 1
0 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 4 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 7 0 4 3 4 0
9396
1 1 1 1 1 1 1 1 1 1
8 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 7 0 0 2 1 8 1 5 7 0 4 0 4 3
8082
1 1 1 1 1 1 1 1 1 1
8 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 7 0 0 2 1 8 1 5 7 0 4 0 4 3
10082
1 1 1 1 1 1 1 1 1 1
8 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 7 0 0 2 1 8 1 5 7 0 4 0 4 3
12082
1 1 1 1 1 1 1 1 1 1
8 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 7 0 0 2 1 8 1 5 7 0 4 0 4 3
9040
1 1 1 1 1 1 1 1 1 1
8 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 7 0 4 0 4 0
7726
1 1 1 1 1 1 1 1 1 1
8 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 7 0 4 0 4 0
9726
1 1 1 1 1 1 1 1 1 1
8 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 7 0 4 0 4 0
11726
1 1 1 1 1 1 1 1 1 1
8 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 7 0 4 0 4 0
10883
1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1
16 1 10 10 1 15 17 13 14 17 15 4 1 6 13 3 15 10 4 9 14 15 15 19 6 17 16 17 1 17 13 7 13 16 3 10 11 19 19 13 6 0 5 0 8 5 14 10 19 9
8516
1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1
16 1 10 10 1 15 17 13 14 17 15 4 1 6 13 3 15 10 4 9 14 15 15 19 6 17 16 17 1 17 13 7 13 16 3 10 11 19 19 13 6 0 5 0 8 5 14 10 19 9
11510
1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1
16 12 10 10 1 12 17 13 14 17 15 4 1 6 13 3 15 10 4 9 12 15 15 19 6 17 16 17 1 17 13 15 13 16 3 10 11 19 19 13 6 0 5 0 11 5 14 10 19 9
14811
1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 1 0 1
16 12 10 10 1 12 17 13 12 17 15 4 1 6 13 3 15 10 4 9 12 15 15 19 6 17 16 17 1 17 13 7 2 16 3 10 11 19 19 13 6 0 0 0 11 13 12 10 19 9
10716
1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1
16 12 10 10 1 12 17 13 14 17 15 4 1 6 13 3 15 10 4 9 12 15 15 19 6 17 16 17 1 17 13 15 2 16 3 10 3 19 19 13 6 0 5 0 8 5 14 10 19 9
8593
1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1
16 12 10 10 1 12 17 13 14 17 15 4 1 6 13 3 15 10 4 9 12 15 15 19 6 17 16 17 1 17 13 15 2 16 3 10 3 19 19 13 6 0 5 0 8 5 14 10 19 9
11993
1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1
16 12 10 10 1 12 17 13 14 17 15 4 1 6 13 3 15 10 4 9 12 15 15 19 6 17 16 17 1 17 13 15 2 16 3 10 3 19 19 13 6 0 5 0 8 5 14 10 19 9
14807
1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1
16 12 10 10 1 12 17 13 12 17 15 4 1 6 13 3 15 10 4 9 12 15 15 19 6 17 16 17 1 17 13 7 2 16 3 10 3 19 19 13 6 0 5 0 3 5 12 10 19 9
10689
1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1
16 12 10 10 1 12 17 13 14 17 15 4 1 6 13 3 15 10 4 9 12 15 15 19 6 17 16 17 1 17 13 7 13 16 3 10 3 19 19 13 6 0 5 0 8 5 14 10 19 9
8521
1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1
16 12 10 10 1 12 17 13 14 17 15 4 1 6 13 3 15 10 4 9 12 15 15 19 6 17 16 17 1 17 13 7 13 16 3 10 3 19 19 13 6 0 5 0 8 5 14 10 19 9
11921
1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1
16 12 10 10 1 12 17 13 14 17 15 4 1 6 13 3 15 10 4 9 12 15 15 19 6 17 16 17 1 17 13 7 13 16 3 10 3 19 19 13 6 0 5 0 8 5 14 10 19 9
15290
1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 0 1
0 1 10 10 1 15 1 13 12 4 15 4 1 6 13 3 15 10 17 9 1 15 5 19 9 17 0 3 1 4 13 7 13 0 3 10 8 19 19 13 10 0 5 0 8 5 7 10 19 9
18268
1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 1
20 11 13 2 20 5 2 9 14 17 22 16 8 20 3 14 14 17 5 11 2 0 5 3 5 8 19 24 5 24 5 25 6 25 20 20 24 24 0 14 0 14 24 8 24 14 4 13 27 8 29 14 14 5 13 20 17 27 11 14 0 5 20 11 11 11 9 0 22 22 20 6 11 17 24 8 26 20 14 24 20 7 20 0 19 17 17 7 20 5 2 24 17 11 17 9 2 19 25 16 8 17 14 25 2 29 7 11 14 28 14 1 2 11 11 27 24 24 24 24 5 8 25 13 16 0 5 9 0 25 0 11 24 5 8 14 7 5 20 17 0 8 20 14 8 25 25 5 2 5
15467
1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1
20 11 13 2 20 5 2 24 14 17 22 16 8 20 3 14 14 17 5 11 2 0 5 3 5 8 19 24 5 24 5 25 6 25 20 20 24 15 0 14 0 14 15 8 24 14 7 13 27 8 29 14 14 5 20 20 17 27 0 14 0 5 20 11 11 11 24 0 9 24 20 6 11 17 24 8 26 20 14 24 20 7 20 0 19 17 17 7 20 5 2 24 17 11 17 9 2 19 25 16 8 7 17 25 2 29 7 11 14 28 14 1 2 11 11 27 24 24 24 24 5 8 25 13 18 0 5 24 0 29 0 11 24 5 8 14 7 5 20 17 0 8 20 14 8 25 25 5 2 5
20467
1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1
20 11 13 2 20 5 2 24 14 17 22 16 8 20 3 14 14 17 5 11 2 0 5 3 5 8 19 24 5 24 5 25 6 25 20 20 24 15 0 14 0 14 15 8 24 14 7 13 27 8 29 14 14 5 20 20 17 27 0 14 0 5 20 11 11 11 24 0 9 24 20 6 11 17 24 8 26 20 14 24 20 7 20 0 19 17 17 7 20 5 2 24 17 11 17 9 2 19 25 16 8 7 17 25 2 29 7 11 14 28 14 1 2 11 11 27 24 24 24 24 5 8 25 13 18 0 5 24 0 29 0 11 24 5 8 14 7 5 20 17 0 8 20 14 8 25 25 5 2 5
25491
1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1
20 11 20 2 20 5 2 9 14 17 9 16 8 20 3 14 14 0 5 11 2 0 5 3 5 8 19 24 5 24 5 25 20 25 20 20 24 15 23 14 0 14 15 8 24 14 4 13 27 8 29 14 14 5 13 20 17 27 0 14 0 5 20 11 11 11 24 0 5 24 20 20 11 0 24 8 26 20 14 24 20 7 13 17 19 17 17 4 20 5 2 24 17 11 17 24 14 2 25 18 8 17 17 25 2 29 17 11 14 28 14 1 2 11 11 25 24 24 24 24 5 8 25 13 18 0 5 24 0 29 0 11 24 5 8 14 7 5 20 17 0 8 20 14 8 25 25 5 2 5
18684
1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1
20 11 20 2 20 5 2 24 14 17 22 16 8 20 19 14 14 17 5 11 2 0 5 17 5 8 19 24 5 24 5 25 6 25 20 20 24 15 0 14 0 14 15 28 24 14 4 13 27 8 29 14 14 5 13 20 17 27 11 14 0 5 20 11 11 11 9 0 24 9 20 6 11 17 24 8 26 20 14 24 20 7 13 17 19 17 17 4 20 5 2 24 17 11 17 9 2 2 25 16 8 17 17 25 2 29 17 11 14 28 14 1 2 11 11 21 24 24 24 24 5 8 25 13 18 0 5 9 0 21 0 11 24 5 8 14 7 5 20 17 0 8 20 14 8 25 25 11 2 5
15849
1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1
20 11 20 2 20 5 2 24 14 17 22 16 8 20 3 14 14 17 5 11 2 0 5 3 5 8 19 24 5 24 5 25 6 25 20 20 24 15 0 14 0 14 15 8 24 14 7 13 27 8 29 14 14 5 13 20 17 27 0 14 0 5 20 11 11 11 9 0 22 9 20 6 11 17 24 8 26 20 14 24 20 7 13 17 17 17 17 7 20 5 2 24 17 11 17 5 2 19 21 18 8 17 17 25 2 29 17 11 14 28 14 1 2 11 11 27 24 24 24 24 5 8 25 13 16 0 5 9 0 29 0 11 24 5 8 14 7 5 20 17 0 8 20 14 8 25 25 11 2 5
21049
1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1
20 11 20 2 20 5 2 24 14 17 22 16 8 20 3 14 14 17 5 11 2 0 5 3 5 8 19 24 5 24 5 25 6 25 20 20 24 15 0 14 0 14 15 8 24 14 7 13 27 8 29 14 14 5 13 20 17 27 0 14 0 5 20 11 11 11 9 0 22 9 20 6 11 17 24 8 26 20 14 24 20 7 13 17 17 17 17 7 20 5 2 24 17 11 17 5 2 19 21 18 8 17 17 25 2 29 17 11 14 28 14 1 2 11 11 27 24 24 24 24 5 8 25 13 16 0 5 9 0 29 0 11 24 5 8 14 7 5 20 17 0 8 20 14 8 25 25 11 2 5
26249
1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1
20 11 20 2 20 5 2 24 14 17 22 16 8 20 3 14 14 17 5 11 2 0 5 3 5 8 19 24 5 24 5 25 6 25 20 20 24 15 0 14 0 14 15 8 24 14 7 13 27 8 29 14 14 5 13 20 17 27 0 14 0 5 20 11 11 11 9 0 22 9 20 6 11 17 24 8 26 20 14 24 20 7 13 17 17 17 17 7 20 5 2 24 17 11 17 5 2 19 21 18 8 17 17 25 2 29 17 11 14 28 14 1 2 11 11 27 24 24 24 24 5 8 25 13 16 0 5 9 0 29 0 11 24 5 8 14 7 5 20 17 0 8 20 14 8 25 25 11 2 5
18446
1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1
20 11 20 2 20 5 2 24 14 17 22 16 8 20 3 14 14 17 5 11 2 0 5 3 5 8 19 24 5 24 5 25 6 25 20 20 24 24 23 14 0 14 24 28 24 14 4 13 27 8 29 14 14 5 13 20 17 27 0 14 0 5 20 11 11 11 22 0 22 22 20 6 11 17 24 8 26 20 14 24 20 7 20 17 19 17 17 7 20 5 2 24 17 11 17 9 2 19 25 18 8 17 17 25 2 29 17 11 14 28 14 14 2 11 11 25 24 24 24 24 5 8 25 13 18 0 5 9 0 29 0 11 24 5 8 14 7 5 20 17 0 8 20 14 8 25 25 5 2 5
15389
1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1
20 11 20 2 20 5 2 24 14 17 22 16 8 20 3 14 14 17 5 11 2 0 5 3 5 8 19 24 5 24 5 25 6 25 20 20 24 15 0 14 0 14 15 8 24 14 4 13 27 8 29 14 14 5 20 20 17 27 0 14 0 5 20 11 11 11 9 0 22 22 20 6 11 17 24 8 26 20 14 24 20 7 20 17 19 17 17 4 20 5 2 24 17 11 17 9 2 3 25 16 8 17 17 25 2 29 17 11 14 28 14 1 2 11 11 25 24 24 24 24 5 8 25 13 16 0 5 24 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
20389
1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1
20 11 20 2 20 5 2 24 14 17 22 16 8 20 3 14 14 17 5 11 2 0 5 3 5 8 19 24 5 24 5 25 6 25 20 20 24 15 0 14 0 14 15 8 24 14 4 13 27 8 29 14 14 5 20 20 17 27 0 14 0 5 20 11 11 11 9 0 22 22 20 6 11 17 24 8 26 20 14 24 20 7 20 17 19 17 17 4 20 5 2 24 17 11 17 9 2 3 25 16 8 17 17 25 2 29 17 11 14 28 14 1 2 11 11 25 24 24 24 24 5 8 25 13 16 0 5 24 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
25389
1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1
20 11 20 2 20 5 2 24 14 17 22 16 8 20 3 14 14 17 5 11 2 0 5 3 5 8 19 24 5 24 5 25 6 25 20 20 24 15 0 14 0 14 15 8 24 14 4 13 27 8 29 14 14 5 20 20 17 27 0 14 0 5 20 11 11 11 9 0 22 22 20 6 11 17 24 8 26 20 14 24 20 7 20 17 19 17 17 4 20 5 2 24 17 11 17 9 2 3 25 16 8 17 17 25 2 29 17 11 14 28 14 1 2 11 11 25 24 24 24 24 5 8 25 13 16 0 5 24 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
17529
1 0 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1
20 11 20 2 20 5 2 24 14 17 22 16 8 20 3 14 14 17 5 11 2 0 5 3 5 8 19 24 5 24 5 25 6 25 20 20 24 15 0 14 0 14 15 28 24 14 4 13 27 8 29 14 14 5 13 20 17 27 11 14 0 5 20 11 11 11 22 0 22 22 20 6 11 17 24 8 26 20 14 24 20 7 13 17 19 17 17 4 20 5 2 24 17 11 17 5 2 19 21 16 8 17 17 25 2 29 17 11 14 28 14 14 2 11 11 21 24 24 24 24 5 8 25 13 16 0 5 24 0 21 0 11 24 5 8 14 7 5 20 17 0 8 20 14 8 25 25 5 2 5
15089
1 0 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1
20 11 13 2 20 5 2 9 14 17 22 16 8 20 3 14 14 17 5 11 2 0 5 3 5 8 19 24 5 24 5 25 6 25 20 20 24 15 0 14 0 14 15 28 24 14 0 13 27 8 29 14 14 5 20 20 17 27 0 14 0 5 20 11 11 11 9 0 24 9 20 6 11 17 24 8 26 20 14 24 20 7 20 17 19 17 17 7 20 5 2 24 17 11 17 9 2 3 25 16 8 17 17 25 2 29 17 11 14 28 14 14 2 11 11 21 24 24 24 24 5 8 25 13 16 0 5 9 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
19889
1 0 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1
20 11 13 2 20 5 2 9 14 17 22 16 8 20 3 14 14 17 5 11 2 0 5 3 5 8 19 24 5 24 5 25 6 25 20 20 24 15 0 14 0 14 15 28 24 14 0 13 27 8 29 14 14 5 20 20 17 27 0 14 0 5 20 11 11 11 9 0 24 9 20 6 11 17 24 8 26 20 14 24 20 7 20 17 19 17 17 7 20 5 2 24 17 11 17 9 2 3 25 16 8 17 17 25 2 29 17 11 14 28 14 14 2 11 11 21 24 24 24 24 5 8 25 13 16 0 5 9 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
24689
1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1
20 11 20 2 20 5 2 24 14 17 22 16 8 20 3 14 14 17 5 11 2 0 5 3 5 8 19 24 5 24 5 25 6 25 20 20 24 15 0 14 0 14 15 28 24 14 0 13 27 8 29 14 14 5 20 20 17 27 11 14 0 5 20 11 11 11 22 0 24 22 20 6 11 17 24 8 26 20 14 24 20 7 13 17 19 17 17 7 20 5 2 24 17 11 17 5 2 3 25 16 8 17 17 25 2 29 17 11 14 28 14 1 2 11 11 21 24 24 24 24 5 8 25 13 16 0 5 24 0 29 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
7100
1 1 1 1 1 1 1 1 1 1
5 6 4 1 7 9 3 7 8 8 4 6 2 6 2 7 7 3 0 6 6 1 4 1 6 5 5 4 8 5 8 0 0 0 3 9 2 6 6 9 2 7 3 3 3 5 0 5 6 4 1 1 6 6 9 7 2 8 8 8 0 0 1 5 0 6 6 6 4 4 0 4 4 0 7 7 2 2 9 5 7 2 2 7 9 7 9 9 9 2
9654
1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1
12 18 3 9 19 18 16 3 17 17 9 18 6 10 6 0 0 2 5 10 5 9 9 12 12 12 4 16 17 4 7 19 6 18 14 19 6 0 0 7 1 12 2 16 9 5 18 19 0 15 16 17 7 3 2 5 2 5 5 5 12 12 4 3 3 4 0 15 19 6 10 18 19 19 19 18 18 19 19 19
11309
1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1
18 21 15 24 25 22 26 21 27 29 24 23 13 9 18 11 8 15 12 7 25 26 22 20 17 13 29 6 29 4 5 2 2 13 0 22 7 12 21 11 4 12 27 23 5 25 26 17 17 11 21 0 9 18 6 6 21 20 2 29 5 27 1 29 27 29 1 27 1 29
7281
1 1 1 1 1 1 1 1 1 1
4 4 4 4 4 4 4 4 0 6 0 0 0 0 0 0 1 8 1 7 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 4 5 1 1 2 8 7 5 9 9 7 6 5 5 8 8 7 7 9 5 5 5 9 3 0 6 6 8 1 0 4 7 9 7 7 8 6 6 5 8 7 9 7 9 9 9 6 5 7 5
8996
1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1
0 0 0 0 0 0 0 1 1 1 1 6 6 6 6 2 3 3 2 3 2 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 0 0 2 3 11 12 18 16 19 7 15 16 17 17 11 16 18 19 5 15 10 9 12 9 15 17 18 7 11 12 7 10 18 12 18 17 17 17 17 16 10 7
11103
1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1
10 0 10 10 10 0 10 15 1 1 1 1 1 22 1 2 2 3 2 3 2 4 4 5 6 6 5 7 7 8 7 8 9 9 10 2 3 24 24 22 29 12 21 22 24 26 18 27 16 18 29 27 27 22 25 26 16 18 18 24 19 15 29 18 26 27 26 27 15 12
6526
1 1 1 1 1 1 1 1 1 1
0 2 0 0 1 0 0 0 0 2 1 0 1 1 2 1 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 7 7 6 7 6 2 7 7 7 7 7 7 8 8 6 8 8 8 8 8 9 0 9 9 9 0 9 9
8288
1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 2 3 2 2 3 3 4 4 4 5 5 5 5 5 5 6 6 6 6 6 7 7 8 8 8 9 8 9 9 9 9 9 9 10 10 10 10 10 10 8 8 12 9 12 12 12 14 15 12 14 12 0 15 14 14 15 16 16 17 17 17 17 17 17 18 18 19 19 19 19 19
10681
1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1
0 1 1 2 1 2 2 2 3 5 3 5 5 6 6 6 7 7 7 7 7 7 9 10 8 11 10 12 12 12 13 13 13 15 15 15 16 16 17 16 17 16 18 18 18 18 18 18 21 18 21 18 0 22 22 22 22 24 24 26 25 26 25 26 27 27 27 29 29 29
9873
1 1 1 1 1 1 1 1 1 1
3 6 3 6 2 9 5 5 3 7 7 4 1 9 0 9 9 5 5 3 6 6 0 4 0 0 8 4 4 7 7 7 3 3 3 5 9 1 0 6 0 9 9 2 5 5 5 5 5 3 3 5 6 4 0 0 9 6 2 2 9 7 7 7 3 3 0 4 8 7 3 0 6 0 0 4 4 3 3 4 3 5 2 9 2 2 6 7 2 7 9 9 1 2 1 9 9 1 1 1
10972
1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1
15 6 19 10 12 13 5 16 15 1 5 3 6 13 6 13 12 16 2 15 0 0 10 14 14 14 7 3 19 7 1 1 17 19 15 5 13 13 10 0 0 13 13 13 16 5 5 5 5 17 15 2 11 14 14 10 6 6 18 12 13 5 1 5 15 15 10 3 7 7 15 0 0 0 10 19 19 19 19 3 19 5 16 12 13 13 6 2 12 1 13 13 18 18 18 13 13 13 13 13
11031
1 1 1 1 1 1 1 1 1 1
7 7 7 7 7 7 7 7 3 4 4 4 3 4 4 4 4 5 3 8 8 8 3 8 3 9 5 5 5 9 5 5 9 9 6 6 6 6 6 6 6 6 6 6 7 7 4 8 8 5 5 3 4 6 2 5 3 3 3 4 6 9 5 5 0 3 5 6 4 7 6 6 4 3 3 9 3 4 7 1 6 3 8 1 5 3 3 7 5 3 5 5 9 1 5 1 3 4 3 7
12849
0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1
5 5 5 5 5 5 5 5 19 19 19 7 7 7 7 7 7 12 12 13 12 13 13 12 3 15 9 9 9 15 15 9 15 9 18 18 18 18 18 18 18 18 18 18 5 5 7 13 13 9 15 4 7 18 5 15 3 3 1 6 18 2 15 13 3 13 9 18 10 5 17 18 6 3 3 15 3 6 6 8 14 19 12 15 15 3 1 6 15 4 2 8 17 17 15 17 1 6 1 16
9573
1 0 1 1 1 1 1 1 1 1
9 7 7 7 7 7 7 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 6 6 8 6 6 8 8 8 8 8 8 8 3 6 6 6 6 6 6 6 6 6 5 5 6 5 5 5 6 6 0 0 6 0 5 7 0 0 0 0 0 4 0 0 4 4 4 4 4 4 4 4 9 4 9 9 9 4 4 9 9
10497
0 0 1 0 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1
17 18 16 18 16 4 4 4 4 4 2 2 2 2 2 2 2 2 2 12 12 12 12 12 6 12 12 6 6 6 6 14 14 6 6 6 6 6 6 7 19 19 19 7 7 19 19 7 19 7 7 14 7 7 7 7 7 7 7 7 11 11 9 11 11 11 11 7 11 13 9 11 9 11 17 13 9 13 9 9 13 15 15 15 15 15 15 15 15 15 15 18 18 18 18 17 18 18 18 18
23882
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 14 24 16 24 16 8 6 11 9 18 7 29 0 7 8 13 11 5 14 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 13 6 5 27 7 28 6 25 25 2 3 11 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 23 9 3 3 28 10 12 22 11 11 25 5 24 15 27 25 24 17 23 0 8 11 2 15 3 13 13 27 10 24 5 27 5 4 3 21 1 20 19 14 26 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
32882
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 14 24 16 24 16 8 6 11 9 18 7 29 0 7 8 13 11 5 14 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 13 6 5 27 7 28 6 25 25 2 3 11 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 23 9 3 3 28 10 12 22 11 11 25 5 24 15 27 25 24 17 23 0 8 11 2 15 3 13 13 27 10 24 5 27 5 4 3 21 1 20 19 14 26 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
53882
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 14 24 16 24 16 8 6 11 9 18 7 29 0 7 8 13 11 5 14 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 13 6 5 27 7 28 6 25 25 2 3 11 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 23 9 3 3 28 10 12 22 11 11 25 5 24 15 27 25 24 17 23 0 8 11 2 15 3 13 13 27 10 24 5 27 5 4 3 21 1 20 19 14 26 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
39121
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 14 24 16 24 16 8 6 11 9 18 7 29 0 7 8 13 11 5 14 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 13 6 5 27 7 28 6 25 25 2 3 11 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 23 9 3 3 28 10 12 22 11 11 25 5 24 15 27 25 24 17 23 0 8 11 2 15 3 13 13 27 10 24 5 27 5 4 3 21 1 20 19 14 26 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
23558
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 14 24 16 24 16 8 6 11 9 18 25 29 0 7 8 13 11 5 14 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 13 6 5 27 7 28 6 25 25 2 3 11 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 14 8 26 11 28 19 26 16 2 11 26 0 28 24 25 20 23 9 3 3 28 10 12 22 11 11 25 5 24 15 27 25 24 0 23 0 8 11 2 15 3 13 13 27 10 24 5 27 5 4 3 21 1 20 19 14 26 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
31886
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 14 24 16 24 16 8 6 11 9 18 7 29 0 7 8 13 11 5 14 28 12 18 12 19 9 23 23 20 23 8 16 10 0 9 7 29 13 6 5 27 7 28 6 7 11 2 3 11 6 0 28 28 15 12 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 14 8 26 11 28 19 26 16 2 11 26 0 28 24 11 20 23 9 3 3 28 10 12 22 11 11 11 5 24 15 27 7 24 0 23 0 8 11 2 15 3 13 13 27 10 24 5 27 5 4 3 21 1 20 19 14 26 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
52558
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 14 24 16 24 16 8 6 11 9 18 7 29 0 7 8 13 11 5 14 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 13 6 5 27 7 28 6 25 25 2 3 11 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 14 8 26 11 28 19 26 16 2 11 26 0 28 24 25 20 23 9 3 3 28 10 12 22 11 11 25 5 24 15 27 25 24 0 23 0 8 11 2 15 3 13 13 27 10 24 5 27 5 4 3 21 1 20 19 14 26 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
37406
1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 23 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 20 24 16 24 16 8 6 11 9 18 25 29 0 7 8 13 11 23 17 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 13 6 2 27 7 28 6 25 25 2 3 11 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 23 9 3 3 28 10 12 22 11 11 25 2 24 15 27 25 24 17 23 0 8 11 2 15 3 13 13 27 10 24 23 27 23 4 3 21 1 20 19 10 26 2 0 10 29 10 2 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
23587
1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 20 24 16 24 16 8 6 11 9 18 25 29 0 7 8 13 11 5 17 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 13 6 5 27 7 28 6 25 25 2 3 11 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 23 9 3 3 28 10 12 22 11 11 25 5 24 15 27 25 24 17 23 0 8 11 2 15 3 13 13 27 10 24 5 27 5 4 3 21 1 20 19 10 26 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
32287
1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 20 24 16 24 16 8 6 11 9 18 25 29 0 7 8 13 11 5 17 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 13 6 5 27 7 28 6 25 25 2 3 11 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 23 9 3 3 28 10 12 22 11 11 25 5 24 15 27 25 24 17 23 0 8 11 2 15 3 13 13 27 10 24 5 27 5 4 3 21 1 20 19 10 26 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
52587
1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 20 24 16 24 16 8 6 11 9 18 25 29 0 7 8 13 11 5 17 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 13 6 5 27 7 28 6 25 25 2 3 11 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 23 9 3 3 28 10 12 22 11 11 25 5 24 15 27 25 24 17 23 0 8 11 2 15 3 13 13 27 10 24 5 27 5 4 3 21 1 20 19 10 26 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
36476
1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1
18 19 21 22 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 20 24 15 18 9 6 4 9 19 13 21 19 14 24 16 24 16 20 6 18 9 18 25 29 0 7 20 13 12 5 14 28 25 7 12 19 9 23 23 20 23 20 16 10 0 9 25 29 13 19 5 27 7 28 6 25 25 2 3 27 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 20 28 7 17 20 9 25 17 19 9 16 2 12 19 17 28 24 25 20 23 9 3 3 28 10 12 22 28 25 25 5 24 15 27 25 24 17 23 0 20 28 2 15 3 13 13 27 10 24 5 27 5 4 3 21 1 20 19 14 4 2 0 10 29 10 5 21 2 19 12 9 28 23 0 21 2 21 6 4 7 12 7 15 10 19
23882
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 14 24 16 24 16 8 6 11 9 18 25 29 0 7 8 13 11 5 14 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 13 6 5 27 7 28 6 25 25 2 3 11 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 23 9 3 3 28 10 12 22 11 11 25 5 24 15 27 25 24 17 23 0 8 11 2 15 3 13 13 27 10 24 5 27 5 4 3 21 1 20 19 14 26 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
32276
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 14 24 16 24 16 8 6 11 9 18 25 29 0 7 8 13 11 5 14 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 13 6 5 27 7 28 6 25 25 2 3 11 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 14 8 26 11 28 19 26 16 2 11 26 0 11 24 25 20 23 9 3 3 28 10 12 22 11 11 25 5 24 15 27 25 24 0 23 0 8 11 2 15 3 13 13 27 10 24 5 27 5 4 3 21 1 20 19 14 26 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
52560
1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 13 28 18 3 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 14 24 16 24 16 8 6 11 9 18 7 29 0 7 8 13 11 5 14 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 13 6 5 27 7 28 6 25 25 2 3 11 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 23 9 3 3 28 10 12 22 11 11 25 5 24 15 27 25 24 17 23 0 8 11 2 15 3 13 13 27 10 24 5 27 5 4 3 21 5 20 19 14 26 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
38240
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1
18 19 21 27 2 12 15 27 22 28 4 28 13 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 13 21 19 14 24 16 24 16 8 6 11 9 18 25 29 0 7 8 13 11 5 14 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 13 6 5 27 7 28 6 25 25 2 3 11 6 0 28 28 15 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 17 8 9 11 17 19 9 16 2 11 19 17 28 24 25 20 23 9 3 3 28 10 12 22 11 11 25 5 24 15 27 25 24 17 23 0 8 11 2 15 3 13 13 27 10 24 5 27 5 4 3 21 1 20 19 14 4 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19
其中GA中比较主要的部分是控制终止条件。
其次,GA中种群大小、锦标赛规模均未经过测试。