文章目录
Problem Description
Suppose there are n facilities and m customers. We wish to choose:
(1) which of the n facilities to open
(2) the assignment of customers to facilities
(3) The objective is to minimize the sum of the opening cost and the assignment cost.
(4) The total demand assigned to a facility must not exceed its capacity.
遗传算法(genetic algorithm)
遗传算法是受遗传学中自然选择和遗传机制启发发展起来的一种搜索算法。基本思想是使用模拟生物和人类进化的方法求解复杂的优化问题,因而也称作为模拟进化优化算法。模拟进化优化算法在计算原理上是自适应的,结构上是并行的,而且模仿了人的智能处理特征,因而称为人工智能的一个重要研究领域。
基本定义
个体(individual): 个体是一个数据结构,用来描述基本的遗传结构。例如,用0、1组成的串可以表示个体。这样的串叫染色体,其中每个0或1叫等位基因。这样的一个串于某个个体相关联,则称为该个体的基因型。
适应性(fitness): 每个个体有一对应的适应值。再优化问题中,适应值来自于一个估计函数。
群体(population): 由个体组成的集合。
遗传操作: 作用于群体而产生新的群体。标准的代遗传操作一般包括选择(selection)、复制(reproduction)、交叉(crossover或重组recombination)及变异(mutation)3中基本形式。
基本流程
以此题目为例,流程图如下:
初始化群体(第一代)
每个个体中每个基因随机生成。(customer随机选择一个facility)
void firstGeneration() {
int j;
for(int k=0; k<individuals; k++) {
vector<customer>customersTemp(customers);
vector<facility>facilitiesTemp(facilities);
// 生成一个个体
for(int i=0; i<m; i++) {
j = rand() % n;
while(facilitiesTemp[j].getRemain() - customersTemp[i].getDemand() < 0) {
j = (j+1) % n;
}
facilitiesTemp[j].setRemain(facilitiesTemp[j].getRemain() - customersTemp[i].getDemand());
customersTemp[i].setFacilityID(j);
}
customersGeneration.push_back(customersTemp);
facilitiesGeneration.push_back(facilitiesTemp);
}
}
适应值函数(evaluate)
在此问题中,适应值即为 the sum of the opening cost and the assignment cost ,所以在适应值函数中,我们根据facility的开启状态(我使用facility剩余容量与初始容量比较的结果)以及分配(assignment)分配情况来计算代价值(cost)。其中cost越小,适应值越大(对于此题目我们可以取倒数)。
double evaluate(vector<customer>&customers, vector<facility>&facilities) {
// 计算facility opencost
double cost = 0;
for(int j=0; j<n; j++) {
if(facilities[j].getRemain() < facilities[j].getCapacity()) {
cost += facilities[j].getOpencost();
}
}
// 计算assignment
for(int i=0; i<m; i++) {
cost += assignment[customers[i].getFacilityID()][i];
}
return cost;
}
选择函数(selection)
选择即从当前群体中选出个体以生成交配池(mating pool)的过程。所选出的这些个体具有良好的特征,一边选出优良的后代。
-
基于适应值比例的选择
- 繁殖池选择
- 轮盘赌选择
- Boltzmann选择
其中,轮盘赌选择使用较多,主要介绍一下轮盘赌选择:该策略是先将个体的相对适应值 f i ∑ f i \frac{f_i}{\sum{f_i}} ∑fifi记为 p i p_i pi,其中 f i f_i fi是群体中的第
i
成员的适应值;然后根据选择概率{ p i p_i pi,i=1,2,3……,N},按下图所示将圆盘分为N份,其中第i
扇形的中心较为 2 π p i 2\pi p_i 2πpi。
在进行选择是,可以假象转动如上图所示的圆盘,若某参照点落入到第
i
个扇形内,则选择个体i
。这种选择策略可以如下实现:现生成一个[0,1]内的随机数,若 p 1 + p 2 + … … + p i − 1 < r ≤ p 1 + p 2 + … … + p i p_1+p_2+……+p_{i-1}<r≤p_1+p_2+……+p_i p1+p2+……+pi−1<r≤p1+p2+……+pi ,则选择个体i
。显然,小扇区的面积越大,参照点落入其中的概率也越大,即个体的适应值越大,它被选择到的机会也就越多,其基因被遗传到下一代的可能性也越大。 -
基于排名的选择(此部分内容可以自行百度)
- 线性排名选择
- 非线性排名选择
-
基于局部竞争机制的选择
- 锦标赛选择(tournament selection)。选择时,先随机地在群体中选择
k
个个体(放回或者不放回)进行比较,适应值最好的个体被选择作为生成下一代的父体,反复执行该过程,知道下一代的个体数量达到预定的群体规模。参数k
称为竞赛规模,根据大量的实验结果,一般取k=2
。 - ( μ , λ ) (\mu, \lambda) (μ,λ) 和 μ + λ \mu+\lambda μ+λ 选择。 ( μ , λ ) (\mu, \lambda) (μ,λ) 是先从规模为 μ \mu μ种群中随机选取个体通过交叉和变异生成 λ ( ≥ μ ) \lambda(≥\mu) λ(≥μ)个后代,然后在从这些后代中选取 μ \mu μ个最优的后代作为新一带种群。 μ + λ \mu+\lambda μ+λ选择则是从这些后代与其父体共 μ + λ \mu+\lambda μ+λ个后代中选取 μ \mu μ个最后的后代。
- 锦标赛选择(tournament selection)。选择时,先随机地在群体中选择
在此问题GA算法中,我使用锦标赛选择机制进行选择,主要实现如下:
// Tournament Selection
void selection(vector<vector<customer>>&customersGeneration2, vector<vector<facility>>&facilitiesGeneration2) {
customersGeneration2.clear();
facilitiesGeneration2.clear();
double minCost = INT_MAX * 1.0;
for(int j=0; j<individuals; j++) {
int randnum[selections] = {0};
minCost = INT_MAX * 1.0;
int minIndividual;
int individualCost;
for(int i=0;i<selections;i++) {
randnum[i] = rand() % individuals;
individualCost = evaluate(customersGeneration[randnum[i]], facilitiesGeneration[randnum[i]]);
if(minCost > individualCost) {
minCost = individualCost;
minIndividual = randnum[i];
}
}
customersGeneration2.push_back(customersGeneration[minIndividual]);
facilitiesGeneration2.push_back(facilitiesGeneration[minIndividual]);
}
}
交叉操作(crossover)
交叉操作是将两个个体的遗传物质交换产生新的个体,它可以把两个个体的优良“格式”传递到下一代的某个个体中,使其具有优于前驱地性能。如果交叉后得到地个体性能不加,则可以在后面的replace操作中将其淘汰。交叉是遗传算法中获取新优个体的最重要的手段,交叉的具体步骤如下:
(1)从交配池中随机取处要交配的一对个体
(2)根据位串长度L,对要交配地一对个体,随机选取[1,L-1]中一个或多个的整数k作为交叉点。
(3)根据交叉概率 p c ( 0 < p c ≤ 1 ) p_c(0<p_c≤1) pc(0<pc≤1)实施交叉操作,配对的个体再交差点处,相互交换各自的部分内容,从而形成一对新的个体。
- 单点交叉(one-point crossover)。对于从交配池中随机选择的两个串 s 1 = a 1 a 2 … … a L s_1=a_1a_2……a_L s1=a1a2……aL, s 2 = b 1 b 2 … … b L s_2=b_1b_2……b_L s2=b1b2……bL,随机选择一个交叉位 x ∈ [ 1 , 2 … … L − 1 ] x∈[1,2……L-1] x∈[1,2……L−1],然后对两个位串中该位置预测部份的染色体位串进行交换,产生的子位串个体为: s 1 = a 1 a 2 … a x b x + 1 … b L s_1=a_1a_2…a_xb_{x+1}…b_L s1=a1a2…axbx+1…bL、 s 1 = b 1 b 2 … b x a x + 1 … a L s_1=b_1b_2…b_xa_{x+1}…a_L s1=b1b2…bxax+1…aL。单点交叉信息量比较小,交叉点位置选择会带来较大偏差,单点交叉不利于长距模式的保留和冲去,而且位于末尾的基因总是被交换,而这些基因可能是很重要的(这就是尾点效应,end-point effect)。
- 多点交叉(multipoint crossover)。对于选定的两个个体位串,随机选择多个交叉点,构成交叉点集合: x 1 , x 2 , … … , x k ∈ [ 1 , 2 , … … , L − 1 ] x_1,x_2,……,x_k∈[1,2,……,L-1] x1,x2,……,xk∈[1,2,……,L−1]。然后对每个交叉点,执行单点交叉运算,最后得到两个子位串个体。
- 均匀交叉(uniform crossover)。将位串上的每一位基因按照相同的概率随机进行均匀交叉。
此题目中,交叉算法如下,根据交叉概率,选择两个个体,将两者[l,r-1]区间内的基因进行交换:
void crossover(vector<vector<customer>>&customersGeneration2, vector<vector<facility>>&facilitiesGeneration2) {
int individual1, individual2, l, r, fid1, fid2;
for(int i=0; i<individuals * (individuals-1); i++) {
if(rand() % (N + 1) * 1.0 /(N + 1) < crossovers) {
individual1 = rand() % individuals;
individual2 = rand() % individuals;
l = rand() % m;
r = rand() % m;
for(int j=l; j<r; j++) {
fid1 = customersGeneration2[individual1][j].getFacilityID();
fid2 = customersGeneration2[individual2][j].getFacilityID();
if(facilitiesGeneration2[individual1][fid2].getRemain() - customersGeneration2[individual1][j].getDemand() > 0 &&
facilitiesGeneration2[individual2][fid1].getRemain() - customersGeneration2[individual2][j].getDemand() > 0) {
facilitiesGeneration2[individual1][fid1].setRemain(facilitiesGeneration2[individual1][fid1].getRemain() + customersGeneration2[individual1][j].getDemand());
facilitiesGeneration2[individual1][fid2].setRemain(facilitiesGeneration2[individual1][fid2].getRemain() - customersGeneration2[individual1][j].getDemand());
facilitiesGeneration2[individual2][fid1].setRemain(facilitiesGeneration2[individual2][fid1].getRemain() - customersGeneration2[individual2][j].getDemand());
facilitiesGeneration2[individual2][fid2].setRemain(facilitiesGeneration2[individual2][fid2].getRemain() + customersGeneration2[individual2][j].getDemand());
customersGeneration2[individual1][j].setFacilityID(fid2);
customersGeneration2[individual2][j].setFacilityID(fid1);
}
}
}
}
}
变异操作(mutation)
变异是在个体中改变遗传物质,可以使运算过程中丢弃的个体的某些重要特性得以恢复。变异与交叉、选择结合在一起,保证了遗传算法的有下行,是遗传算法具有局部的随机搜索能力;同时使得遗传算法保持种群的多样性,以防止非成熟收敛。
此题目中,变异算法将某个个体中的某个基因进行变异(既让此customer随机选择另外一个可行的facility):
void mutation(vector<vector<customer>>&customersGeneration2, vector<vector<facility>>&facilitiesGeneration2) {
int cid, fid, preFid;
for(int i=1; i<individuals; i++) {
if(rand()%(N+1)*1.0/(N+1) < mutations) {
cid = rand() % m;
fid = rand() % n;
preFid = customersGeneration2[i][cid].getFacilityID();
while(facilitiesGeneration2[i][fid].getRemain() - customersGeneration2[i][cid].getDemand() < 0) {
fid = (fid+1)%n;
}
facilitiesGeneration2[i][fid].setRemain(facilitiesGeneration2[i][fid].getRemain() - customersGeneration2[i][cid].getDemand());
facilitiesGeneration2[i][preFid].setRemain(facilitiesGeneration2[i][preFid].getRemain() + customersGeneration2[i][cid].getDemand());
customersGeneration2[i][cid].setFacilityID(fid);
}
}
}
替换操作(replace)
将生成的子代与父代一起进行选择,挑选出种群大小数量的个体作为新的一代,此步骤中用到适应值:
void replace(vector<vector<customer>>&customersGeneration2, vector<vector<facility>>&facilitiesGeneration2) {
customersGeneration2.insert(customersGeneration2.end(), customersGeneration.begin(), customersGeneration.end());
facilitiesGeneration2.insert(facilitiesGeneration2.end(), facilitiesGeneration.begin(), facilitiesGeneration.end());
customersGeneration.clear();
facilitiesGeneration.clear();
int count;
for(int i=0; i<individuals*2; i++) {
count = 0;
for(int j=0; j<individuals*2; j++) {
if(evaluate(customersGeneration2[i], facilitiesGeneration2[i]) <= evaluate(customersGeneration2[j], facilitiesGeneration2[j])) {
count++;
if(count >= individuals) {
customersGeneration.push_back(customersGeneration2[i]);
facilitiesGeneration.push_back(facilitiesGeneration2[i]);
break;
}
}
}
}
}
控制参数的选取
-
位串长度:m(customer的数量)
-
繁衍代数:若代数过小,使得繁衍代数过少,获取不到优异的个体,还未收敛就已经提前结束;若代数过大,则可能在收敛后进行多余的计算。此题目中,我先则繁衍代数为1000。
-
种群规模:若规模过小,则可能获取不到优异的个体,造成成熟前收敛;若规模过大,增加了适应性评价的计算量,从而使收敛速度降低。一般选择20~200,此题目中,我选择50。
-
交叉概率 p c p_c pc:交叉概率控制交叉算子的应用频率,在每一代新的群体中,需要对 p c ∗ n p_c*n pc∗n个个体的染色体结构进行交叉操作。交叉概率越高,群体中新结构引入越快,以获得的优良基因结构的丢失速度也相应升高。而交叉概率太低则可能导致搜索阻滞。一般取0.6~1.0,此题目中,我选择0.98。
-
变异概率 p m p_m pm:变异概率是保持多样性的有效手段,交叉结束后,交配池中的全部个体位串上的每位基因按变异概率 p m p_m pm随机改变,因此每代中大约发生 p m ∗ n ∗ L p_m*n*L pm∗n∗L次变异。变异概率过小,可能是某些基因过早丢失的信息无法恢复,变异概率过高,则遗传搜索变成了随即搜索,一般取0.005~0.01,此题目中,我选择 p m ∗ n = 0.2 p_m*n = 0.2 pm∗n=0.2,即 p m = 0.004 p_m=0.004 pm=0.004。
算法执行结果
Instance | Time | Cost | Facility Open Status | Customer Status |
---|---|---|---|---|
1 | 7876ms | 9122 | 1 1 1 1 1 1 1 0 1 1 | 0 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 2 0 9 4 3 4 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 3 4 1 8 1 5 4 0 4 0 4 0 |
2 | 7750ms | 8038 | 1 1 1 1 1 1 1 0 1 1 | 8 2 1 6 3 8 2 4 4 1 9 8 3 2 0 3 4 0 9 4 3 4 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 2 1 8 1 5 4 0 4 0 4 0 |
3 | 8082ms | 9871 | 1 1 1 1 1 1 0 1 1 1 | 8 2 1 5 3 8 2 4 4 1 9 0 3 2 8 3 4 0 9 7 3 4 9 4 2 5 1 5 0 5 2 5 0 3 9 4 4 3 0 4 1 8 1 5 7 0 4 0 4 0 |
4 | 8181ms | 11922 | 1 1 1 1 1 0 1 1 1 1 | 8 2 1 6 3 8 2 4 4 1 9 0 3 2 8 3 4 0 9 7 3 4 6 4 2 6 0 1 0 1 2 6 0 2 9 4 4 3 0 4 3 8 1 6 7 0 4 0 4 3 |
5 | 7886ms | 9406 | 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 3 0 4 1 8 1 5 7 0 2 0 4 1 |
6 | 7901ms | 8085 | 1 1 1 1 1 1 1 1 1 1 | 8 8 1 6 3 8 2 4 2 1 9 8 3 4 8 3 2 0 9 7 3 7 6 4 2 5 1 5 8 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 7 0 2 0 7 0 |
7 | 8036ms | 10033 | 1 1 1 1 1 1 1 1 1 1 | 8 8 1 6 3 8 2 9 4 1 9 8 3 2 8 3 2 0 9 7 3 7 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 8 4 1 8 1 5 7 0 4 0 7 0 |
8 | 7503ms | 12096 | 1 1 1 1 1 1 1 1 1 1 | 8 8 1 6 3 8 2 4 4 1 9 0 3 2 8 3 2 0 9 7 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 2 1 8 1 5 7 8 4 3 4 0 |
9 | 8594ms | 8823 | 1 1 1 1 1 1 1 0 1 1 | 8 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 4 3 8 6 4 2 5 1 5 0 5 2 6 0 3 9 4 4 3 0 4 1 8 1 5 4 0 4 0 2 0 |
10 | 9250ms | 7648 | 1 1 1 1 1 0 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 6 1 1 0 1 2 6 0 3 9 4 4 3 0 4 1 8 1 6 7 0 4 0 4 0 |
11 | 8607ms | 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 |
12 | 8947ms | 10893 | 1 1 1 1 1 0 1 0 1 1 | 8 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 4 3 8 6 4 2 6 1 1 0 1 2 6 0 3 9 4 4 3 0 2 1 8 1 6 4 0 4 0 4 0 |
13 | 12246ms | 10799 | 1 1 0 1 1 0 0 1 0 0 0 0 1 1 1 1 1 0 0 1 | 16 12 7 16 1 12 3 13 14 4 15 4 1 7 13 12 15 7 4 3 12 15 15 19 14 4 16 3 1 4 13 7 13 16 3 7 3 19 19 13 14 0 0 0 3 13 14 7 19 3 |
14 | 11102ms | 7634 | 0 1 0 1 1 1 1 0 0 0 1 0 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 6 14 15 15 19 6 17 16 17 1 17 13 15 13 16 3 10 3 1 19 13 6 16 5 16 3 5 14 10 19 6 |
15 | 10826ms | 10074 | 0 1 0 0 1 0 1 0 0 0 1 1 1 1 0 1 1 1 1 0 | 16 12 10 10 1 18 17 13 12 17 15 4 1 6 13 11 15 10 4 6 12 15 15 13 6 17 16 17 1 17 13 15 18 16 1 10 11 1 1 13 6 16 15 16 11 13 12 10 4 6 |
16 | 10469ms | 13395 | 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 0 1 1 | 0 12 7 7 1 18 3 18 12 3 15 19 1 9 18 3 15 7 1 9 12 15 15 19 9 1 0 3 1 3 18 7 18 0 3 7 11 19 19 18 9 0 5 0 11 5 12 7 19 9 |
17 | 10425ms | 8902 | 1 1 1 1 0 0 1 0 0 0 1 0 0 1 1 1 0 1 0 0 | 0 1 10 10 1 15 17 13 14 17 15 1 1 6 13 3 15 10 17 6 14 15 15 2 6 17 0 17 1 17 13 15 2 0 3 10 3 1 1 13 6 0 0 15 3 13 14 10 2 6 |
18 | 10209ms | 8048 | 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 0 1 | 0 12 7 7 1 12 17 13 14 17 7 19 1 6 13 11 5 7 17 6 12 5 7 19 6 17 0 17 1 17 13 7 13 0 1 7 11 19 19 13 6 0 5 0 11 5 14 6 19 6 |
19 | 10364ms | 10572 | 1 1 0 1 0 0 1 1 1 0 0 0 1 1 0 0 1 0 0 1 | 16 12 7 7 1 12 3 13 12 3 7 19 1 6 13 3 7 6 1 6 12 7 7 19 6 1 16 3 1 3 13 7 13 16 3 6 3 19 19 13 8 0 0 0 8 13 12 6 19 8 |
20 | 10610ms | 13116 | 1 1 0 0 1 1 1 1 1 0 0 0 1 0 1 0 0 1 1 0 | 0 12 7 7 1 18 17 18 14 17 7 4 1 6 18 12 5 7 4 6 12 5 7 18 6 17 0 17 1 17 18 7 18 0 1 6 8 1 1 18 14 0 5 0 8 5 14 6 4 8 |
21 | 11307ms | 8812 | 1 1 0 1 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 | 0 12 10 10 1 12 3 13 14 3 15 19 1 10 13 3 15 10 1 9 12 15 15 19 9 1 0 3 1 3 13 15 13 0 3 10 3 19 19 13 10 0 0 0 3 13 14 10 19 9 |
22 | 10788ms | 7921 | 0 1 0 0 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 11 15 10 4 9 12 15 15 19 6 17 16 17 1 17 13 15 13 16 1 10 11 19 19 13 6 16 5 16 11 5 14 10 19 9 |
23 | 11179ms | 10323 | 1 1 1 1 0 1 1 1 0 0 1 0 1 0 0 1 0 1 0 0 | 0 12 10 10 1 12 17 2 7 17 15 1 1 6 2 3 15 10 17 6 12 15 15 2 6 17 0 17 1 17 2 7 2 0 3 10 3 1 1 2 6 0 5 0 3 5 12 10 2 6 |
24 | 10457ms | 12425 | 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 1 1 | 7 3 10 10 19 18 3 18 3 11 15 19 19 6 18 3 15 10 19 6 18 15 15 19 6 3 7 3 3 3 18 7 18 7 3 10 11 19 19 18 6 5 5 7 11 5 7 10 19 6 |
25 | 29770ms | 19582 | 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1 1 1 0 0 1 1 0 1 1 1 | 20 11 20 0 13 5 2 9 14 0 9 28 19 20 17 14 14 0 29 11 28 4 24 2 9 8 19 24 5 24 21 25 20 25 20 20 24 15 0 14 0 14 15 8 24 14 0 13 27 8 29 28 7 11 13 13 17 27 11 17 17 24 20 27 11 11 9 0 5 25 13 13 0 7 15 8 24 13 14 5 20 0 20 17 17 0 17 7 20 29 0 9 17 0 11 5 14 19 21 13 8 19 14 25 19 29 4 0 14 28 17 14 2 0 5 27 24 24 0 11 5 8 25 13 8 0 25 9 7 25 0 0 24 5 2 8 7 5 13 17 0 28 20 14 8 27 25 5 0 5 |
26 | 29936ms | 16827 | 1 0 1 0 0 1 1 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 1 | 6 11 20 17 20 25 2 25 14 17 9 20 28 20 19 14 14 0 5 11 14 0 9 17 24 8 2 24 25 5 29 5 6 11 20 20 24 24 7 2 0 14 9 28 24 17 27 13 27 28 29 19 2 0 13 13 2 29 0 14 0 24 20 27 11 11 5 0 24 24 20 6 17 17 5 20 9 8 14 24 20 7 13 0 19 11 2 7 20 5 2 24 7 25 0 9 2 2 25 8 8 7 14 25 19 29 0 0 14 14 14 2 17 11 5 11 24 9 24 24 0 8 25 13 28 7 5 24 17 29 0 11 9 5 8 8 17 5 13 0 0 28 13 14 8 25 25 5 2 24 |
27 | 30364ms | 19685 | 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 1 1 | 20 11 20 14 20 5 7 9 14 17 9 8 8 20 17 14 17 17 25 11 2 7 9 19 5 8 2 5 24 9 5 25 13 25 20 20 24 15 29 0 0 14 15 14 24 17 11 13 27 8 29 14 2 5 13 13 2 27 0 17 0 5 20 11 11 25 24 11 5 9 20 20 11 17 24 8 15 20 2 24 20 7 20 11 19 17 0 7 20 29 14 24 0 11 7 24 14 19 29 20 8 7 14 25 2 25 7 27 14 8 14 14 2 7 11 27 24 24 24 24 5 8 5 13 28 0 5 24 7 25 0 11 5 5 28 14 11 25 20 17 0 28 13 14 20 25 0 11 2 5 |
28 | 29882ms | 23361 | 1 0 1 0 1 1 0 1 1 0 0 1 0 1 1 1 0 1 1 1 1 0 0 0 1 1 0 0 0 1 | 20 7 20 7 13 11 2 24 20 17 24 8 20 20 19 8 0 17 5 25 2 0 5 19 24 20 2 5 5 15 5 11 18 11 20 20 5 5 0 14 11 14 15 8 5 14 0 13 25 8 29 14 14 5 13 20 2 25 4 14 0 5 20 11 11 11 24 0 5 29 20 8 5 0 15 8 24 14 14 24 13 7 20 0 19 17 17 4 20 29 0 24 2 0 17 5 2 2 7 13 20 17 14 25 2 25 8 25 20 8 14 14 2 0 11 11 5 24 0 11 5 8 25 13 18 0 5 29 11 29 0 7 24 5 8 17 17 11 20 17 11 8 20 2 8 25 25 5 0 5 |
29 | 29392ms | 20235 | 1 0 1 0 0 1 1 1 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 0 1 1 0 0 1 1 | 20 11 20 2 20 11 2 24 8 0 9 8 28 8 7 8 14 17 29 0 14 0 5 17 22 8 19 24 5 22 5 25 6 11 20 8 24 24 0 14 7 14 9 20 24 14 11 13 29 28 29 14 14 5 6 20 17 11 0 14 17 5 14 11 11 11 22 0 5 24 20 20 11 0 24 13 24 8 2 24 20 7 20 7 19 7 2 7 8 29 0 24 7 11 7 24 17 19 21 28 28 17 14 25 2 29 7 25 14 28 17 14 2 0 0 21 0 24 5 11 5 8 11 8 20 7 5 9 0 29 17 11 24 21 8 14 7 29 13 17 0 13 20 14 20 11 11 5 17 5 |
30 | 29469ms | 17420 | 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 0 1 1 1 1 0 1 0 1 1 0 1 0 1 | 20 29 20 2 8 5 2 25 2 0 9 13 8 20 17 14 14 17 25 0 2 0 22 17 5 14 19 5 9 24 25 25 18 29 8 14 5 9 7 14 17 14 24 8 5 17 4 20 11 8 29 2 14 5 13 8 2 27 7 20 0 5 20 11 11 25 22 0 24 24 20 20 11 17 24 14 9 8 2 24 20 17 13 17 19 17 2 7 20 5 17 24 0 11 17 5 2 19 5 18 8 17 17 11 2 29 4 7 8 8 17 14 2 11 11 27 24 9 5 24 11 8 11 20 18 0 11 9 0 25 11 25 24 5 8 2 7 29 20 11 11 8 20 14 8 27 25 5 2 5 |
31 | 30260ms | 20019 | 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 1 | 13 11 8 14 8 11 2 9 28 0 25 20 8 8 19 8 17 0 5 11 2 0 5 2 5 20 17 24 11 24 27 25 13 11 20 8 24 9 0 14 11 14 24 8 24 14 7 13 27 8 29 14 14 11 13 20 2 29 11 14 11 5 20 0 17 11 24 7 9 5 20 20 11 17 9 8 24 20 14 24 8 7 20 0 2 17 17 7 14 5 2 24 17 27 17 9 2 2 29 13 8 17 17 25 19 29 0 11 8 28 14 2 2 11 25 11 24 5 24 24 11 8 5 13 20 0 25 24 0 25 0 0 24 25 8 20 17 5 20 17 0 20 20 14 0 25 25 5 17 25 |
32 | 30186ms | 21215 | 1 0 1 0 0 1 1 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 0 | 6 25 20 2 20 5 2 24 14 17 25 8 20 20 2 14 14 0 5 11 2 0 24 19 25 8 2 25 24 17 5 5 6 11 20 8 5 24 25 2 17 14 24 28 24 14 7 20 27 28 25 14 2 11 6 20 17 25 0 14 0 25 20 27 11 11 5 17 24 25 8 6 11 0 24 28 25 20 19 24 14 7 20 17 19 17 2 7 8 5 2 25 0 11 17 11 2 2 25 8 8 17 0 25 19 25 17 11 8 28 14 28 2 0 11 25 24 5 24 5 5 28 5 20 8 7 5 24 0 27 17 27 24 27 8 14 17 5 20 17 0 28 20 14 8 11 11 5 17 24 |
33 | 30352ms | 19297 | 1 0 1 0 0 1 1 1 1 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 1 1 | 20 11 13 2 20 5 17 9 14 17 9 8 28 8 17 8 14 17 29 11 2 7 9 19 5 8 19 11 9 24 29 25 6 29 8 14 24 15 7 17 0 14 24 8 24 17 7 20 27 28 29 28 2 11 13 14 14 27 11 14 0 11 20 11 11 5 24 0 9 9 20 6 11 17 24 28 15 20 14 5 13 7 20 11 19 17 17 19 8 29 2 24 17 11 17 5 2 19 25 13 8 17 0 25 19 5 17 7 14 28 14 2 2 11 11 27 24 24 24 24 0 8 25 14 20 0 5 9 0 29 0 11 24 5 8 14 7 25 20 17 0 28 20 14 8 25 0 5 2 5 |
34 | 29256ms | 15313 | 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 1 | 20 25 13 2 20 11 2 24 8 17 9 20 8 20 17 14 14 17 5 11 14 7 24 17 5 8 17 5 9 5 5 25 20 25 8 13 9 9 0 14 0 20 24 8 24 14 7 20 0 8 29 2 14 5 8 20 2 11 0 17 0 5 14 11 11 11 9 17 29 9 8 13 25 0 24 20 24 20 14 9 20 7 20 17 17 17 17 7 17 29 17 24 17 11 7 9 2 2 25 20 20 17 11 11 2 29 17 25 14 8 14 14 2 11 25 11 24 24 24 24 5 8 11 8 7 17 5 24 11 29 0 0 24 5 8 14 7 5 20 17 0 8 20 14 20 25 11 5 0 5 |
35 | 30160ms | 18824 | 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 1 0 | 20 11 20 14 20 5 17 24 28 17 5 8 20 20 2 14 14 17 5 11 14 0 9 2 5 8 2 24 5 24 5 25 17 11 20 20 5 9 7 2 0 2 9 28 24 17 7 20 11 8 25 28 14 5 13 13 2 11 0 17 0 5 14 11 11 11 24 0 9 9 20 13 11 14 5 8 9 20 17 9 13 7 13 17 17 0 0 0 20 5 17 9 0 11 17 5 14 2 25 20 8 17 14 25 0 25 7 0 14 8 14 14 17 11 0 27 11 5 24 11 5 8 25 13 20 0 5 9 7 25 11 11 9 5 8 14 7 25 20 0 0 20 20 17 8 27 11 5 0 11 |
36 | 30739ms | 22921 | 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 | 13 25 20 17 13 11 19 24 8 17 22 8 13 20 19 14 14 0 5 11 7 0 24 17 5 8 2 24 5 5 29 11 20 7 20 14 24 22 0 14 17 14 24 8 24 14 0 28 2 28 5 14 2 11 20 20 0 11 0 14 0 5 20 0 11 25 24 11 24 5 8 20 5 7 24 8 24 20 17 24 20 7 20 17 2 17 2 11 20 25 2 5 0 0 11 25 2 7 27 13 8 17 17 25 2 25 17 11 19 28 14 2 2 11 11 27 24 24 24 5 5 28 25 13 8 0 5 22 0 29 17 11 24 24 8 14 17 5 2 17 0 8 20 14 14 27 11 5 2 0 |
37 | 30031ms | 19252 | 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 1 | 20 11 20 2 13 11 17 9 28 17 9 8 28 20 17 8 0 17 5 11 2 17 29 19 9 20 19 5 5 9 29 11 13 25 20 8 11 15 0 14 0 14 9 28 9 14 7 13 27 14 25 14 17 5 20 20 17 0 0 14 17 5 14 11 11 11 9 0 5 9 20 20 11 7 9 8 9 8 14 5 8 0 20 11 19 17 17 7 14 5 2 9 7 0 17 9 2 17 29 20 8 7 0 11 2 29 0 0 14 14 14 14 2 11 11 27 11 15 11 5 5 8 25 13 20 7 5 27 17 29 0 0 5 25 20 17 7 5 20 17 17 28 20 17 8 11 11 5 2 5 |
38 | 29917ms | 16152 | 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 | 20 11 28 14 8 5 2 9 2 17 5 8 8 20 7 14 17 0 25 11 14 0 22 17 24 8 2 11 24 5 5 25 13 27 20 20 24 24 11 14 0 8 9 8 11 14 7 13 27 28 21 2 14 11 20 20 2 25 0 14 17 24 20 11 11 0 22 17 22 24 20 13 11 0 24 8 24 20 2 9 20 7 20 17 0 7 2 4 20 5 2 9 0 11 17 5 14 2 21 13 8 17 17 5 14 17 17 11 14 28 17 28 2 11 11 21 5 5 5 24 11 8 25 13 20 7 5 9 0 11 0 27 24 22 14 14 4 5 20 17 0 28 13 0 8 25 25 11 2 5 |
39 | 30515ms | 20232 | 1 0 1 1 1 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 1 | 20 25 13 14 20 11 19 24 14 17 5 20 28 20 3 14 0 17 25 17 19 0 5 3 24 8 17 24 5 24 29 11 20 25 20 20 24 5 7 17 17 14 24 8 11 17 4 20 17 28 29 28 14 11 20 13 14 11 0 17 11 5 8 11 0 11 5 0 5 24 13 20 11 17 24 28 24 20 14 5 20 0 8 17 19 17 17 4 8 5 17 24 17 27 17 29 14 3 25 13 8 7 17 25 19 25 17 11 14 28 0 28 2 11 11 27 24 29 24 5 5 13 11 13 13 0 5 24 0 5 0 11 5 24 8 14 7 5 20 17 17 8 20 14 8 25 25 5 2 5 |
40 | 30286ms | 23988 | 1 0 1 1 0 1 1 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 1 | 20 25 8 2 8 5 19 24 14 0 9 8 8 20 3 14 14 0 5 11 19 0 29 19 5 8 17 24 9 9 5 11 6 25 17 14 5 24 17 17 0 14 24 14 24 17 7 13 27 8 29 14 14 5 13 20 17 11 0 14 0 24 20 11 17 25 9 0 5 9 13 6 11 17 24 28 24 14 14 24 13 0 13 17 17 17 0 7 20 29 19 24 17 11 17 24 14 3 27 13 8 17 17 11 2 29 17 0 8 8 17 14 0 7 11 25 24 24 24 24 5 28 25 20 28 0 25 9 0 25 17 27 24 5 28 14 7 5 20 17 0 28 20 17 8 27 25 5 2 24 |
41 | 16099ms | 7208 | 1 1 1 1 1 1 1 1 1 1 | 5 6 4 1 7 9 3 7 8 8 4 9 2 6 2 7 7 3 0 6 6 1 4 1 6 5 5 4 8 5 8 0 0 0 3 2 2 6 6 2 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 7 9 2 2 9 9 |
42 | 17946ms | 8654 | 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 1 1 | 12 10 11 9 15 18 16 3 16 1 11 18 19 10 19 15 0 2 14 14 5 11 9 8 12 8 11 16 2 4 1 19 19 8 14 10 10 0 0 1 0 3 3 16 9 5 8 19 15 15 1 1 1 4 2 9 2 14 14 14 3 11 4 3 11 3 0 15 19 15 10 18 19 19 19 18 18 19 19 19 |
43 | 18938ms | 7897 | 1 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 1 0 | 18 20 11 23 25 20 25 8 27 27 23 23 25 0 18 11 8 11 18 18 25 3 20 20 20 3 27 6 27 4 28 23 23 25 0 0 1 1 11 11 4 18 27 23 28 25 3 20 20 11 8 0 0 6 6 6 0 20 23 28 28 1 1 28 27 27 1 27 1 28 |
44 | 14577ms | 7266 | 1 1 1 1 1 1 1 1 1 1 | 4 4 4 4 4 4 4 4 0 0 0 0 6 0 0 0 1 1 1 7 8 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 4 0 1 1 2 1 7 5 9 9 7 6 5 5 9 8 7 7 9 5 5 5 9 3 0 6 6 8 1 5 4 9 9 7 7 8 6 6 5 8 7 9 9 9 9 5 6 5 7 5 |
45 | 17254ms | 8386 | 1 1 1 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 1 0 | 0 0 0 0 0 15 0 1 1 1 18 15 1 1 15 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 16 3 15 16 8 13 11 16 18 16 5 15 9 9 12 2 15 17 13 13 8 11 9 9 18 12 13 17 17 17 8 16 9 13 |
46 | 18045ms | 7674 | 1 0 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 | 10 0 10 10 10 0 10 11 11 11 11 11 11 11 11 3 3 3 3 3 3 17 5 5 5 17 5 9 9 9 9 9 9 13 0 3 3 17 17 28 28 3 20 22 17 14 14 27 13 28 0 27 27 22 3 14 13 22 14 14 3 20 28 14 14 27 14 13 20 28 |
47 | 14814ms | 6651 | 1 1 1 1 1 1 1 1 1 1 | 9 0 0 0 0 2 0 0 0 0 1 1 1 0 1 1 1 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 0 7 7 7 7 7 8 8 6 8 6 6 8 8 8 6 2 9 9 9 9 9 8 |
48 | 16660ms | 8035 | 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 | 0 0 0 0 1 0 1 1 1 3 3 3 3 3 3 4 4 4 5 5 5 5 5 5 6 6 6 6 6 7 7 8 8 8 8 8 8 8 9 9 9 9 10 10 10 10 10 10 12 13 12 13 13 12 13 14 14 12 14 12 0 14 14 14 14 16 16 17 17 13 17 17 17 18 18 19 18 19 19 19 |
49 | 18192ms | 7049 | 0 1 1 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 1 1 0 0 0 1 0 | 1 1 1 2 2 2 2 2 5 5 5 5 5 6 6 6 14 7 7 7 7 7 7 7 15 7 7 13 13 15 14 13 13 14 15 14 16 16 16 16 16 16 19 19 19 14 19 19 23 19 23 19 1 23 23 23 23 24 24 24 24 24 24 24 28 1 28 28 28 28 |
50 | 16538ms | 9838 | 1 1 1 1 1 1 1 1 0 1 | 3 6 3 0 9 9 5 5 3 7 7 4 1 9 9 1 2 5 5 3 4 0 0 4 0 4 7 4 4 7 7 7 3 3 3 5 1 9 0 6 0 9 1 1 5 5 7 5 5 3 3 5 4 4 0 0 9 6 1 2 9 7 7 7 3 3 0 4 7 7 3 0 6 6 0 4 4 3 3 4 3 5 2 2 2 2 6 7 2 7 9 1 2 2 2 1 9 2 9 2 |
51 | 19919ms | 9989 | 1 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 1 1 1 | 15 0 19 10 16 13 5 16 15 5 5 3 13 13 0 12 12 16 2 15 0 0 10 19 10 10 1 19 19 19 1 1 19 19 15 5 13 18 10 0 0 13 18 13 16 5 5 5 5 17 15 2 18 10 10 10 0 0 13 12 13 5 1 5 15 15 10 3 1 1 19 0 0 0 10 19 19 19 17 3 19 5 16 12 18 13 13 2 12 1 13 13 18 13 18 18 13 18 13 13 |
52 | 16761ms | 9552 | 0 1 0 1 1 1 1 1 1 1 | 7 7 7 7 7 7 7 7 3 4 4 4 3 4 4 4 4 8 5 8 8 3 3 8 8 5 9 9 9 9 9 9 9 5 6 6 6 6 6 6 6 6 6 6 7 7 4 8 8 5 8 3 4 6 7 5 3 3 3 4 6 9 5 3 3 3 9 6 4 7 6 6 4 3 3 5 3 4 7 1 6 3 3 5 5 3 3 7 5 3 5 9 9 1 5 1 3 4 3 7 |
53 | 20048ms | 11458 | 0 0 1 1 1 1 1 1 0 1 0 0 1 1 0 1 0 1 1 1 | 5 5 5 5 5 5 5 5 19 19 19 7 7 7 19 7 7 12 13 13 13 12 13 12 3 9 9 9 9 15 15 9 9 15 18 18 18 18 18 18 18 18 18 18 5 5 19 12 13 15 15 4 7 18 5 15 3 13 3 6 18 2 15 12 4 13 2 5 6 5 17 18 6 3 3 9 3 6 6 2 18 7 13 15 15 3 3 6 13 3 15 2 17 17 15 17 3 6 4 5 |
54 | 16102ms | 9674 | 1 1 1 1 1 1 1 1 1 1 | 7 7 7 7 7 7 7 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 3 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 6 6 8 8 8 8 6 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 0 0 0 4 4 4 4 4 4 4 4 9 4 9 9 4 9 4 9 9 |
55 | 19332ms | 10681 | 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 | 17 17 17 18 16 8 16 8 8 8 2 8 2 8 18 2 2 2 2 6 6 12 6 12 12 12 14 12 6 6 6 14 14 6 6 6 6 6 6 7 7 7 0 7 0 0 0 0 0 0 0 0 10 7 7 7 10 7 7 10 11 9 11 11 13 11 11 7 11 9 9 11 9 11 17 13 9 13 9 9 13 15 13 15 15 15 15 15 15 15 15 18 18 18 18 17 18 18 18 18 |
56 | 38245ms | 30952 | 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 | 18 19 21 18 2 6 16 11 27 0 29 28 13 1 28 18 3 20 27 17 11 16 2 24 5 18 18 19 29 5 14 26 26 24 28 6 8 8 24 15 18 13 6 4 8 19 13 21 6 10 24 16 24 21 8 4 25 8 27 25 4 0 25 20 20 11 2 19 19 25 18 12 4 8 23 13 20 13 20 16 8 17 26 25 29 20 4 2 27 7 11 19 25 7 2 1 28 12 17 28 17 15 11 11 29 0 4 24 24 3 19 26 27 12 11 8 28 25 14 13 26 12 17 6 26 16 2 11 6 28 28 2 12 20 5 8 3 3 14 10 11 27 28 11 12 5 21 16 18 11 24 17 10 17 8 6 2 15 3 1 3 27 10 2 23 27 5 4 1 16 1 23 19 14 26 21 24 10 29 10 5 2 16 28 12 8 17 10 0 24 2 21 6 4 11 12 12 2 20 6 |
57 | 37610ms | 38001 | 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 0 | 25 14 21 27 2 12 15 27 22 17 4 28 13 3 28 18 3 13 27 24 22 16 23 24 20 18 22 19 4 21 6 6 26 16 0 12 8 9 24 16 18 9 6 26 8 26 13 21 19 17 24 16 0 21 20 12 11 9 27 11 4 2 7 13 13 11 5 17 28 25 18 6 19 8 5 23 8 23 8 24 23 17 9 7 26 10 6 5 27 18 28 19 25 25 17 8 27 12 2 17 28 15 25 18 4 0 12 22 22 3 19 4 24 12 25 8 11 7 17 8 26 11 14 19 26 15 2 12 19 0 11 24 11 20 23 20 3 3 28 10 12 22 28 25 25 10 24 2 27 11 24 17 23 0 20 28 5 15 13 20 13 27 23 24 2 27 23 4 13 16 13 8 19 20 26 2 27 10 4 20 5 21 2 19 11 8 28 23 27 21 2 2 6 4 18 12 18 15 23 19 |
58 | 37649ms | 57132 | 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 1 0 | 27 19 21 22 2 12 24 27 22 27 4 17 10 10 6 18 1 20 27 0 18 16 5 27 10 18 24 14 4 2 19 6 4 16 11 19 8 9 24 16 18 8 6 4 20 6 13 21 19 14 21 16 24 16 20 6 11 20 18 25 26 2 7 13 20 25 23 14 17 25 18 12 12 9 23 10 20 23 8 16 23 17 9 18 26 13 4 5 27 7 28 6 25 25 0 3 11 6 0 17 28 21 25 7 4 24 4 24 22 8 19 26 27 12 12 8 28 7 17 8 9 11 17 19 26 16 21 11 19 17 18 24 25 20 1 14 1 3 17 10 11 22 11 7 25 2 24 16 27 11 24 0 10 0 13 28 2 2 3 13 1 27 10 2 23 24 5 4 3 2 1 20 19 14 26 0 0 8 4 10 5 21 21 6 12 8 11 23 17 21 21 21 6 19 7 25 11 21 10 6 |
59 | 37373ms | 43600 | 1 0 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 | 18 19 21 22 2 12 21 27 22 28 4 28 13 13 19 18 27 20 24 27 18 15 2 2 10 11 27 19 29 2 19 26 26 16 27 4 20 9 24 15 18 8 6 4 8 19 13 21 14 20 0 24 2 15 20 6 11 20 22 7 29 0 25 20 13 25 5 14 17 12 18 12 19 9 10 23 20 5 8 16 23 2 9 7 29 13 29 5 27 7 28 6 25 25 0 13 28 28 0 17 14 21 12 25 26 0 4 2 27 13 14 4 22 6 12 20 28 25 17 8 8 11 17 6 26 16 2 11 26 17 28 21 25 20 23 26 8 13 17 10 11 27 12 11 25 5 24 15 27 25 24 0 23 0 13 28 2 2 10 13 13 27 13 21 5 28 5 29 23 21 5 14 14 10 26 21 0 14 29 10 5 15 2 12 12 9 6 23 17 24 21 21 19 4 7 6 7 21 23 19 |
60 | 38831ms | 29475 | 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 0 1 1 1 | 27 19 2 22 5 6 21 0 22 28 29 28 13 1 28 18 1 20 22 0 18 16 23 24 20 18 18 19 29 2 19 19 4 21 27 6 14 8 24 2 27 20 19 4 8 19 8 21 19 14 24 16 24 16 8 12 12 20 7 7 4 0 18 8 20 25 5 19 19 25 7 12 6 9 23 23 20 5 8 16 10 0 20 25 29 10 19 5 18 25 27 6 25 7 5 3 28 12 2 28 28 2 25 18 29 2 29 27 22 3 19 19 18 6 11 20 28 25 17 13 20 11 14 19 9 16 27 12 19 17 28 21 25 20 5 9 3 3 11 10 25 22 11 11 25 5 24 16 27 25 24 14 23 0 8 6 23 21 3 13 3 17 10 24 5 27 23 4 13 2 1 3 19 14 4 2 24 10 4 10 5 16 2 28 12 8 11 23 0 21 2 2 6 29 7 12 7 16 20 19 |
61 | 37027ms | 39980 | 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 | 27 19 21 27 2 11 21 28 22 28 26 17 13 13 28 11 1 20 22 27 25 21 5 24 10 27 27 14 29 5 6 19 19 24 27 12 13 9 27 16 18 8 6 26 8 26 3 16 28 14 27 16 2 15 8 6 25 26 22 25 4 0 7 9 20 28 5 14 28 12 18 12 19 20 23 1 20 23 8 22 10 17 9 25 29 10 19 5 24 7 28 19 7 11 5 3 25 6 5 28 28 21 11 18 4 2 29 24 22 23 19 4 18 4 12 8 27 7 28 20 26 11 28 19 26 21 2 11 26 17 27 21 25 8 23 9 1 3 28 14 12 18 12 25 11 10 27 15 27 25 24 17 20 0 3 11 2 15 3 13 23 17 23 21 5 18 5 4 3 21 1 20 28 8 26 2 0 23 4 20 5 15 2 19 6 9 12 10 2 21 5 2 6 29 7 12 7 21 10 6 |
62 | 38934ms | 56665 | 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 | 18 19 24 27 21 6 24 27 27 28 4 14 13 13 28 18 1 20 22 18 27 22 5 27 14 18 27 28 29 5 4 19 4 21 27 19 14 9 24 16 25 20 25 4 20 19 13 24 19 20 24 16 24 21 20 6 18 9 18 7 29 0 7 8 13 12 10 17 17 12 7 12 6 9 23 1 10 23 8 24 10 17 9 7 29 13 4 21 27 7 28 6 25 7 5 1 18 12 0 28 28 16 25 18 19 24 6 27 22 3 19 4 27 19 12 13 17 7 14 8 26 25 17 6 9 16 21 12 26 17 28 21 7 20 5 9 3 3 28 10 12 22 12 25 25 23 24 21 27 25 27 17 23 0 8 12 0 21 13 13 13 0 20 24 5 28 1 26 13 21 1 20 19 14 19 0 0 10 29 10 23 21 0 19 12 8 27 10 0 16 21 21 6 4 18 6 25 21 10 19 |
63 | 36968ms | 44600 | 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 6 2 27 2 11 15 27 18 28 29 17 23 1 28 18 1 8 22 17 18 16 21 24 10 18 24 17 29 2 26 19 4 21 18 19 20 9 16 16 11 20 6 26 8 19 13 21 6 14 24 16 24 16 8 12 7 9 18 25 4 0 25 8 13 11 2 14 17 25 22 12 19 8 10 23 8 10 8 24 10 17 8 25 29 13 6 5 24 7 28 4 12 25 0 3 17 12 0 28 28 15 25 18 4 0 4 27 22 3 19 26 27 12 12 8 28 18 14 9 9 12 17 29 26 21 2 12 26 0 28 24 25 10 1 9 1 13 11 10 6 22 11 11 25 2 24 15 27 25 27 17 1 0 8 11 2 15 3 3 13 24 10 24 5 27 5 4 3 21 1 8 19 20 26 2 0 20 29 10 5 2 21 12 12 9 28 23 0 21 2 2 6 4 7 12 18 15 13 28 |
64 | 37510ms | 28203 | 1 0 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 0 | 18 19 0 22 2 6 15 27 22 28 26 28 13 13 28 18 3 20 27 0 18 21 5 2 13 27 27 19 26 5 19 26 26 21 27 12 9 8 21 21 18 20 6 4 20 28 13 21 19 14 24 24 2 21 8 12 12 9 27 25 4 0 25 8 13 11 5 17 28 11 18 12 6 9 23 13 20 23 8 21 23 0 4 25 4 13 6 2 22 25 28 6 25 11 2 3 11 12 0 28 28 15 25 18 4 0 26 24 22 3 19 4 27 25 12 20 11 11 17 8 9 11 17 19 26 15 21 11 19 17 11 24 25 14 23 20 23 8 11 10 12 22 11 11 25 23 2 15 0 25 24 17 23 0 8 11 5 15 3 13 3 27 10 2 23 27 5 19 3 21 5 10 28 10 4 2 27 10 4 20 5 21 21 19 6 8 28 23 17 21 24 2 19 4 25 12 25 21 10 19 |
65 | 38343ms | 38505 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 | 18 28 15 27 2 12 2 27 18 27 29 17 13 1 19 18 13 20 27 27 18 21 1 24 10 27 24 19 19 5 12 19 29 21 28 6 14 8 24 15 7 9 6 4 8 19 13 21 19 14 24 27 2 21 8 6 7 9 18 12 29 2 11 20 20 25 0 14 6 25 18 12 12 9 5 8 13 5 8 24 10 0 14 25 26 13 19 2 27 25 28 6 7 7 23 1 11 11 0 17 19 15 11 18 29 24 4 24 27 3 14 29 27 12 25 8 27 25 17 9 26 11 28 4 26 21 2 12 19 0 28 24 12 10 1 9 13 3 17 20 12 0 28 11 11 2 21 21 18 12 27 17 23 0 20 11 2 15 3 13 3 27 10 24 5 27 5 4 3 21 1 20 19 20 26 2 0 14 29 20 5 15 21 19 12 8 28 23 17 2 2 21 6 4 7 11 25 15 20 17 |
66 | 36811ms | 58184 | 1 0 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 | 7 6 21 24 15 6 2 28 18 11 4 19 13 13 19 11 23 20 16 0 27 16 5 24 10 27 27 19 4 5 19 19 4 16 28 19 8 10 24 16 25 9 12 29 20 4 13 2 19 20 27 16 24 22 8 6 11 26 18 7 29 0 7 8 13 25 10 14 19 7 7 12 6 26 23 23 20 23 8 21 23 0 9 12 4 13 6 5 27 11 28 6 25 25 0 13 27 6 0 28 28 15 11 7 4 0 29 24 22 13 14 4 27 6 6 8 11 25 17 8 14 25 28 4 14 15 0 12 26 28 27 21 6 10 23 9 13 10 28 14 25 27 11 11 25 2 16 15 0 25 24 17 23 17 20 28 5 21 20 13 13 27 10 24 23 27 23 26 13 15 5 9 19 10 26 2 24 10 29 10 21 15 2 11 12 20 28 23 0 24 2 21 6 6 7 12 7 15 10 19 |
67 | 38855ms | 44202 | 1 1 1 0 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 0 | 18 12 21 27 21 11 15 28 27 28 4 28 13 1 28 11 10 9 22 0 18 24 1 27 10 27 27 17 4 2 19 6 6 16 27 6 20 20 24 15 7 9 6 26 8 19 13 21 28 14 0 16 24 21 8 25 18 9 22 7 26 2 18 10 8 11 23 14 6 25 7 11 19 20 23 10 10 17 8 24 10 0 9 7 4 13 19 2 22 25 19 6 25 7 0 1 27 12 0 11 28 15 12 18 4 23 19 0 27 13 17 19 27 11 6 26 28 11 14 8 26 11 27 19 26 16 2 11 19 24 28 24 12 20 1 8 8 8 28 14 11 18 12 11 25 2 27 21 27 7 24 0 13 17 13 28 2 15 13 1 13 27 20 21 23 27 0 4 1 21 1 14 14 10 26 2 24 20 26 10 2 21 2 19 12 8 28 23 0 21 21 16 4 4 25 6 18 24 10 6 |
68 | 37899ms | 28907 | 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 0 | 18 19 2 22 5 11 21 27 27 28 4 28 13 23 17 11 1 10 24 24 22 16 1 24 10 27 27 19 4 2 19 6 4 16 27 19 20 8 16 21 18 26 6 19 8 26 13 2 14 14 16 16 2 16 10 12 27 8 18 7 26 2 7 13 8 11 5 19 28 12 18 28 19 8 5 10 20 5 8 16 10 17 26 18 4 10 4 5 27 18 19 19 7 11 2 3 11 12 17 28 14 21 12 18 4 0 4 24 22 3 19 4 27 12 12 20 27 7 28 8 26 11 28 19 26 16 2 28 26 0 28 24 11 10 5 20 3 3 28 10 11 22 11 11 11 2 16 2 18 7 27 17 23 28 8 11 5 21 13 13 1 0 23 2 5 27 5 4 3 21 1 10 6 14 26 21 21 10 4 20 2 21 2 6 11 8 12 23 0 24 2 21 19 4 7 12 18 2 10 19 |
69 | 38138ms | 37085 | 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 | 7 19 16 22 5 12 21 28 18 17 4 28 8 1 19 18 1 20 22 24 18 16 0 24 23 18 24 28 26 15 6 26 4 15 27 6 20 20 21 24 7 8 6 26 8 26 8 16 19 10 0 16 24 21 8 6 11 8 18 25 4 17 7 20 20 11 0 14 28 25 18 12 19 19 23 10 20 23 8 16 23 23 26 25 26 20 4 5 27 7 28 19 7 25 2 3 27 6 2 17 17 15 25 25 4 24 6 24 27 3 14 6 27 12 11 8 28 7 17 20 26 12 28 19 26 15 2 11 26 17 11 24 12 14 1 8 1 20 28 10 11 27 11 7 25 5 24 21 18 25 0 17 23 27 23 11 2 15 3 3 1 27 10 24 5 27 5 4 1 21 1 20 6 14 4 2 27 10 4 10 5 15 2 17 12 8 27 23 0 24 2 21 19 6 7 12 7 15 23 14 |
70 | 38020ms | 57432 | 1 1 1 1 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 0 | 18 19 21 24 24 6 21 27 27 17 4 17 13 1 19 18 1 10 16 0 18 24 23 24 10 11 27 19 4 2 6 6 4 16 27 19 20 9 24 15 18 9 6 26 20 19 13 2 14 14 24 24 24 16 8 19 25 8 18 25 4 2 7 8 13 11 23 10 19 25 18 12 19 8 23 23 20 23 8 24 10 0 9 25 26 10 6 2 22 7 28 6 27 25 17 3 11 19 17 17 28 16 25 18 4 28 4 27 24 3 19 4 27 6 12 8 17 25 17 8 14 11 17 19 4 16 2 11 19 17 28 24 12 10 23 9 1 13 17 10 12 22 11 12 25 23 24 15 27 25 24 0 23 17 8 11 2 15 3 3 8 27 23 24 10 27 23 4 3 24 1 10 19 20 4 0 0 10 19 14 1 21 21 19 12 8 12 10 27 21 16 2 6 4 7 6 7 2 10 19 |
71 | 37548ms | 41925 | 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 | 18 6 2 27 2 11 15 0 22 17 4 28 23 13 28 18 13 13 22 0 18 16 2 0 10 7 24 28 29 2 6 4 14 16 27 6 10 8 2 16 18 20 6 29 8 19 3 15 28 14 24 16 24 15 20 19 11 9 22 25 9 0 7 20 3 25 5 14 17 25 18 12 4 9 23 23 8 23 8 22 10 0 9 25 29 10 6 5 27 25 28 19 25 11 0 3 28 6 0 28 28 15 25 18 4 24 29 24 22 3 19 29 27 25 11 8 28 7 17 8 9 11 17 19 9 22 23 11 19 17 28 16 12 20 23 9 3 3 0 10 25 27 11 25 25 2 16 16 27 25 0 0 20 0 20 11 5 15 13 13 13 0 10 0 5 24 2 4 3 16 5 10 14 14 9 2 27 14 9 10 5 15 16 19 12 8 28 23 28 2 16 2 6 4 7 12 7 15 10 6 |
模拟退火(Simulated Annealing)
模拟退火是克服爬山缺点的有效方案,其基本思想是在系统能量减小的趋势这样一个变化过程中,偶尔允许系统跳到能量较高的状态,以避开局部极小点,最终稳定到全局最小点。
基本步骤
- 随机挑选一单元k,并给他一个随机的位移,求出系统因此而产生的能量变化 Δ E k \Delta E_k ΔEk。
- 若 Δ E k ≤ 0 \Delta E_k≤0 ΔEk≤0,该位移可采纳,而变化后的系统状态可作为下次变化的起点;若 Δ E k > 0 \Delta E_k>0 ΔEk>0,位移后的状态可采纳的概率为: p k = e − Δ E k / T p_k = e^{-\Delta E_k/T} pk=e−ΔEk/T,式中T为温度,然后从(0,1)区间均匀分布的随机数中挑选一个数R。若R< P k P_k Pk,则将变化后的状态作为下次的起点,否则将变化前的状态作为下的起点。
- 转第(1)步继续执行,直至达到平衡状态为止。
邻域操作
常见的2-opt邻域操作如下:
插入
取后面某个节点k插入到前面的序列中
交换
随机选择两个节点并进行交换
倒置
随机选择一个区间,并将其中的节点进行倒序
在此题目中,邻域操作方法为:随机选择两个数l,r,此区间中的所有customer进行选择facility。
void neighborOperation(string neighbor) {
int l = rand() % m;
int r = rand() % m;
for(int i=0;i<m;i++) {
if(i>=l && i<r) {
int to = rand() % n;
while(facilities[to].getRemain()-customers[i].getDemand() < 0) {
to = rand() % n;
}
facilities[customers[i].getFacilityID()].setRemain(facilities[customers[i].getFacilityID()].getRemain() + customers[i].getDemand());
customers[i].setFacilityID(to);
facilities[to].setRemain(facilities[to].getRemain()-customers[i].getDemand());
}
}
}
退火过程如下:
void SA() {
int preMinCost = -1;
while(T > 0.001) {
T = 0.99*T;
for(int i=0;i<10 * m;i++) {
customersTemp = customers;
facilitiesTemp = facilities;
neighborOperation("2");
double cost = calcCost();
if(cost <= COST_MIN) {
COST_MIN = cost;
} else {
int r = rand() % (N + 1) * 1.0 /(N + 1);
if(r < exp(-1.0*(cost - COST_MIN)/T)){
COST_MIN = cost;
} else {
customers = customersTemp;
facilities = facilitiesTemp;
}
}
}
// 当相同最小值出现了50此后,默认已经收敛,结束退火过程。
if(preMinCost == COST_MIN) {
count++;
} else {
count=0;
}
if(count == 50) {
break;
}
}
}
控制参数的选取
在此题中,我采用的初始温度为100,降温系数为0.99,终止条件为0.001,其中局部邻域操作次数为10*m。
算法执行结果
Instance | Time | Cost | Facility Open Status | Customer Status |
---|---|---|---|---|
1 | 1022ms | 9725 | 1 1 1 1 1 1 0 1 1 1 | 8 2 1 5 3 0 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 4 9 4 2 5 1 5 0 5 2 5 0 3 9 4 4 3 0 4 1 0 1 5 7 0 4 0 4 5 |
2 | 1006ms | 8341 | 1 1 1 1 1 1 1 1 1 1 | 0 2 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 5 |
3 | 1007ms | 10212 | 1 1 1 1 1 1 1 1 1 0 | 8 2 1 6 3 8 2 4 4 1 4 8 3 2 0 3 4 0 6 7 3 4 6 4 2 5 1 5 0 5 2 6 0 3 4 4 4 3 0 4 1 8 1 5 7 0 4 0 7 5 |
4 | 1011ms | 11680 | 1 1 1 1 1 1 0 0 0 1 | 0 2 1 5 3 0 2 4 4 1 9 0 0 2 0 3 4 0 9 4 3 4 9 4 2 5 1 5 0 5 2 5 0 3 9 4 4 3 3 4 1 0 1 5 4 0 2 3 4 5 |
5 | 1056ms | 9714 | 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 3 0 4 1 8 1 5 7 0 2 0 4 7 |
6 | 1087ms | 8369 | 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 2 0 7 7 |
7 | 1129ms | 10096 | 1 1 1 1 1 0 1 1 1 1 | 8 8 1 6 1 8 2 4 4 1 9 8 3 2 8 3 2 0 9 7 3 8 6 4 2 6 1 1 0 1 2 6 0 3 9 4 4 3 0 4 1 8 1 6 7 0 9 0 4 7 |
8 | 1127ms | 12495 | 1 1 1 1 0 1 1 1 1 1 | 8 8 1 6 1 8 2 9 2 1 9 8 3 2 8 3 2 0 9 7 3 8 6 7 5 5 1 5 0 5 9 6 0 3 9 9 7 3 0 2 1 8 1 5 7 0 2 0 7 7 |
9 | 997ms | 9084 | 1 1 1 1 1 0 1 0 1 1 | 8 8 1 6 1 8 2 4 4 1 9 8 3 2 8 3 2 0 9 4 3 8 6 4 2 6 1 1 0 1 2 6 0 3 9 4 4 3 0 4 1 8 1 6 4 0 2 0 4 4 |
10 | 996ms | 8217 | 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 4 4 4 3 0 4 1 8 1 5 7 0 2 0 4 4 |
11 | 982ms | 9800 | 1 1 1 1 1 0 1 1 1 0 | 8 8 1 6 1 8 2 4 4 1 4 8 3 2 8 3 2 0 6 7 3 8 6 4 2 6 1 1 0 1 2 6 0 3 4 4 7 3 0 4 1 8 1 6 7 0 4 0 4 4 |
12 | 978ms | 11364 | 1 1 1 1 1 0 0 0 1 1 | 8 8 1 9 3 8 2 4 4 1 9 8 3 2 8 3 2 0 9 4 3 8 9 4 2 2 1 1 0 1 2 9 0 3 9 4 4 3 0 4 1 8 1 2 4 0 2 0 4 4 |
13 | 1150ms | 9646 | 1 1 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1 | 0 14 7 7 1 13 3 13 14 3 7 19 1 6 13 3 5 7 1 6 14 5 7 19 6 1 0 1 3 3 13 7 13 0 3 6 3 19 19 13 6 0 5 0 3 5 14 6 19 7 |
14 | 1123ms | 7711 | 0 0 0 1 0 0 1 1 0 0 1 0 1 1 0 1 1 1 0 1 | 16 12 10 10 19 12 17 13 12 17 7 19 19 6 13 3 15 10 17 6 12 15 15 19 6 17 16 17 3 17 13 7 13 16 3 10 3 19 19 13 6 16 15 16 3 13 12 10 19 7 |
15 | 1100ms | 9719 | 0 0 0 1 0 0 1 1 0 0 1 0 0 1 1 1 1 1 0 1 | 16 3 10 10 19 15 17 13 14 17 15 19 19 6 13 3 15 10 17 6 14 15 15 19 6 3 16 17 3 17 13 7 13 16 3 10 3 19 19 13 6 16 15 16 3 13 14 10 19 7 |
16 | 1111ms | 12389 | 1 1 0 1 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 1 | 0 12 10 10 1 15 19 13 12 3 15 19 1 7 13 3 15 7 1 3 12 15 15 19 10 1 0 3 1 3 13 7 13 7 3 10 3 19 19 13 10 0 0 0 3 15 12 10 19 7 |
17 | 1133ms | 9598 | 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 1 0 1 0 1 | 0 12 7 7 1 12 17 13 14 1 15 19 1 6 13 12 15 7 17 6 14 15 15 19 6 17 0 17 1 17 13 7 13 0 1 6 17 19 19 13 14 0 15 0 6 13 14 6 19 7 |
18 | 1156ms | 7928 | 1 1 0 0 0 0 1 1 0 0 1 1 0 1 1 0 0 1 0 1 | 0 1 10 10 1 13 17 13 14 17 7 19 1 6 13 11 14 10 17 6 14 7 7 19 6 17 0 17 1 17 13 7 13 0 1 10 11 19 19 13 6 0 0 7 11 13 14 10 19 7 |
19 | 1127ms | 10536 | 1 0 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 1 1 | 0 12 10 10 19 18 17 18 12 17 15 4 19 10 18 12 15 10 4 8 12 15 15 19 8 17 0 17 12 17 18 7 18 0 17 10 8 19 19 18 8 0 15 0 8 15 12 10 19 7 |
20 | 1112ms | 13236 | 0 0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 1 0 1 1 | 16 14 10 10 19 18 4 18 14 4 7 19 19 10 2 14 5 10 4 9 14 5 7 2 9 4 16 4 19 4 2 7 2 16 19 10 9 19 19 2 10 16 5 16 9 5 14 7 19 7 |
21 | 1098ms | 10509 | 1 1 1 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 1 0 | 0 12 10 10 1 18 1 18 14 1 5 1 1 10 2 12 5 10 1 9 12 5 5 2 9 1 0 1 1 12 2 14 2 0 12 10 12 18 2 2 10 0 5 0 9 5 14 10 2 5 |
22 | 1095ms | 8181 | 1 1 0 1 0 1 1 1 0 0 1 0 0 1 0 0 0 1 0 1 | 0 1 10 10 1 13 17 13 7 17 7 19 1 6 13 3 5 10 17 6 1 5 7 19 6 17 0 17 1 17 13 7 13 0 3 10 3 19 19 13 6 0 5 0 3 5 7 10 19 5 |
23 | 1133ms | 10366 | 1 0 1 1 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 1 | 0 3 10 10 19 14 17 2 14 17 7 19 19 6 2 3 5 10 17 6 14 5 7 19 6 17 0 17 3 17 2 7 2 0 3 10 3 19 19 2 6 0 5 0 3 5 14 10 2 5 |
24 | 1106ms | 12573 | 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 1 1 | 16 14 16 16 18 18 11 18 14 11 15 19 19 6 18 11 15 14 11 6 14 15 15 19 6 19 16 11 19 19 18 15 18 16 11 6 11 19 19 18 6 16 5 16 11 5 14 6 19 5 |
25 | 7206ms | 15907 | 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 0 0 | 13 25 13 14 20 5 2 24 2 17 5 8 8 20 17 8 14 17 25 11 19 0 9 19 5 8 19 24 5 24 5 25 20 11 20 20 24 24 7 14 0 8 24 8 24 14 0 20 27 8 25 14 14 5 13 20 2 27 0 14 0 5 20 11 11 25 9 0 5 5 20 13 5 17 24 8 5 20 2 9 20 17 20 0 0 17 0 7 20 5 2 24 0 11 7 5 2 19 25 13 20 17 14 25 2 5 7 11 14 8 14 14 2 11 11 7 24 9 11 24 5 20 25 20 8 7 5 9 11 11 0 7 24 27 8 14 7 25 20 17 0 14 20 2 8 27 11 5 17 7 |
26 | 7187ms | 13660 | 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 | 8 11 13 2 20 5 2 5 14 17 24 20 8 20 17 14 14 17 5 0 2 27 2 17 24 8 2 24 5 9 29 11 13 27 20 20 24 24 7 14 0 14 24 8 24 14 7 20 27 8 5 14 14 5 13 20 14 27 0 14 0 5 20 11 0 11 9 0 29 9 20 20 11 17 24 8 24 20 14 9 20 17 20 0 7 17 17 0 20 29 2 24 17 11 7 24 2 14 29 13 20 17 14 0 2 29 7 11 14 8 14 14 0 11 11 27 24 24 24 24 5 20 11 20 20 11 5 24 7 5 0 11 24 29 8 14 0 5 20 0 0 8 20 2 20 11 11 11 14 7 |
27 | 7156ms | 16667 | 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 0 0 | 20 25 8 14 13 5 2 24 8 17 5 8 14 20 7 14 14 17 11 11 7 7 5 19 5 8 19 24 5 24 5 25 8 25 20 20 5 27 11 14 0 14 24 20 24 14 19 13 11 8 5 14 14 5 20 20 17 5 7 17 0 5 20 25 11 25 24 0 5 24 13 13 11 7 5 8 24 20 14 24 13 7 20 17 2 17 2 17 20 5 14 24 17 0 7 5 14 2 25 8 20 7 14 11 2 5 7 11 20 8 14 14 17 11 11 25 24 24 11 24 5 8 25 20 20 7 5 24 0 25 0 11 24 24 8 14 17 5 20 0 0 8 20 14 8 27 25 5 0 7 |
28 | 7124ms | 19817 | 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 | 13 11 13 17 13 5 19 24 14 0 25 8 8 20 19 14 14 17 0 11 19 2 5 2 5 8 2 24 24 24 25 11 13 25 20 20 24 24 7 14 0 14 24 8 24 14 11 20 11 8 25 14 14 5 20 20 14 11 0 20 0 5 20 0 11 11 24 0 5 24 13 13 11 0 24 8 9 20 14 9 13 0 20 17 2 17 0 7 20 9 2 24 7 25 7 5 14 14 25 20 8 0 14 25 2 11 17 11 14 28 17 2 17 11 11 5 24 9 24 5 5 28 25 20 8 11 5 9 17 5 0 11 24 9 28 14 7 5 20 17 0 8 20 14 8 5 25 5 2 7 |
29 | 7139ms | 18191 | 1 0 1 0 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 1 | 20 0 14 2 13 5 7 24 14 17 24 8 8 20 19 14 14 17 5 11 2 0 29 17 5 8 19 24 24 9 5 25 20 11 20 20 24 15 7 14 0 14 15 10 24 14 0 13 11 8 5 2 14 5 13 20 2 29 0 14 0 5 20 11 17 25 9 0 25 9 13 8 11 17 24 8 29 20 14 24 13 7 20 17 2 17 2 7 8 5 2 24 17 11 0 5 2 2 11 20 20 7 14 11 2 5 17 25 8 8 14 19 2 0 11 11 24 15 24 5 5 20 25 20 13 25 5 9 0 5 0 0 24 9 8 14 17 25 20 17 0 8 13 17 8 25 11 5 2 10 |
30 | 7165ms | 15881 | 1 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 0 | 13 11 13 14 13 5 2 24 17 17 24 8 8 20 17 8 14 0 25 11 2 7 5 17 25 8 19 24 9 9 25 25 13 25 20 20 24 9 11 14 0 14 9 28 24 14 7 20 27 8 27 19 14 5 20 20 2 0 11 14 0 5 20 0 11 11 9 0 24 9 20 13 0 17 24 20 24 20 19 24 13 7 13 17 19 17 7 2 20 25 17 24 17 27 0 9 2 2 25 13 8 7 14 25 19 11 0 11 14 28 14 2 2 11 11 27 24 24 24 24 5 28 25 13 8 17 11 9 0 5 0 11 5 5 8 14 17 25 13 17 0 8 20 14 8 11 11 5 17 10 |
31 | 7205ms | 18631 | 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 | 13 25 13 2 13 5 2 5 28 17 5 8 20 20 2 14 14 17 25 11 2 11 24 7 24 8 2 24 5 24 29 25 8 11 20 8 24 24 11 14 0 20 24 10 5 14 17 13 11 8 29 14 14 5 13 20 14 25 11 14 0 24 20 0 0 25 11 0 29 25 20 13 11 0 24 8 5 20 2 5 20 7 20 17 2 17 2 0 20 25 2 24 17 11 7 5 2 0 25 20 8 17 17 0 0 29 7 11 8 28 17 14 2 11 11 25 24 24 11 5 5 28 25 20 8 17 5 24 11 5 0 25 24 29 8 14 7 25 20 17 0 28 13 14 8 25 25 5 2 10 |
32 | 7131ms | 23058 | 1 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 | 13 0 13 0 13 5 17 11 14 17 9 20 8 8 17 8 14 17 5 11 14 7 9 2 9 8 2 11 25 9 25 11 8 25 20 20 0 9 17 14 0 14 9 10 9 14 11 13 27 8 29 28 14 5 8 20 14 11 11 14 0 5 20 11 11 25 9 0 9 29 8 13 11 0 9 20 9 20 2 9 20 7 8 17 2 17 2 0 20 25 14 9 17 11 17 5 2 28 27 28 28 7 14 0 2 25 11 11 8 28 14 14 2 11 25 27 5 9 5 5 5 28 11 20 13 25 5 5 7 27 0 11 5 29 28 14 17 29 20 17 0 8 20 14 8 27 0 5 17 10 |
33 | 7174ms | 14745 | 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 | 20 11 8 2 14 5 2 24 8 0 24 8 8 20 14 14 14 17 5 11 2 0 5 17 24 8 17 24 5 24 5 5 8 25 20 8 24 24 11 14 0 14 24 20 24 14 17 20 27 14 5 14 14 5 8 20 2 25 11 17 0 5 20 25 11 11 24 0 5 24 20 20 11 17 24 8 24 20 2 5 20 17 8 17 17 17 2 7 20 11 2 24 17 11 7 24 2 17 27 20 20 17 17 25 2 25 17 11 14 8 17 14 2 11 25 27 24 24 5 24 5 8 11 20 20 0 25 24 7 25 0 27 5 11 8 17 7 11 20 17 0 8 20 17 8 27 25 5 2 7 |
34 | 7095ms | 13701 | 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 1 1 0 | 8 11 13 2 13 5 2 24 28 17 5 8 8 20 7 14 17 17 5 11 14 0 5 17 5 8 2 5 5 24 5 11 13 25 20 20 24 15 17 14 17 14 15 28 24 14 0 20 27 8 5 14 14 5 13 20 17 27 11 14 0 5 20 0 11 25 24 0 5 24 20 13 11 17 24 8 15 20 14 24 13 7 20 17 17 17 17 17 20 5 17 24 17 11 7 24 2 17 25 20 8 17 14 11 0 5 17 11 14 28 14 17 2 11 11 25 24 15 24 24 11 14 27 20 20 7 5 15 0 27 0 11 24 5 8 14 7 5 8 0 17 8 20 14 8 25 5 5 0 7 |
35 | 7064ms | 16654 | 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 | 8 11 20 14 20 5 19 24 14 17 9 20 14 20 17 14 14 17 5 11 14 0 24 17 5 8 19 24 5 24 25 25 13 11 14 8 24 24 0 14 17 8 24 14 24 14 0 13 11 8 11 2 14 5 13 20 17 25 0 14 0 5 20 25 11 11 24 0 24 24 20 20 11 7 24 8 9 20 14 9 13 7 20 17 19 17 17 7 20 24 2 24 17 25 7 9 14 19 11 20 28 17 17 11 19 25 17 11 28 28 14 14 2 11 11 11 24 5 24 24 5 8 11 13 8 17 5 9 7 25 0 11 24 5 8 14 0 5 20 17 0 8 20 17 8 11 25 5 17 7 |
36 | 7085ms | 19722 | 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 0 | 20 25 8 2 20 5 17 24 8 17 9 20 8 20 19 14 14 0 5 11 2 17 24 17 5 8 2 24 24 24 25 11 16 25 20 20 24 24 25 14 0 8 24 8 24 2 0 20 27 8 27 2 17 5 16 20 17 11 0 14 0 5 20 11 11 11 24 0 9 5 20 20 11 17 24 8 24 20 19 24 20 7 20 17 0 17 17 7 20 5 2 9 17 11 17 24 2 2 25 16 8 17 17 11 2 25 7 11 2 14 14 2 2 11 11 27 24 24 5 24 5 16 25 20 20 0 5 9 0 27 0 27 24 5 8 14 7 25 20 17 0 8 20 14 14 25 25 5 2 7 |
37 | 7053ms | 16043 | 1 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 | 20 25 13 2 8 5 19 24 14 17 5 8 20 20 19 14 14 17 5 11 2 0 24 17 29 8 17 24 24 24 29 11 13 11 20 8 24 24 17 2 11 14 24 20 24 14 4 20 27 8 29 2 14 5 20 20 17 11 27 14 0 24 20 27 11 0 25 0 29 5 13 20 11 17 24 14 24 20 14 24 20 0 20 17 2 17 17 17 20 5 17 24 17 11 17 25 2 2 27 8 8 2 17 25 19 25 0 0 14 14 14 14 2 11 11 25 24 24 24 24 11 8 25 20 20 0 5 5 11 27 0 17 24 5 14 14 4 29 20 17 17 8 20 14 8 27 25 5 14 4 |
38 | 7077ms | 14091 | 1 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 1 1 | 20 27 13 2 20 11 2 24 14 17 5 20 8 20 0 14 17 17 25 11 14 0 29 17 5 8 2 24 5 5 5 25 13 27 20 13 5 5 17 14 0 14 24 8 24 14 11 13 27 8 5 14 14 5 13 20 17 27 11 14 0 24 20 27 0 11 24 0 27 24 20 20 5 17 24 20 5 20 28 24 20 17 13 17 17 17 2 0 20 5 2 24 2 27 2 5 14 2 27 13 28 17 17 11 2 25 17 17 28 14 14 17 2 11 11 29 5 24 24 24 5 8 25 20 8 11 5 24 0 5 0 0 24 29 28 14 4 5 20 17 0 28 20 14 8 11 25 5 2 4 |
39 | 7111ms | 17034 | 1 0 1 0 1 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 | 20 11 20 14 13 5 14 5 14 17 5 8 28 13 17 8 14 0 25 11 14 7 5 17 5 8 17 5 5 24 24 25 13 11 20 20 5 24 7 14 0 14 24 13 24 14 7 20 11 8 5 14 14 5 20 20 2 11 0 17 0 24 20 11 11 11 24 0 24 24 8 20 5 17 24 8 25 20 14 24 20 7 20 17 2 17 17 17 20 5 2 24 17 0 17 24 2 17 11 20 8 17 17 25 2 11 7 11 14 8 0 28 2 11 25 25 24 24 24 24 5 28 11 13 20 4 5 5 11 5 0 11 24 24 8 14 17 5 20 17 0 28 13 14 14 25 25 5 2 4 |
40 | 7167ms | 19447 | 1 0 1 0 1 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 | 20 25 13 2 20 5 17 24 14 17 5 20 8 20 17 14 14 17 25 11 2 7 24 2 25 8 2 5 25 24 25 11 14 25 20 8 24 24 0 14 0 14 24 8 24 14 11 13 27 8 5 14 14 5 13 20 17 11 0 14 17 5 20 25 11 11 5 0 5 5 13 20 5 0 24 8 24 20 14 24 20 7 20 17 17 17 17 0 20 5 2 24 17 0 17 24 2 4 27 13 20 17 17 25 2 11 7 25 17 8 14 14 2 11 25 2 24 5 24 24 5 20 11 13 13 7 5 24 0 25 0 11 24 5 8 14 4 5 20 17 0 8 20 2 8 27 25 5 0 4 |
41 | 2674ms | 7198 | 1 1 1 1 1 1 1 1 0 1 | 5 6 4 1 7 9 3 7 5 3 4 6 2 6 2 7 7 3 0 6 6 1 4 1 6 5 5 4 5 5 5 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 3 3 3 0 0 1 5 0 6 6 6 4 4 0 4 4 0 7 7 2 2 6 5 7 2 2 7 9 9 9 2 9 4 |
42 | 2289ms | 7256 | 1 1 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 1 1 | 12 10 3 14 19 18 1 3 1 1 8 18 19 10 19 0 0 12 14 14 10 4 14 8 12 8 4 12 12 4 1 19 19 8 14 10 10 0 0 0 1 3 3 8 8 14 8 19 0 19 1 1 1 4 3 14 3 10 14 14 3 3 4 3 3 3 0 0 19 19 10 18 19 19 19 18 18 18 19 4 |
43 | 2025ms | 7283 | 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 | 27 22 12 24 3 22 9 22 27 27 24 28 3 22 12 4 22 22 12 1 9 9 22 22 22 3 27 12 27 4 29 28 24 3 22 22 1 1 12 12 4 1 28 24 24 3 3 22 9 4 22 9 9 4 12 12 22 22 24 29 29 1 1 29 27 29 28 27 28 4 |
44 | 2688ms | 7236 | 1 1 1 1 1 1 1 1 1 1 | 4 4 4 4 4 4 4 4 0 0 6 0 0 0 0 0 1 1 1 7 6 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 4 0 1 1 2 8 7 5 9 7 7 6 5 5 8 8 7 7 9 5 5 5 9 3 0 6 6 8 1 0 4 9 9 7 7 8 6 6 5 8 7 9 7 9 9 9 6 5 7 4 |
45 | 2325ms | 7305 | 1 0 0 1 1 1 1 0 0 1 0 1 1 1 0 1 0 0 0 1 | 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 3 3 3 3 3 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 0 0 3 3 11 12 13 5 19 3 15 19 13 13 11 19 13 19 5 15 9 9 12 9 15 13 13 13 12 12 9 9 19 12 13 13 11 11 11 11 9 4 |
46 | 2064ms | 7161 | 1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 | 0 0 0 0 0 0 0 11 11 11 11 11 11 11 11 3 3 3 3 3 3 4 4 6 6 6 6 8 16 8 8 16 16 8 0 3 3 6 14 28 28 12 3 28 14 14 14 26 16 28 16 26 8 11 3 26 16 28 26 14 12 12 28 28 26 14 14 26 12 4 |
47 | 2750ms | 6661 | 1 1 1 1 1 1 1 1 1 1 | 0 0 0 0 2 0 0 0 2 0 2 1 1 1 2 1 1 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 0 7 7 7 7 7 7 7 8 8 8 8 6 6 8 9 0 9 9 9 9 9 5 |
48 | 2275ms | 6802 | 1 1 1 0 1 1 1 0 1 1 0 0 0 1 0 1 0 1 0 0 | 0 0 0 0 1 0 0 1 1 2 2 2 2 2 2 4 4 5 5 4 5 5 5 5 6 6 6 6 6 6 6 8 8 9 8 9 8 8 9 9 9 9 9 13 8 8 9 9 13 13 13 13 13 13 13 15 15 13 15 13 0 15 15 15 15 17 17 17 17 17 17 17 17 17 17 17 0 17 0 4 |
49 | 2009ms | 7516 | 1 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 | 0 0 0 4 0 0 0 0 4 7 4 4 7 7 7 7 7 7 7 7 7 7 11 11 11 11 11 12 12 14 12 14 14 14 14 14 18 18 18 18 18 12 19 19 18 19 18 18 25 18 25 18 0 25 25 18 25 26 25 26 25 25 25 26 27 27 27 27 27 4 |
50 | 3161ms | 9471 | 1 1 1 1 1 1 1 1 0 1 | 3 6 3 0 2 1 5 5 3 7 7 4 6 9 0 9 2 2 5 3 6 6 0 4 0 0 7 4 4 7 7 7 3 3 3 5 9 9 0 6 6 9 9 9 5 5 5 5 5 3 3 5 6 0 0 0 6 6 1 2 2 7 7 7 3 3 0 4 7 7 3 6 6 0 0 4 3 3 3 4 3 5 2 2 2 2 9 7 2 7 9 1 1 2 1 1 1 1 1 4 |
51 | 3277ms | 10334 | 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 | 7 6 17 10 16 13 5 16 15 5 5 14 6 13 6 13 12 5 5 15 0 0 10 14 14 14 15 17 15 7 1 1 17 15 15 5 13 13 10 0 0 13 13 13 12 5 5 2 5 17 15 2 6 14 10 0 6 6 4 12 13 2 1 5 15 15 10 17 7 7 15 0 0 0 10 17 17 15 17 10 15 5 16 12 12 13 6 2 2 1 13 13 13 13 6 13 13 12 13 4 |
52 | 3307ms | 9882 | 0 1 0 1 1 1 1 1 1 1 | 7 7 7 7 7 7 7 7 3 4 4 4 3 4 4 4 4 8 8 8 8 3 3 8 3 5 9 9 9 9 5 5 9 9 6 6 6 6 6 6 6 6 6 6 7 7 4 3 8 5 5 3 4 6 7 5 3 3 3 4 6 9 5 5 3 3 9 7 4 7 6 6 4 3 3 5 3 4 7 1 6 3 8 5 5 3 3 7 5 3 9 5 9 1 5 1 3 4 3 5 |
53 | 3330ms | 10573 | 0 1 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 1 | 5 5 5 5 5 5 5 5 19 19 19 7 19 7 7 7 7 12 13 13 13 13 3 13 12 15 9 9 9 9 9 9 9 15 18 18 18 18 18 18 18 18 18 5 5 5 7 12 13 15 15 3 7 18 5 15 3 3 1 7 18 9 9 12 3 12 9 18 7 18 17 18 7 3 3 15 3 7 5 2 18 19 12 15 15 3 1 7 15 3 2 2 17 17 2 17 1 7 1 5 |
54 | 3434ms | 9470 | 1 0 1 1 1 1 1 0 1 1 | 9 2 2 9 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 2 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 6 8 8 8 6 8 8 6 8 8 6 3 3 6 6 6 6 6 6 8 6 6 5 5 6 5 5 5 6 6 0 0 6 0 5 9 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 4 9 9 9 4 9 9 6 |
55 | 3367ms | 9353 | 0 0 1 0 0 0 1 1 1 1 1 0 0 1 1 1 0 1 1 0 | 17 18 18 18 17 8 17 2 8 2 8 8 2 8 2 8 2 2 2 6 6 2 2 6 14 6 6 6 6 6 6 14 6 6 6 6 6 6 6 7 7 7 10 7 10 7 10 7 14 7 7 14 7 7 7 7 10 7 7 7 7 7 13 7 9 7 7 10 7 13 9 7 9 9 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 6 |
56 | 11723ms | 27806 | 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 | 7 19 21 18 21 12 21 28 22 28 29 17 13 1 19 18 1 20 22 0 27 16 5 2 23 18 27 17 29 2 19 19 4 16 28 6 20 20 16 15 18 9 6 29 8 26 13 21 19 14 2 16 0 21 9 6 11 9 18 25 29 0 7 8 13 25 5 14 28 25 18 12 19 9 23 23 20 23 20 16 10 0 26 7 29 13 19 5 27 25 28 6 7 25 2 13 27 6 17 11 28 15 25 18 19 2 29 21 22 13 19 4 18 12 12 8 28 7 14 8 9 11 17 19 9 16 2 6 26 17 11 16 11 20 23 9 1 13 0 23 6 22 11 11 25 2 21 21 27 25 27 17 10 0 8 11 2 15 8 13 13 27 10 2 23 27 5 29 1 15 1 8 28 10 26 0 0 23 29 10 5 21 2 19 12 9 28 20 0 21 2 21 6 6 7 6 7 21 10 15 |
57 | 11720ms | 33957 | 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 | 18 6 21 27 2 12 15 11 22 0 4 28 13 1 28 18 1 20 22 0 27 21 1 24 10 18 27 17 26 2 19 19 26 24 27 6 20 20 27 15 18 8 6 4 8 19 13 21 19 20 24 24 24 21 8 6 25 8 18 25 4 2 7 20 13 11 10 14 28 12 18 12 6 8 10 23 20 23 8 27 10 17 20 25 4 10 6 2 27 25 28 6 25 7 2 1 11 6 0 28 28 15 25 18 4 17 4 24 22 23 14 4 27 12 11 8 28 7 14 8 26 11 17 19 26 21 2 12 26 17 17 24 11 10 13 20 1 13 28 14 12 22 28 25 25 23 24 21 27 25 24 17 23 28 8 11 2 15 13 8 13 27 23 2 23 27 23 4 1 15 1 20 19 10 26 2 24 10 4 10 2 21 21 6 12 8 11 23 17 21 2 21 6 26 7 25 7 15 10 15 |
58 | 11914ms | 48724 | 1 0 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 1 0 | 18 19 2 18 2 12 15 28 24 0 4 28 20 13 28 11 13 10 24 0 18 24 23 24 10 11 18 28 4 2 19 19 6 16 24 12 20 20 24 21 11 9 6 4 20 19 13 15 6 10 24 16 24 16 8 12 11 9 18 25 4 0 25 20 13 11 23 19 28 25 18 12 6 9 10 23 20 10 8 16 10 0 8 25 4 10 19 2 24 11 28 6 25 25 2 3 11 6 0 17 28 15 25 18 4 24 4 21 16 3 19 4 18 12 12 8 28 25 17 8 9 11 17 19 9 16 21 11 4 17 11 21 11 10 23 9 3 20 28 10 11 18 19 25 25 2 24 15 0 25 0 17 23 17 13 19 2 15 3 13 3 0 13 24 23 0 23 4 13 15 23 20 28 20 9 2 0 20 4 10 2 21 21 28 12 8 28 23 17 21 2 16 19 4 25 12 25 15 10 15 |
59 | 11799ms | 36705 | 0 0 1 0 1 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 | 18 6 24 27 21 6 15 11 27 17 26 28 13 13 28 11 23 10 27 27 18 2 2 21 13 18 24 19 4 2 19 4 4 21 27 6 20 9 24 15 18 9 6 4 8 19 13 21 19 20 24 21 2 21 20 6 18 26 18 25 9 17 18 9 13 11 23 14 28 28 18 6 19 20 23 23 20 17 20 24 23 17 26 25 26 13 19 23 27 25 17 6 11 25 2 13 28 6 10 28 14 15 11 18 4 27 4 27 18 8 19 4 27 6 25 8 11 18 17 8 20 11 28 19 26 24 15 11 26 17 28 24 25 20 23 9 13 13 28 14 6 27 28 11 25 2 24 15 27 25 24 17 23 17 8 11 23 15 13 13 13 28 10 24 10 28 2 4 13 21 23 8 19 14 26 2 24 23 4 10 21 15 24 19 11 8 28 23 28 2 21 21 6 4 25 25 25 21 10 15 |
60 | 11574ms | 26678 | 1 1 1 0 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 | 7 19 21 24 5 12 21 27 22 27 4 28 13 23 28 18 1 8 22 27 18 16 5 24 10 18 27 19 29 5 4 19 4 16 27 6 20 8 24 21 18 9 6 4 8 26 13 21 19 14 24 16 24 16 8 6 18 8 18 25 29 0 25 8 13 11 5 14 28 25 18 12 19 8 23 13 20 23 8 16 10 0 9 25 29 13 6 5 27 7 17 19 11 11 0 13 11 6 0 28 28 16 25 18 4 24 4 24 22 13 14 29 27 6 12 8 28 7 17 8 9 25 28 19 26 24 2 11 26 17 28 24 25 14 23 9 1 20 28 14 12 22 11 11 25 5 24 21 18 7 24 0 10 0 8 11 2 16 13 13 13 0 10 2 5 27 5 29 1 21 23 10 19 14 4 2 24 10 4 10 5 21 2 19 12 8 11 23 0 21 2 21 6 29 7 11 7 2 10 10 |
61 | 11639ms | 33348 | 1 0 1 1 0 0 1 1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 | 27 6 21 27 2 12 15 27 22 28 6 28 13 13 28 7 3 20 22 0 27 21 10 24 10 27 27 19 29 2 26 26 26 21 24 6 14 20 24 15 7 26 6 26 20 19 13 21 14 14 24 24 24 24 20 6 11 26 22 7 26 0 7 20 3 25 2 14 28 25 25 12 19 14 23 23 20 23 20 24 10 0 26 25 29 10 6 2 24 7 17 6 25 25 0 3 11 6 0 28 28 15 11 7 26 0 29 24 22 3 19 29 27 12 25 13 28 7 14 20 14 11 17 19 26 21 2 28 26 17 28 21 25 20 13 14 3 3 28 20 12 22 11 25 25 23 24 15 22 25 24 10 23 0 3 28 21 15 3 3 13 0 10 0 23 27 13 29 3 21 13 20 19 14 19 2 0 10 29 23 23 21 2 6 11 20 28 23 0 21 24 15 6 29 7 11 25 15 10 10 |
62 | 11660ms | 49149 | 1 1 0 0 0 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 | 18 19 21 27 23 12 15 28 27 28 29 17 10 1 28 18 1 10 16 0 27 15 5 0 10 18 27 19 29 21 6 26 26 15 27 19 20 8 27 16 18 8 6 29 8 26 8 21 19 14 0 16 21 16 8 12 27 8 25 25 29 0 18 8 8 11 5 14 17 25 18 12 6 20 23 23 14 23 8 16 23 0 26 25 29 10 6 5 27 25 28 6 25 12 0 1 11 6 0 28 17 21 25 25 29 0 29 16 27 1 19 26 27 11 11 20 28 25 28 8 26 11 17 6 26 16 5 11 19 17 11 16 11 10 1 8 8 1 28 14 12 27 11 25 25 5 27 15 27 25 27 17 10 0 20 11 5 15 8 20 23 28 10 21 5 27 23 26 1 21 5 20 19 14 29 21 27 20 29 10 5 21 21 19 12 8 6 23 17 21 21 21 6 29 25 11 25 21 20 10 |
63 | 11839ms | 37548 | 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 | 7 6 2 16 2 12 2 28 18 0 4 28 13 1 6 18 10 8 27 0 11 16 5 24 10 18 27 19 4 21 19 19 4 16 18 12 20 8 24 21 18 14 12 4 20 6 13 21 19 14 24 16 24 16 8 19 11 19 18 25 4 0 18 8 13 11 2 14 28 25 7 12 19 8 5 23 20 5 8 16 10 0 8 25 4 13 6 5 27 7 28 11 25 25 0 1 11 6 0 28 28 16 12 18 4 0 4 24 24 1 14 4 18 12 11 8 28 25 0 8 14 25 17 19 6 16 2 12 19 0 11 24 25 20 23 8 1 13 28 23 12 27 11 11 25 2 24 16 27 25 24 17 23 0 8 11 2 16 13 13 13 27 10 0 5 27 5 4 1 21 5 20 19 14 4 21 0 10 4 10 23 21 24 19 12 8 28 10 0 21 2 21 6 4 7 12 7 2 10 10 |
64 | 11619ms | 26713 | 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 | 18 19 2 22 5 25 21 28 22 28 4 17 10 13 19 18 3 10 22 0 11 21 2 24 23 18 24 19 29 2 19 19 19 16 17 6 20 8 24 16 18 26 19 4 8 26 20 16 19 20 24 16 2 21 20 6 11 26 18 7 29 0 7 8 3 11 5 17 19 25 18 12 6 8 23 23 20 0 20 16 10 0 26 25 29 10 6 5 22 25 28 6 12 25 2 13 28 12 0 17 28 21 25 7 29 24 29 24 22 3 19 29 22 12 12 8 28 25 0 8 26 11 17 19 26 16 2 11 26 0 28 24 25 20 23 20 3 3 17 20 11 22 11 25 25 5 24 16 18 25 24 17 23 0 13 28 2 16 8 13 13 28 10 2 5 18 23 4 3 24 23 8 19 10 26 21 0 20 29 23 5 21 2 6 12 8 11 23 0 21 2 21 19 4 7 12 7 21 23 7 |
65 | 11581ms | 34217 | 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 | 18 19 21 24 2 12 21 27 27 28 26 28 20 13 28 18 13 20 24 0 18 16 5 24 23 27 24 19 4 5 6 19 4 16 28 6 8 8 24 16 18 26 6 26 3 19 3 21 6 14 16 16 24 16 8 12 11 26 18 11 26 2 7 8 13 11 5 14 28 25 18 12 19 8 23 23 20 23 8 16 10 17 26 25 4 13 19 5 27 18 28 6 25 25 17 3 11 6 0 28 19 21 25 18 4 0 4 24 24 3 19 4 27 25 12 13 17 7 0 8 26 11 17 19 19 16 21 6 26 17 11 24 25 8 23 8 3 3 28 10 12 27 11 11 25 5 24 21 27 11 27 17 23 0 8 28 5 16 3 13 13 18 10 24 5 27 2 4 3 21 23 20 19 14 26 2 27 10 4 23 23 21 2 6 12 8 28 13 17 21 2 21 6 4 7 12 7 2 13 7 |
66 | 11690ms | 50855 | 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 | 18 28 21 27 2 12 2 28 22 28 4 28 10 1 28 7 1 20 22 0 27 24 5 24 10 18 24 19 4 2 19 19 4 21 28 6 20 8 24 24 18 20 6 4 8 19 8 21 6 10 24 24 24 22 8 19 25 26 22 25 4 2 7 8 10 11 23 14 28 25 18 25 19 20 10 23 8 23 8 24 23 0 26 25 4 23 19 5 18 7 28 6 25 25 0 8 27 6 0 28 28 21 25 7 4 2 4 27 22 1 26 4 27 12 12 8 28 7 10 8 14 11 0 19 26 21 2 12 4 17 28 21 25 20 23 26 1 1 28 10 12 18 28 12 25 5 24 21 22 25 27 17 23 0 20 28 2 21 8 1 1 27 10 24 5 27 5 4 1 2 5 20 17 14 26 2 0 8 4 14 5 21 24 6 12 8 28 23 0 24 2 21 6 19 7 12 7 21 20 7 |
67 | 11669ms | 37684 | 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 | 18 19 2 27 2 12 16 18 27 27 4 28 13 1 28 18 1 10 27 27 24 16 23 27 10 18 27 19 4 2 19 19 4 16 27 6 20 8 0 16 18 8 19 4 8 19 13 16 19 20 24 16 24 16 20 6 11 14 18 7 4 0 7 14 13 11 0 14 28 25 7 6 6 14 23 23 20 23 20 16 10 0 8 25 4 13 19 5 27 25 28 6 11 25 2 13 27 6 0 28 19 16 25 18 4 0 4 24 27 13 19 4 27 12 12 8 11 7 17 8 10 25 17 19 4 16 21 11 4 17 12 21 11 10 23 8 1 13 28 14 11 27 11 25 25 5 24 16 18 25 24 17 23 0 8 11 5 16 13 13 13 17 10 24 23 27 5 4 23 21 1 20 19 10 4 2 17 10 4 10 5 21 24 19 12 8 28 23 0 2 2 21 6 6 7 12 7 21 20 10 |
68 | 11665ms | 26741 | 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 1 1 1 1 0 | 18 19 24 22 2 12 15 28 22 28 4 28 13 1 19 18 1 20 22 0 18 24 5 27 10 27 27 19 4 2 19 26 19 16 27 6 20 9 27 16 18 9 6 4 20 26 3 2 14 14 24 16 0 16 8 6 25 9 22 7 4 0 7 8 13 25 0 14 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 4 10 4 5 27 7 28 19 7 25 2 3 11 12 0 28 28 15 12 18 4 0 4 16 22 3 19 4 27 12 12 20 28 7 17 8 26 11 28 4 26 16 2 12 26 0 27 24 25 20 23 9 3 3 28 14 12 27 28 11 25 23 27 16 27 11 24 17 23 0 8 11 2 15 13 13 13 27 10 2 23 27 5 4 1 16 1 8 28 14 26 5 0 20 19 10 2 15 2 19 11 8 11 23 17 24 0 15 6 4 7 12 7 15 10 9 |
69 | 12052ms | 33992 | 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 | 18 19 2 27 5 12 21 27 18 11 4 28 10 13 6 18 23 8 22 0 18 24 23 24 23 18 27 19 4 2 19 19 19 16 27 6 20 8 24 21 7 9 6 26 20 19 8 21 19 10 27 24 0 16 8 6 11 9 22 7 4 0 7 9 20 11 23 10 6 25 7 12 19 9 10 23 20 23 8 24 23 0 26 25 4 13 19 2 27 7 11 6 25 25 2 20 28 6 2 28 28 21 12 7 4 0 4 22 22 20 26 4 27 11 12 20 28 18 10 8 20 11 28 19 26 16 2 11 4 0 28 21 11 20 23 20 13 13 0 10 6 22 11 25 25 5 16 21 27 25 24 10 10 0 20 11 2 16 13 13 13 27 10 24 5 27 5 19 13 21 5 20 28 20 26 2 27 10 26 10 5 2 24 19 12 8 27 23 0 21 2 21 4 4 7 12 7 2 10 9 |
70 | 11963ms | 47866 | 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 | 22 6 2 18 2 12 16 11 22 28 9 28 23 3 6 18 3 20 27 28 18 16 5 0 23 27 22 14 19 2 19 19 26 16 27 6 20 9 16 16 25 9 6 26 8 19 3 16 19 14 27 16 0 16 8 6 11 9 18 25 26 0 25 8 20 11 5 14 19 25 27 11 6 9 23 23 20 23 8 16 23 5 9 25 26 20 19 5 27 25 28 19 25 25 2 3 18 6 17 28 28 16 25 18 6 2 26 16 22 3 19 26 27 12 12 8 11 11 17 8 9 11 14 19 26 16 0 12 26 0 11 16 12 20 5 8 3 3 17 23 12 22 11 18 25 5 27 2 18 25 0 17 23 17 8 11 5 16 3 3 3 0 23 2 23 27 5 26 3 2 5 20 28 14 26 2 0 14 26 23 2 16 2 28 6 8 28 23 17 16 2 2 6 19 25 11 25 2 23 9 |
71 | 11776ms | 37584 | 1 0 1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 | 27 19 2 27 2 12 2 27 27 27 4 28 10 23 19 27 13 20 22 0 22 16 5 24 10 27 27 28 4 5 19 19 4 16 27 12 14 20 24 16 11 9 12 4 9 26 13 2 14 14 24 16 24 16 9 19 11 20 22 25 4 0 12 10 13 11 5 14 19 25 25 12 19 9 5 23 20 5 20 16 10 0 9 25 26 10 19 5 27 25 11 28 25 25 0 13 11 19 2 28 17 2 11 25 26 24 19 27 22 13 19 26 27 11 12 20 11 25 14 20 26 11 0 19 9 16 0 11 26 17 28 24 11 20 23 9 20 13 28 14 25 22 11 25 25 5 16 16 22 25 27 28 23 0 13 28 5 16 13 13 23 17 10 24 5 27 5 4 13 16 5 20 19 14 4 2 24 20 4 20 5 16 0 28 12 13 28 10 0 2 2 2 19 4 22 12 25 16 10 9 |
对比分析
由上述两种算法结果可知,相对而言,SA的算法效率更高,而且结果更加优异。但是由于这两种算法都未做贪心优化,所以表现不佳,之后在进行改进。
完整代码详见Github