算法Project(变种背包问题)

问题描述:

假设有n个商店和m位顾客,我们希望计算得到:

(1)开放那些商店

(2)安排哪位顾客去哪位商店

来使得开销最小。

其中:如果商店有安排到至少一位顾客,则商店需要开放营业,而这需要开销opening cost(每个商店的opening cost不同),另外安排某位顾客去某位商店的这一过程也需要开销assigning cost,且因商店的不同和顾客的不同而变化。

也即: 总开销 = 所有商店的opening cost + 所有顾客的assigning cost

除此之外,还需要考虑到商店的容量,每位顾客会占据一定的空间(demand of customer),安排到一个商店的顾客不能超过商店的容量。

 

输入格式:

共71个输入,格式为: 

 解法一:

使用局部搜索的思想(爬山法):

(1)随机生成一个合法的解

关于这个随机,需要考虑到商店是否开放的问题。当商店开放的开销非常大时,商店开放的选择将对最终的结果产生较大的影响。我采用的方式是:随机选择一个商店,顺序安排顾客,容量满了之后再随机选择另一个商店,重复这个过程。(如果这样的策略导致最终无法安排完所有的顾客,则重新再生成一个合法初始解)。

(2)对一个初始解进行n次迭代(如果迭代一段时间仍然得不到更优的解,则认为已经得到了局部最优解,停止迭代):

         找到当前解的邻域,在邻域中找出开销最小的解,如果这个解比原来的解要好,则将它作为新的解,重复这个过程。

(3) 为了避免一开始商店不完全开放产生的不好的影响,每次随机生成多个合法的初始解,重复以上过程。并且保证第一个初始解开放了所有的商店。

其中找邻域的算法为:

随机选择一个顾客,再随机选择一个商店,将这个顾客分配到这个商店。(保证这个商店不是这个顾客原来分配的商店,且分配过去之后不会超过商店的容量,如果不满足就重新执行)并在一次迭代中同时找到十个这样的随机更改(都是以当前的解为起点),作为邻域进行判断。

 

这个思想很简单,但是存在问题:

1. 可能最终得到的解是局部最优,而不是全局最优(可以理解为到达了一个小山峰,通过邻域无法在找到更好的解,但实际上有更高的山峰)。

2. 可能遇到平顶,邻域中的解相同,无法确定要搜索的最佳方向。

代码:

定义数据结构

#ifndef DEFINE_HPP
#define DEFINE_HPP

#include <vector>
using namespace std;
struct data {
  int facility_num;  // 商店数量
  int customer_num;  // 顾客数量
  vector<int> facility_capacity;  // 商店容量
  vector<int> facility_opening_cost; // 商店开放开销
  vector<int> customer_demand;    // 顾客占的空间
  vector<vector<int>> assignment_cost; // [facility][customer] 安排顾客的开销
  data(int facility_num, int customer_num, vector<vector<int>> init_assignment_cost) {
    this->facility_num = facility_num;
    this->customer_num = customer_num;
    this->assignment_cost = init_assignment_cost;
  }
  vector<int> assignment; // 最终的安排方式
  vector<int> facility_used; // 最终各个商店消耗的容量
};

#endif

核心代码:

int get_random(int range) {
  return rand()%range;
}

// 根据顾客的安排计算总开销
int evaluation(vector<int>& assignment, data& m_data) {
  int result = 0; // 要记得初始化
  vector<int> facility_status(m_data.facility_num, 0);
  for(int i = 0; i < assignment.size(); i++) {
    facility_status[assignment[i]] = 1;
  }
  for(int i = 0; i < facility_status.size(); i++) {
    if(facility_status[i] != 0)
      result += m_data.facility_opening_cost[i];
  }
  for(int i = 0; i < assignment.size(); i++) {
    result += m_data.assignment_cost[assignment[i]][i];
  }
  return result;
}

// 随机得到一个初始的合法解
bool init_solution(vector<int>& assignment, vector<int>& facility_used, data& m_data, vector<int>& m_random) {
  // 随机选择一个商店,顺序安排顾客,容量满了之后再随机选择另一个商店,重复这个过程
  // 初始解中未开放的商店意味着永远关闭,后续不会安排顾客过去
  int p = get_random(m_data.facility_num);
  m_random.push_back(p);
  for(int i = 0; i < m_data.customer_num; i++) {
    while(true) {
      int facility = p;
      if(m_data.facility_capacity[facility]-facility_used[facility] >= m_data.customer_demand[i]) {
        assignment[i] = facility;
        facility_used[facility] += m_data.customer_demand[i];
        break;
      } else {
        while(true) {
          p = get_random(m_data.facility_num);
          if(find(m_random.begin(), m_random.end(), p) == m_random.end()) {
            m_random.push_back(p);
            break;
          }
          if(m_random.size() == m_data.facility_num)
            return false; // 当前的策略导致无法安排完所有顾客,抛弃此次初始解
        }
      }
    }
  }
  return true;
}

bool can_open(int facility, vector<int>& m_random) {
  // 初始时开放的商店才能继续使用,其余的商店不再开放
  if(find(m_random.begin(), m_random.end(), facility) != m_random.end())
    return true;
  else
    return false;
}

// 爬山法
int local_search(data& m_data) {
  int final_result = 100000;
  int final_times;
  int final_last_update;
  for(int x = 0; x < 10; x++) {
    int result = 0;
    vector<int> facility_status(m_data.facility_num, 0);
    vector<int> assignment(m_data.customer_num, 0);
    vector<int> facility_used(m_data.facility_num, 0);
    vector<int> m_random;
    // 获得一个初始解
    // 如果求解异常,跳过这次执行
    if(!init_solution(assignment, facility_used, m_data, m_random)) {
      x--;
      continue;
    } 
    result = evaluation(assignment, m_data);
    int last_update = -1;
    int times = 500;
    for(int i = 0; i < times; i++) {
      int cur = 0;
      int customer1, customer2;
      int facility1, facility2;
      int type; // 确定邻域中的最优解是用哪种策略找到的
      for(int j = 0; j < 10; j++) {
        // int choice = get_random(100);
        // 修改一个顾客的安排得到一个邻域,同时找10个邻域,从中选出最好的
        int tmp_customer, tmp_facility;
        while(true) {
          // 得到一个可执行的调整(不超过最大容量)
          tmp_customer = get_random(m_data.customer_num);
          tmp_facility = get_random(m_data.facility_num);
          // 不选取关闭的商店
          // 第一个初始解开放所有的商店
          if(facility_used[tmp_facility] == 0 && !can_open(tmp_facility, m_random) && x != 0)
            continue;
          if(m_data.facility_capacity[tmp_facility]-facility_used[tmp_facility] >= m_data.customer_demand[tmp_customer] 
          && tmp_facility != assignment[tmp_customer]) // 要避开调度到同一个商店的情况(相当于没调动,而且会出bug)
            break;
        }
        int tmp_result = m_data.assignment_cost[tmp_facility][tmp_customer]-m_data.assignment_cost[assignment[tmp_customer]][tmp_customer];
        if(facility_used[tmp_facility] == 0) {
          // 变动需要开启新的商店
          tmp_result += m_data.facility_opening_cost[tmp_facility];
        } 
        if(facility_used[assignment[tmp_customer]] == m_data.customer_demand[tmp_customer]) {
          // 变动会关闭旧的商店
          tmp_result -= m_data.facility_opening_cost[assignment[tmp_customer]];
        }
        // 求出10个邻域中的最优解
        if(tmp_result < cur) {
          cur = tmp_result;
          customer1 = tmp_customer;
          facility1 = tmp_facility;
        }
      }
      // 如果邻域中有更优的解,将这个解作为新解
      if(cur < 0) {
          facility_used[assignment[customer1]] -= m_data.customer_demand[customer1];
          assignment[customer1] = facility1;
          facility_used[facility1] += m_data.customer_demand[customer1];
          result += cur;
          last_update = i;
      }
      if(i == times-1) {
        if(i-last_update < 500) // 如果迭代一段时间仍然得不到更优的解,则认为已经得到了局部最优解,停止迭代
          times += 500;
      }
    }
    if(result < final_result) {
      final_result = result;
      final_times = times;
      final_last_update = last_update;
      m_data.assignment = assignment;
      m_data.facility_used = facility_used;
    }
  }
  cout << "HC final cost: " << final_result << " total times: " << final_times << " last update: " << final_last_update << " check: " << evaluation(m_data.assignment, m_data) << endl;
  return final_result;
}

运行结果

   Result Time(s)
p1  9501  0.054185
p2  8389  0.045538
p3  10238 0.050825
p4  12130 0.051824
p5  9439  0.017958
p6  7962  0.017928
p7  10032 0.018934
p8  11857 0.020096
p9  9115  0.034581
p10 8123  0.033655
p11 9677  0.034299
p12 10914 0.036240
p13 9661  0.135806
p14 8191  0.166471
p15 9945  0.242802
p16 13097 0.228588
p17 10134 0.152015
p18 8015  0.128695
p19 10536 0.116270
p20 12680 0.110996
p21 10074 0.077413
p22 8881  0.082733
p23 9860  0.077299
p24 12351 0.091676
p25 13234 0.209495
p26 12969 0.241355
p27 15095 0.263315
p28 18475 0.254944
p29 16332 0.218115
p30 14259 0.198850
p31 19712 0.231230
p32 20131 0.219975
p33 14405 0.334967
p34 13089 0.306140
p35 16172 0.342267
p36 22645 0.322351
p37 14907 0.173000
p38 12751 0.176526
p39 15464 0.189599
p40 16619 0.181526
p41 7388  0.052925
p42 6544  0.171739
p43 6032  0.210609
p44 8467  0.047902
p45 8258  0.100014
p46 6932  0.262841
p47 8181  0.082714
p48 7223  0.134204
p49 6815  0.197290
p50 10577 0.053424
p51 9268  0.131023
p52 12332 0.045207
p53 13069 0.088564
p54 10441 0.041415
p55 11832 0.149901
p56 25263 0.124397
p57 29976 0.119811
p58 42407 0.131893
p59 32655 0.121115
p60 22848 0.172864
p61 30155 0.166056
p62 37719 0.165686
p63 30824 0.170274
p64 25597 0.204970
p65 33459 0.242885
p66 40494 0.222066
p67 32434 0.165219
p68 25102 0.176221
p69 32597 0.176730
p70 41367 0.204037
p71 35552 0.191322

具体信息:

(依次为:总开销,商店是否开放,各个顾客的安排)

[p1]
9501
1 1 1 1 1 0 1 1 1 0 
8 2 3 6 3 0 2 4 4 1 4 0 3 2 8 3 4 0 6 7 3 8 6 4 2 6 1 6 0 1 2 6 0 0 4 4 4 3 0 4 1 8 1 6 7 0 4 0 4 3 
[p2]
8389
1 1 0 1 1 1 1 1 1 1 
7 8 1 6 3 8 4 4 4 1 9 8 3 4 8 3 9 0 9 7 3 4 6 4 5 5 1 5 0 5 9 6 0 3 9 4 4 3 0 4 1 8 1 5 7 0 9 0 4 0 
[p3]
10238
1 1 1 1 1 0 1 1 0 0 
0 2 1 6 3 0 2 4 2 1 4 0 3 2 7 3 4 2 6 7 3 4 6 4 2 6 1 6 0 1 2 6 0 3 4 4 4 3 0 4 1 0 3 6 7 3 4 0 4 0 
[p4]
12130
1 1 0 1 1 1 0 1 0 1 
7 4 5 5 3 0 5 4 4 1 9 0 3 7 0 3 4 0 9 7 1 4 9 4 5 5 1 5 0 5 9 5 0 3 9 4 4 3 0 4 1 3 3 5 7 0 4 3 4 0 
[p5]
9439
1 1 1 1 1 0 1 1 1 1 
8 0 1 6 3 8 2 4 4 1 9 8 3 2 0 3 2 0 9 7 3 8 6 4 2 6 1 1 0 1 2 6 0 3 9 4 7 3 0 4 1 8 1 6 7 0 4 3 4 8 
[p6]
7962
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 4 6 7 2 6 1 1 8 1 2 6 0 3 9 4 7 3 0 4 1 8 1 6 7 0 4 0 4 0 
[p7]
10032
1 1 1 1 1 1 1 1 1 0 
8 8 1 6 3 8 2 4 4 1 4 8 0 2 8 0 4 0 6 7 3 8 6 7 2 5 1 5 0 5 6 6 0 3 2 4 4 3 0 4 1 8 1 5 7 0 2 3 4 3 
[p8]
11857
1 1 1 1 1 1 1 1 1 0 
8 8 1 6 3 8 2 4 4 1 4 8 3 2 8 3 4 0 6 7 3 8 6 7 2 5 1 5 0 5 2 6 0 3 2 4 7 3 0 4 1 8 1 5 7 0 4 0 4 1 
[p9]
9115
0 1 1 1 1 0 1 0 1 0 
8 8 1 6 3 8 2 4 4 1 4 8 3 2 8 3 4 8 6 4 3 4 6 2 2 6 1 1 8 1 2 6 3 3 2 4 4 3 8 4 1 8 1 6 4 8 4 3 2 3 
[p10]
8123
1 1 1 1 1 1 0 1 1 0 
8 8 1 5 3 8 2 4 4 1 4 8 3 2 8 3 4 0 4 7 3 8 5 4 2 5 1 5 0 5 2 5 0 3 4 4 7 3 0 4 1 8 1 5 7 0 4 0 4 0 
[p11]
9677
1 0 1 1 1 0 1 0 1 1 
8 8 3 6 3 8 2 4 4 3 9 8 3 2 8 3 4 0 9 4 3 8 6 9 2 6 3 6 0 2 2 6 0 3 9 4 4 3 0 4 3 8 3 6 4 0 4 0 4 0 
[p12]
10914
1 0 0 1 1 1 0 0 1 1 
8 8 5 5 3 8 3 4 4 5 9 8 3 4 8 3 4 0 9 4 3 8 9 9 5 5 3 5 0 5 9 5 0 3 9 4 9 3 0 4 3 8 3 5 4 0 4 0 4 0 
[p13]
9661
0 1 0 0 0 1 1 0 0 1 1 0 1 1 1 1 1 0 0 1 
16 12 10 10 12 12 1 13 14 19 15 19 19 6 13 12 15 10 19 9 12 15 15 19 6 1 16 1 1 1 13 15 13 16 12 10 9 19 19 13 6 16 5 16 9 5 14 10 19 9 
[p14]
8191
1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 1 1 0 
16 1 10 10 1 18 17 18 14 17 15 4 1 6 13 11 15 10 4 6 14 15 15 13 6 17 16 17 1 17 13 15 13 16 11 10 11 1 1 13 6 0 0 0 8 13 14 10 4 8 
[p15]
9945
0 0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 0 1 0 1 
7 14 10 10 19 13 17 13 14 17 7 19 19 6 13 11 5 10 19 6 14 5 5 19 6 17 7 17 17 17 13 7 13 7 11 10 11 19 19 13 6 7 5 7 11 5 14 10 19 6 
[p16]
13097
0 1 1 0 1 0 1 1 0 0 1 1 0 0 0 1 0 0 0 0 
10 11 10 10 1 15 1 7 7 4 15 4 1 6 2 11 7 10 4 6 1 7 7 2 6 4 7 11 1 4 2 15 2 15 1 10 11 2 4 2 6 15 7 15 11 15 10 6 2 6 
[p17]
10134
0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 1 1 1 1 1 
16 12 16 16 1 18 17 18 14 17 15 19 1 9 18 12 15 14 17 9 12 15 15 19 9 17 16 17 1 17 18 15 18 15 1 14 8 19 19 18 9 16 16 14 8 15 14 14 19 9 
[p18]
8015
1 1 0 1 0 1 1 0 0 0 1 0 0 0 1 1 1 1 1 1 
16 1 10 10 1 18 17 18 14 17 15 19 1 6 18 3 15 10 17 6 14 15 15 19 6 17 16 17 1 17 18 15 18 16 3 10 3 19 19 18 6 0 5 0 3 5 14 10 19 6 
[p19]
10536
0 1 0 0 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 0 
16 1 7 7 1 18 17 13 7 17 15 4 1 9 13 8 15 7 4 9 18 15 15 13 9 17 16 17 1 17 13 7 13 16 1 7 8 1 1 13 9 16 15 16 8 13 7 9 4 9 
[p20]
12680
0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 1 1 0 1 
16 12 15 7 19 12 17 15 12 17 15 19 12 9 19 3 7 7 17 9 12 15 15 19 9 3 16 17 3 17 19 7 19 16 3 7 3 12 17 12 9 7 16 16 3 15 12 9 19 9 
[p21]
10074
0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 0 1 1 0 0 
16 1 16 6 1 12 17 13 12 17 16 1 1 6 13 12 16 6 17 9 12 12 12 13 6 17 16 17 1 17 13 16 13 16 1 6 17 1 1 13 6 13 12 12 9 13 12 6 1 9 
[p22]
8881
0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 1 0 0 
5 12 6 6 12 12 17 13 12 17 15 17 12 6 13 12 15 6 17 9 12 15 15 13 6 17 5 17 12 17 13 15 13 15 12 6 17 12 13 13 6 5 5 15 9 5 12 6 13 9 
[p23]
9860
0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 
16 1 10 10 1 18 3 18 3 3 15 1 1 6 18 3 15 10 1 6 18 15 15 18 6 3 16 1 1 3 18 15 18 16 3 10 3 1 1 18 6 16 15 16 6 15 15 10 18 6 
[p24]
12351
1 1 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 
0 12 10 10 12 12 11 5 12 11 5 1 1 10 5 11 5 10 11 9 12 5 5 1 9 1 0 1 1 11 12 10 12 0 11 10 11 1 1 5 10 0 5 0 11 0 12 10 1 9 
[p25]
13234
1 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 
20 11 20 2 20 5 2 24 14 17 24 20 28 20 2 14 14 17 5 11 14 0 5 2 5 20 2 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 28 24 14 7 20 11 28 5 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 24 0 24 24 20 20 11 17 24 20 24 20 14 24 20 7 20 0 2 17 17 7 20 5 17 24 17 11 17 24 2 14 21 20 28 7 17 25 14 25 7 11 14 28 14 14 2 11 11 21 24 24 24 24 5 28 25 20 20 0 5 24 0 25 0 11 24 5 28 14 7 5 20 0 0 28 20 14 20 25 25 5 2 5 
[p26]
12969
1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 0 1 1 0 0 0 1 
20 11 13 2 20 5 2 24 14 17 24 16 8 20 19 14 14 17 5 11 2 0 5 17 5 8 19 24 5 24 5 25 13 25 20 20 24 15 0 14 0 14 15 8 24 14 7 13 11 8 29 14 14 5 20 20 17 11 11 14 0 5 20 11 11 11 24 0 24 24 20 20 11 17 24 8 24 20 14 24 20 7 20 0 19 0 2 7 20 5 14 24 17 11 17 5 2 2 25 16 8 17 14 25 2 29 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 13 16 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 
[p27]
15095
1 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 
20 11 13 2 20 5 2 9 14 17 24 8 8 20 19 14 14 17 5 11 2 0 5 19 5 8 19 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 28 24 14 0 13 11 8 5 14 14 5 13 20 17 11 0 14 0 5 20 11 11 11 9 0 9 24 20 20 11 0 24 8 24 20 14 24 20 0 13 0 19 17 17 0 20 5 2 24 17 11 17 5 2 19 25 20 8 17 14 25 2 25 17 11 14 28 14 14 2 11 11 25 24 24 24 24 5 8 25 13 8 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 
[p28]
18475
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 0 0 0 
20 11 13 2 20 5 2 9 14 0 9 8 8 20 19 14 14 0 25 11 2 0 9 17 9 8 19 5 5 9 5 25 20 25 20 20 5 15 0 14 0 14 15 8 5 14 0 13 11 8 5 14 14 5 13 20 17 11 11 14 0 5 20 11 11 11 9 0 5 9 20 20 11 17 9 8 9 20 14 9 20 7 20 17 19 0 17 7 20 5 2 9 17 11 17 9 2 19 25 20 8 17 17 25 2 25 7 11 14 8 14 14 2 11 11 25 5 15 5 5 5 8 25 13 8 0 5 9 0 25 0 11 5 25 8 14 7 25 20 17 0 8 20 14 8 25 25 5 2 5 
[p29]
16332
0 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 1 0 0 1 1 0 0 0 1 
20 11 20 2 20 5 2 9 14 17 24 8 8 20 19 14 14 11 5 11 2 7 5 17 24 8 19 24 5 9 5 25 20 25 20 20 24 24 7 14 17 14 24 8 24 14 4 13 11 8 29 14 14 5 13 20 17 11 11 14 17 5 8 11 17 11 24 17 5 9 20 13 11 7 24 8 9 20 14 24 20 7 20 17 19 17 17 4 20 5 2 9 17 11 7 9 2 2 21 13 8 17 17 25 2 29 17 11 14 8 14 14 2 11 11 21 5 24 24 24 5 8 25 13 8 7 5 9 7 29 17 11 24 5 8 8 17 5 13 17 11 8 13 14 8 25 25 11 2 5 
[p30]
14259
1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1 0 0 0 1 1 
8 11 20 2 20 5 2 24 14 17 22 8 28 14 19 14 14 17 5 0 2 0 5 17 5 8 19 24 5 24 5 11 20 11 20 20 24 24 0 14 0 14 24 8 5 17 7 20 11 8 29 14 17 5 20 20 17 11 11 14 0 5 20 11 11 11 22 0 22 22 20 8 11 17 9 8 22 20 14 24 8 7 28 17 17 17 17 7 20 5 2 24 17 11 17 9 2 2 21 8 8 7 14 11 2 29 17 0 14 28 14 14 2 11 11 21 24 24 24 24 11 8 11 20 8 0 5 9 0 21 0 11 24 5 28 8 7 5 8 17 0 8 20 14 8 29 11 5 2 24 
[p31]
19712
1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 1 0 0 0 0 
16 11 16 2 16 5 19 9 2 17 24 16 16 8 17 17 14 0 5 11 2 0 5 17 5 8 19 24 5 24 5 25 16 25 8 14 5 24 0 14 0 14 24 16 24 14 7 8 11 8 5 2 17 11 8 2 2 11 11 14 0 5 14 11 11 11 9 0 9 9 8 8 11 0 24 2 24 14 2 9 8 7 8 0 19 0 17 7 8 25 2 9 7 11 17 9 14 19 21 16 16 17 17 25 2 25 17 11 14 14 17 14 2 11 11 25 24 24 24 24 5 8 25 2 16 0 5 24 0 21 0 11 24 5 16 2 17 5 8 0 0 8 14 17 14 25 25 5 17 11 
[p32]
20131
1 0 1 0 0 1 0 1 1 1 0 1 0 1 0 0 0 1 0 1 1 0 1 0 1 1 0 0 1 0 
20 11 13 2 20 5 2 9 28 17 22 8 8 20 19 8 17 0 5 11 2 0 5 19 5 8 19 24 24 24 5 25 20 25 20 13 24 24 0 2 0 8 24 28 24 17 7 13 11 8 5 28 17 5 13 20 2 11 11 17 0 5 8 11 11 11 22 0 22 22 13 20 11 0 24 8 9 20 2 24 20 7 20 17 19 0 17 7 20 25 2 9 17 11 17 9 2 2 25 20 8 17 17 25 2 25 17 11 28 28 17 2 2 11 11 25 24 24 24 24 5 8 25 13 8 0 5 9 0 25 0 11 24 5 8 8 7 5 20 17 0 8 20 17 8 25 25 5 2 5 
[p33]
14405
1 0 1 0 0 1 0 1 0 0 0 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 0 
20 11 20 2 20 5 2 24 14 17 24 16 14 20 19 14 14 17 5 11 2 0 5 17 5 20 19 24 5 24 5 25 13 25 20 20 24 24 0 14 0 14 24 16 24 14 0 13 27 14 5 14 14 5 20 20 17 11 11 14 0 5 20 11 11 11 5 0 24 24 20 20 11 17 24 20 5 20 14 24 13 7 13 17 19 17 17 7 20 5 2 24 17 11 17 24 2 2 25 16 16 17 17 25 2 25 17 11 14 14 14 14 2 11 11 27 24 24 24 24 5 16 25 13 16 0 5 24 0 25 0 11 5 5 16 14 7 5 20 17 0 20 20 14 14 25 25 5 2 5 
[p34]
13089
1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 
20 11 13 2 20 5 2 24 14 17 24 16 8 20 19 14 14 17 5 11 2 0 5 17 5 8 19 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 13 27 8 29 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 9 0 24 24 20 20 11 17 24 8 9 20 14 24 20 7 13 17 17 17 17 7 20 5 2 24 17 11 17 24 2 19 25 16 8 17 17 25 2 29 17 11 14 8 14 14 2 11 11 27 24 24 24 5 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 
[p35]
16172
1 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1 
20 11 20 2 20 11 2 24 14 17 29 20 28 13 19 14 14 17 25 11 2 0 24 17 24 20 19 24 25 24 29 25 20 25 20 20 24 25 0 14 0 14 24 28 24 14 0 13 11 28 29 14 14 11 20 20 17 11 0 14 0 24 20 11 11 11 29 0 24 24 20 20 11 17 24 28 29 20 14 24 20 7 20 17 17 17 17 7 20 29 2 24 17 11 17 24 2 19 25 13 28 17 17 25 2 29 17 11 14 28 14 14 2 11 11 25 24 24 24 24 11 28 25 13 20 0 25 29 0 25 0 11 24 29 28 14 17 25 20 17 0 28 13 14 14 25 25 11 2 11 
[p36]
22645
1 0 0 0 0 1 1 1 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 
6 11 16 14 16 5 19 24 14 17 24 16 14 14 19 14 17 17 5 11 19 0 5 17 5 17 19 24 5 24 5 25 6 25 17 14 5 24 0 14 0 0 24 16 24 0 7 14 27 17 5 19 14 5 6 17 17 11 11 14 0 5 17 11 11 11 24 0 24 24 16 6 11 0 24 19 24 14 14 24 6 7 14 0 19 17 17 7 14 5 14 24 17 11 7 5 17 19 25 16 16 17 17 25 19 25 7 11 14 14 17 19 0 11 11 27 24 24 24 24 5 16 25 14 16 0 5 5 0 25 0 11 24 5 16 17 7 5 14 0 0 14 17 17 0 25 25 5 0 5 
[p37]
14907
1 0 0 0 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 
8 11 6 14 8 5 19 24 14 17 24 8 8 8 19 14 14 17 5 11 14 0 5 17 5 8 19 24 5 24 5 25 6 25 8 8 24 15 0 14 0 14 15 28 24 14 7 8 25 8 5 14 14 5 6 8 17 11 0 14 0 5 8 11 11 11 24 0 24 24 8 6 11 17 24 8 24 8 14 24 8 7 8 17 17 17 17 7 8 5 17 24 17 11 17 24 14 19 25 8 8 17 17 25 19 25 17 11 14 28 14 14 17 11 11 25 24 24 24 24 5 8 25 8 8 0 5 24 0 25 0 11 24 5 8 14 17 5 8 17 0 8 8 14 8 25 25 5 17 5 
[p38]
12751
1 0 1 0 0 1 1 1 1 0 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 1 0 0 1 0 
20 11 13 2 20 5 2 24 14 17 24 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 19 24 5 24 5 25 6 25 20 20 24 24 0 14 0 14 24 28 24 14 0 13 11 8 5 14 14 5 13 20 17 11 0 14 0 5 20 11 11 11 24 0 24 24 20 6 11 17 24 8 24 20 14 24 20 7 13 17 19 17 17 7 20 5 2 24 17 11 17 5 2 2 25 18 8 17 17 25 2 25 17 11 14 28 14 14 2 11 11 25 24 24 24 24 5 8 25 13 18 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 
[p39]
15464
1 0 1 1 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 
20 25 20 2 20 5 2 9 14 17 9 8 8 20 3 14 14 17 5 11 2 0 5 3 5 8 2 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 28 24 14 0 13 11 8 5 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 24 0 5 9 20 20 11 17 24 8 9 20 14 24 20 7 20 17 17 17 17 7 20 5 2 24 17 11 17 5 2 2 25 13 8 17 17 25 2 25 17 11 14 28 14 14 2 11 11 25 24 24 24 24 5 8 25 13 8 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 
[p40]
16619
1 0 0 0 0 1 0 1 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 
20 11 20 14 20 5 19 5 14 17 5 8 8 20 17 14 14 17 5 11 14 0 5 17 5 8 19 5 5 15 5 25 20 25 20 20 5 15 0 14 0 14 15 8 11 14 0 20 11 8 5 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 5 0 5 5 20 20 11 17 5 8 15 20 14 5 20 7 20 17 17 17 17 7 20 5 17 5 17 11 17 5 14 19 25 20 8 17 17 25 19 25 17 11 14 8 14 14 17 11 11 25 5 15 5 5 5 8 25 20 20 0 25 15 0 25 0 11 5 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 17 5 
[p41]
7388
1 1 0 0 1 0 1 1 0 1 
4 6 4 1 6 9 7 7 7 7 4 6 6 6 9 7 7 0 0 6 6 1 4 1 6 4 4 4 0 0 0 0 0 0 7 7 7 6 6 9 6 7 7 7 7 4 0 7 6 4 1 1 6 6 7 7 7 7 7 7 0 4 1 0 0 6 6 6 4 4 0 4 4 4 7 7 7 7 6 7 9 9 7 9 7 9 9 9 7 9 
[p42]
6544
0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 
16 10 4 10 18 18 16 4 16 16 4 18 10 10 18 18 16 4 10 10 10 4 10 18 16 18 4 16 16 4 16 18 10 18 10 10 10 18 16 16 16 4 4 16 4 10 18 18 18 18 16 16 16 4 4 10 16 10 10 10 4 4 4 4 4 4 16 18 18 18 10 18 18 18 18 18 18 18 18 18 
[p43]
6032
0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 
27 19 6 27 2 19 2 19 6 6 2 2 2 19 6 6 19 6 19 19 2 19 19 19 19 2 2 6 27 6 2 2 2 2 19 19 2 19 19 6 6 6 2 2 27 2 2 19 19 6 19 19 19 6 6 6 19 19 2 27 27 27 27 27 27 27 2 2 27 2 
[p44]
8467
1 1 1 0 1 1 0 1 1 1 
4 4 4 4 4 4 4 4 0 0 7 0 0 0 7 0 1 1 1 1 7 1 8 2 2 2 2 2 2 2 2 5 4 5 5 4 9 5 5 5 4 0 1 7 8 8 7 5 9 7 7 7 5 5 8 8 7 7 9 5 5 5 9 9 0 1 0 8 1 0 4 7 5 7 7 7 7 7 5 2 7 9 7 9 9 9 7 5 7 5 
[p45]
8258
0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 
18 17 18 18 18 18 18 18 18 18 18 18 18 18 18 3 3 3 3 3 3 4 4 4 4 4 4 4 4 14 18 14 14 17 17 14 17 14 18 18 3 3 4 3 18 14 18 3 18 14 17 17 17 18 17 18 14 18 3 3 3 3 17 17 18 3 17 17 3 3 18 3 18 17 14 17 17 17 3 18 
[p46]
6932
1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 
0 0 0 8 0 0 0 15 15 15 15 15 15 15 0 18 18 18 15 18 18 5 5 5 5 5 5 8 8 8 27 27 8 27 0 15 18 5 18 18 18 18 15 0 5 18 18 27 18 18 0 27 27 0 5 18 27 18 18 27 15 15 18 18 27 27 27 27 15 18 
[p47]
8181
1 1 1 1 0 0 1 1 1 0 
0 2 0 0 0 0 2 0 0 0 1 2 1 1 2 1 1 2 0 2 2 2 2 2 3 2 2 3 3 3 3 3 3 3 3 2 6 3 6 6 2 2 2 2 3 3 2 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 6 7 2 8 7 7 7 7 7 8 8 0 7 8 7 0 8 0 8 7 8 2 7 2 0 2 
[p48]
7223
0 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 
4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 4 4 4 4 4 3 4 4 4 8 4 4 4 4 4 4 11 11 8 8 8 11 4 8 4 11 8 11 11 11 11 11 11 8 4 11 11 8 8 11 11 14 11 14 11 4 14 14 14 14 14 18 18 18 18 18 4 18 18 18 18 18 18 18 18 
[p49]
6815
0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 
7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 19 19 19 12 19 12 12 19 12 12 12 19 19 19 19 19 12 12 19 19 19 19 12 19 24 19 24 19 19 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 
[p50]
10577
1 0 1 0 1 1 0 1 0 0 
7 0 4 0 2 2 5 5 7 7 7 4 0 2 0 2 2 2 7 7 0 4 4 4 0 0 7 4 4 7 7 7 4 4 7 5 2 2 4 0 0 0 2 2 5 5 5 5 5 4 7 5 4 4 0 0 0 4 5 2 2 7 7 7 7 7 0 4 7 7 7 4 0 0 0 4 4 4 4 4 4 5 2 2 2 5 2 7 2 7 2 2 2 5 2 2 2 2 2 2 
[p51]
9268
1 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 
1 0 19 0 5 13 5 5 19 1 5 19 13 5 0 5 13 5 2 1 0 0 0 19 19 0 1 19 19 1 2 2 19 19 19 5 13 13 19 19 0 13 13 13 2 5 2 2 5 19 19 2 0 19 0 0 13 13 13 13 13 2 1 5 19 1 0 19 1 5 19 19 0 19 0 19 19 19 19 19 19 5 5 13 2 2 13 2 13 1 13 13 5 5 2 13 13 13 5 13 
[p52]
12332
1 1 0 1 1 1 1 0 1 1 
4 6 6 4 4 4 3 4 3 4 3 4 3 4 3 4 3 8 3 8 8 4 3 8 8 5 9 5 9 9 5 9 9 5 6 6 6 6 6 1 6 6 6 6 4 4 4 8 8 1 5 3 4 6 4 5 4 3 3 4 6 9 5 5 0 5 5 6 0 4 6 6 4 3 3 1 3 4 4 9 1 3 8 5 5 4 3 4 9 3 5 9 9 5 5 6 3 4 3 6 
[p53]
13069
0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 
5 5 5 5 5 5 5 5 7 7 7 7 7 7 7 7 7 3 3 3 3 3 3 3 3 9 9 15 15 15 3 3 9 3 5 16 16 16 16 16 16 16 16 16 5 16 7 15 3 9 4 4 7 15 16 9 4 4 3 7 16 15 15 15 3 4 9 16 7 5 16 15 7 3 3 15 3 7 5 15 16 7 3 15 15 3 3 7 15 4 15 15 9 15 15 15 7 7 4 16 
[p54]
10441
1 0 1 1 1 1 1 0 1 0 
2 2 2 2 2 4 2 2 2 2 4 2 2 2 2 4 2 2 2 3 3 2 2 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 6 6 8 8 6 8 3 8 8 8 8 8 3 6 6 6 6 6 6 6 6 6 5 5 6 5 5 5 6 6 4 0 6 0 0 2 0 0 4 0 0 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 
[p55]
11832
0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 
17 17 16 17 16 17 16 16 18 16 18 17 17 18 17 18 18 18 18 16 16 16 14 14 16 14 16 16 14 16 14 7 16 16 14 7 7 16 7 7 7 18 14 14 7 7 7 7 16 7 14 7 7 7 7 7 7 7 18 7 7 7 18 14 18 7 7 7 14 13 13 13 13 13 17 13 13 13 13 13 13 13 13 17 18 13 18 17 18 18 18 18 18 18 18 17 18 18 18 18 
[p56]
25263
1 0 0 1 0 1 1 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 1 0 1 1 1 1 0 1 
18 19 21 27 21 19 15 27 22 0 29 6 13 13 19 18 3 20 22 0 18 21 5 24 10 18 27 26 29 21 6 26 26 21 27 6 20 8 27 15 18 9 6 26 8 19 13 21 6 20 24 24 21 15 8 19 25 9 18 25 29 24 7 8 13 25 5 10 0 25 18 25 19 9 5 13 20 5 8 24 10 0 9 7 29 13 6 0 27 7 27 19 25 25 0 3 27 19 0 19 19 15 25 18 29 24 29 24 22 3 19 29 18 6 25 8 27 7 0 8 26 18 0 19 26 15 21 6 26 10 27 24 7 20 5 9 3 3 0 10 6 22 6 25 25 5 24 15 27 7 27 0 10 0 8 25 5 15 3 13 13 27 10 21 5 24 5 29 3 21 5 20 6 10 26 5 24 10 29 10 5 21 24 19 25 8 6 10 0 21 21 21 6 29 7 6 7 15 20 6 
[p57]
29976
0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 1 0 1 1 1 1 0 1 1 1 1 1 1 
27 19 21 27 21 25 2 27 22 17 29 28 13 13 28 7 10 20 22 27 27 21 5 24 10 27 24 14 29 2 26 26 26 21 27 28 20 20 27 21 7 20 19 26 13 26 13 21 19 14 24 24 2 24 20 28 25 26 22 7 29 2 7 20 13 25 5 14 19 25 7 19 19 20 5 13 20 5 10 24 10 17 26 7 29 13 19 5 27 25 17 19 25 25 2 20 28 28 17 28 17 21 25 7 29 24 29 24 22 13 19 29 22 25 19 20 28 7 17 20 26 7 17 14 26 21 2 25 26 17 28 24 25 20 5 26 13 13 28 10 28 22 28 25 7 5 21 21 27 7 24 17 10 17 20 27 2 21 13 13 13 27 10 24 5 27 5 29 13 21 5 20 19 14 26 2 24 10 29 10 5 2 2 19 28 20 28 10 17 21 2 21 19 29 7 19 7 21 10 19 
[p58]
42407
0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 0 0 0 
18 19 21 22 21 6 15 18 22 17 4 17 8 3 19 18 3 20 22 17 18 21 2 2 20 18 22 19 4 2 19 19 26 21 18 6 20 8 21 15 18 8 6 4 8 26 3 21 19 14 2 22 15 15 8 19 18 8 22 7 4 2 7 8 3 11 5 14 19 7 18 6 6 8 20 5 20 5 8 22 20 17 26 7 4 3 6 5 22 7 17 19 7 11 2 3 11 6 17 17 17 15 11 7 4 17 4 22 22 3 19 4 22 6 11 8 11 7 17 20 26 11 14 19 26 21 2 11 26 17 11 21 7 20 5 8 3 3 11 14 11 18 6 11 11 5 21 15 18 11 22 17 5 17 8 11 2 15 3 3 3 17 14 21 2 18 5 4 3 21 5 8 19 14 26 2 2 20 4 20 2 21 5 19 6 8 6 5 2 21 2 21 6 4 7 4 7 15 20 19 
[p59]
32655
1 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 1 1 0 1 1 1 1 1 1 0 
18 6 21 27 2 6 2 27 18 27 4 28 23 3 28 18 3 20 27 0 18 21 23 24 20 18 27 28 4 2 6 26 4 21 27 6 8 8 24 21 18 9 6 4 8 26 3 21 6 20 24 24 24 21 8 6 11 9 18 25 4 24 18 8 3 11 0 28 6 11 18 11 6 9 0 23 20 20 8 24 23 0 9 25 26 20 6 23 27 25 28 4 25 25 2 3 11 6 0 28 0 21 25 18 4 0 4 24 27 3 26 4 27 6 11 8 28 25 0 20 26 11 28 4 26 21 21 11 26 0 28 24 25 8 23 9 3 3 28 20 25 27 11 11 25 2 24 21 18 25 24 0 20 28 8 28 2 21 3 3 3 27 20 2 23 27 2 4 3 21 23 20 28 8 26 2 0 23 4 8 23 2 2 6 11 8 28 23 0 21 2 21 6 4 25 11 25 21 23 6 
[p60]
22848
0 0 1 1 1 0 1 0 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1 0 1 
18 6 21 27 2 12 21 27 22 17 4 17 13 13 6 18 3 13 22 27 18 16 23 27 23 18 27 17 29 2 6 4 4 16 27 6 8 8 16 16 18 8 6 4 8 4 13 21 6 17 27 16 2 16 8 6 11 8 18 11 29 2 18 8 13 11 23 17 6 12 18 12 6 8 23 23 8 23 8 16 23 17 8 11 29 13 6 2 27 18 17 6 11 11 2 3 11 6 17 17 17 21 12 18 4 2 4 27 22 3 6 4 27 12 12 8 11 11 17 8 8 11 17 6 4 16 2 11 4 17 11 21 11 8 23 8 3 3 17 17 12 22 11 11 11 2 16 21 27 11 27 17 23 17 8 11 2 16 3 13 13 27 23 2 23 27 23 4 3 21 23 8 17 17 4 2 27 23 29 23 2 21 2 6 12 8 11 23 17 21 2 21 6 4 18 12 18 21 23 6 
[p61]
30155
1 0 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 
7 6 2 27 0 25 0 27 27 17 4 17 13 13 6 7 13 10 0 0 27 2 23 0 10 27 0 17 4 2 6 4 4 2 27 6 10 13 27 0 7 10 6 4 10 4 13 2 6 10 0 27 0 27 13 25 25 10 7 25 4 17 7 10 13 25 23 17 6 25 7 25 6 13 23 23 10 23 10 27 10 0 4 25 4 13 6 23 27 7 17 6 25 7 0 23 27 17 0 17 17 2 25 7 4 0 4 2 27 13 6 4 27 6 6 13 17 7 17 13 10 25 17 4 4 2 0 6 4 17 27 2 25 10 23 13 13 13 17 10 25 27 6 25 25 2 2 2 27 25 27 17 23 0 13 25 2 2 13 13 13 27 23 2 23 27 23 4 13 2 23 10 17 10 4 0 0 23 6 10 2 2 2 6 6 13 6 23 0 2 2 2 6 4 7 25 7 2 10 6 
[p62]
37719
0 0 1 1 0 0 0 0 0 1 0 1 1 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 
18 19 2 22 2 12 15 11 22 18 26 19 3 3 19 18 3 9 22 18 18 15 23 2 23 18 22 19 26 2 19 26 26 15 18 12 9 9 22 15 18 9 12 26 9 19 3 15 19 19 2 22 15 15 9 12 18 9 18 11 26 22 18 9 3 11 2 19 19 12 18 12 19 9 3 23 23 23 9 22 23 2 9 11 26 23 19 23 22 11 11 19 11 11 15 3 11 12 2 11 11 15 12 18 26 22 26 22 22 3 19 26 18 12 12 9 11 11 19 9 26 11 19 26 26 15 2 12 26 23 11 2 11 23 3 9 3 3 11 23 12 22 11 11 12 2 22 15 22 12 22 23 23 2 3 11 2 15 3 3 3 18 23 15 23 18 2 26 3 15 3 9 19 19 26 2 2 23 26 23 2 15 2 19 12 9 11 23 11 2 2 2 12 19 18 12 18 15 3 19 
[p63]
30824
0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 1 1 0 
18 28 16 27 5 12 5 27 18 28 4 28 1 1 28 18 1 20 27 27 18 16 5 27 20 18 27 28 4 5 4 26 4 16 27 12 20 26 16 16 27 20 12 4 20 26 20 16 28 20 27 16 16 16 26 12 27 26 18 18 4 17 18 20 1 28 5 17 28 18 18 12 4 20 5 5 17 5 26 16 20 17 26 12 4 20 4 5 27 18 28 4 18 12 5 1 28 28 17 28 28 16 12 18 4 17 4 27 27 1 26 4 18 12 12 20 28 18 17 26 26 18 17 4 26 16 16 12 26 17 28 16 28 20 1 26 1 1 28 17 12 27 12 12 12 17 27 5 27 12 27 17 1 17 20 28 5 16 20 1 1 27 20 16 5 27 5 4 1 16 1 20 28 20 26 5 17 20 4 20 5 16 16 28 12 20 28 5 17 16 5 16 12 4 18 12 18 5 17 28 
[p64]
25597
0 0 0 1 1 1 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 
24 6 21 24 21 12 15 28 21 24 4 28 23 3 28 28 3 8 24 24 28 21 5 24 23 28 24 28 4 21 6 4 4 21 28 6 8 8 24 15 28 9 6 4 8 4 3 21 6 9 24 24 24 21 8 6 12 9 24 12 4 24 12 8 3 12 5 28 28 6 28 12 6 9 23 23 8 23 8 24 23 5 9 12 4 23 6 5 24 12 28 6 12 12 5 3 28 6 5 28 28 15 12 12 4 24 4 24 21 3 6 4 28 12 12 8 28 12 23 8 9 12 28 6 9 21 21 12 4 28 28 24 12 8 23 9 3 3 28 23 12 24 12 12 12 5 24 15 21 12 24 23 23 24 8 28 5 15 3 3 3 28 23 21 5 24 5 4 3 21 5 8 28 23 4 21 24 23 4 23 5 21 21 6 12 8 12 23 24 21 21 21 6 4 28 6 12 15 23 6 
[p65]
33459
1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 
7 19 21 21 21 6 21 19 7 0 26 19 14 5 19 7 5 14 21 0 7 21 5 0 0 7 21 19 26 5 19 19 26 21 0 6 14 14 21 0 7 26 6 26 26 19 14 21 19 19 0 21 0 21 14 6 7 26 7 7 26 21 7 14 14 6 5 14 19 7 7 6 19 26 14 5 14 5 14 21 5 0 26 7 26 14 6 5 0 7 0 6 7 6 5 5 6 6 0 19 19 21 7 7 26 0 26 21 0 5 19 26 0 6 6 26 19 6 14 14 26 7 0 19 26 21 0 6 26 0 6 21 7 14 5 26 5 5 19 14 6 21 6 7 7 5 21 21 7 7 14 19 0 14 14 6 5 5 14 5 5 21 19 0 5 0 5 26 5 21 5 26 19 14 26 5 0 14 26 14 5 21 21 19 6 26 6 5 0 0 21 21 6 6 7 6 7 21 14 19 
[p66]
40494
0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 
22 6 21 22 21 6 21 6 22 21 29 17 20 8 6 12 8 20 22 22 12 21 21 21 17 22 22 6 29 21 6 29 29 21 17 12 20 8 29 21 12 8 6 29 8 29 8 21 17 17 21 22 22 21 8 6 12 8 22 12 29 17 12 8 20 12 17 17 17 12 22 6 6 8 17 20 8 17 8 22 20 17 8 6 29 20 6 22 22 22 6 6 12 12 17 8 12 6 17 17 17 21 12 22 29 17 29 22 22 8 8 29 22 12 6 8 6 12 17 8 8 12 17 29 8 21 20 12 6 17 17 21 12 20 20 20 20 20 12 20 12 22 12 12 6 17 21 22 22 12 20 20 20 17 8 12 21 21 8 8 20 12 8 20 17 21 21 29 8 21 8 20 17 17 29 21 6 20 29 8 21 21 21 6 12 20 12 20 17 22 21 21 6 29 6 6 22 21 8 6 
[p67]
32434
1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 1 1 1 0 1 0 
18 26 24 24 10 11 16 18 24 28 20 28 3 3 28 18 3 20 16 0 18 16 0 24 10 18 24 28 26 24 26 26 26 16 28 11 20 3 24 16 18 26 28 10 20 20 3 16 26 28 24 16 24 16 10 11 11 20 18 25 26 0 18 20 3 11 0 26 0 25 18 11 26 20 20 10 10 10 10 16 3 0 20 25 26 10 26 0 24 25 11 28 25 25 0 3 11 11 0 28 28 16 25 18 11 0 26 24 16 3 26 26 18 11 11 20 28 25 0 3 20 11 28 28 26 16 16 11 26 0 28 24 25 20 20 26 3 3 28 10 11 18 28 11 25 10 24 16 18 25 24 28 20 0 20 11 0 16 3 3 3 24 20 24 10 18 10 26 3 16 3 20 28 10 26 0 0 10 25 10 0 16 24 28 25 20 28 10 0 16 0 16 11 26 25 25 25 24 10 28 
[p68]
25102
1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 1 0 0 1 0 
7 19 16 22 5 28 15 28 22 28 19 28 20 1 28 7 1 20 22 0 7 16 5 0 20 7 22 19 4 5 19 19 4 16 28 19 20 8 16 16 7 9 19 9 8 4 3 16 19 20 0 16 0 16 8 19 25 9 22 25 4 5 7 8 3 25 5 19 0 25 7 25 4 9 5 5 20 5 8 16 20 0 9 7 4 20 19 5 22 7 28 19 25 25 0 3 28 19 0 28 0 15 7 7 4 0 4 16 22 3 19 4 22 19 25 8 7 7 0 8 9 25 0 9 9 16 5 25 19 0 28 16 25 20 1 9 3 3 28 20 28 22 28 7 25 5 16 15 22 25 0 28 5 0 8 25 5 15 3 3 1 0 20 16 5 0 5 4 3 15 1 20 19 20 4 0 0 20 4 20 5 15 0 19 25 8 25 5 28 16 5 16 19 4 7 19 7 15 20 19 
[p69]
32597
0 0 0 0 1 1 0 1 1 0 0 1 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 
7 12 21 24 21 12 21 11 16 11 4 17 23 23 11 7 8 5 16 17 11 16 21 21 8 11 16 17 4 21 12 8 12 16 24 12 8 8 16 16 7 8 11 4 8 4 8 21 12 8 24 16 21 16 8 12 11 8 7 7 8 17 7 8 8 11 5 17 11 12 7 12 4 23 5 23 23 5 5 16 23 5 8 7 4 8 4 5 24 7 17 12 7 11 5 8 11 11 17 17 17 21 12 7 12 24 4 16 16 8 4 12 11 12 12 8 11 7 17 8 23 11 17 4 8 16 21 11 12 17 11 24 11 8 5 4 8 5 17 23 12 24 11 11 11 5 24 21 24 7 24 5 5 23 5 11 5 16 8 8 23 24 5 24 5 24 23 17 23 21 5 8 12 5 4 21 24 5 8 5 5 21 21 12 12 8 11 23 24 21 21 21 12 4 7 11 7 21 23 12 
[p70]
41367
0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 1 0 0 1 1 
18 28 21 18 21 25 21 28 18 17 29 28 5 13 28 18 13 13 16 17 7 16 5 21 13 18 18 17 29 21 28 9 29 16 18 28 9 9 16 16 18 9 25 29 9 29 13 21 28 9 21 16 21 16 9 17 7 9 18 7 9 5 7 9 9 25 13 28 28 7 7 25 25 9 5 13 9 5 9 16 13 17 9 25 29 5 29 5 18 7 7 28 7 25 5 5 28 25 17 28 9 21 7 18 25 21 29 16 16 13 28 29 18 25 25 13 18 7 28 9 9 18 5 29 9 16 21 28 29 17 28 21 7 9 5 13 13 5 17 17 25 16 17 25 25 5 16 21 7 25 21 17 5 17 13 18 5 16 13 13 13 18 5 21 5 7 5 9 5 21 5 13 28 5 9 21 21 13 29 9 5 21 16 28 25 9 7 13 17 21 21 21 29 29 7 7 7 21 17 9 
[p71]
35552
1 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 
22 28 16 22 1 12 0 28 22 0 8 28 8 1 28 11 1 8 22 0 22 16 1 0 13 11 22 26 26 1 26 26 26 16 11 12 26 8 22 16 11 8 12 8 8 8 13 16 26 8 0 16 16 22 8 12 28 8 22 12 26 0 11 8 13 11 0 28 12 12 22 12 12 8 13 1 8 1 8 16 13 0 26 12 26 13 26 0 22 12 11 12 12 11 16 13 11 12 0 28 28 16 12 11 26 0 26 16 22 13 28 26 22 12 12 8 28 11 0 8 26 11 28 26 26 16 0 11 8 0 11 16 11 8 1 1 1 8 0 13 12 22 11 11 11 0 16 16 22 11 22 11 13 11 13 28 0 16 13 13 13 0 13 16 0 22 1 26 1 16 1 8 28 8 26 1 0 8 26 13 1 16 0 28 11 8 11 13 0 16 0 16 12 26 11 11 11 16 13 28 

 

解法二

使用模拟退火算法:

模拟退火法是克服爬山法缺点的有效方法,所谓退火是冶金专家为了达到某些特种晶体结构重复将金属加热或冷却的过程,该过程的控制参数为温度T。模拟退火法的基本思想是,在系统朝着能量减少的趋势这样一个变化过程中,偶尔允许系统跳到能量较高的状态,以避开局部极小点,最终稳定到全局极小点。

算法步骤如下:

(1)随机生成一个合法的解P_k

(2)随机挑选一单元k,并给它一个随机的位移,求出系统因此而产生的能量变化\Delta E_K

(3)若\Delta E_K\leq0,该位移可采纳,而变化后的系统状态可作为下次变化的起点;若\Delta E_K>0,位移后的状态可采纳的概率为:

                                                                                          P_k=e^{-\Delta E_k/T}

式中T为温度,然后从(0,1)区间均匀分布的随机数中挑选一个数R,若R<P_k,则将变化后的状态作为下次的起点;否则,将变化前的状态作为下次的起点。

关于温度:

温度越高,系统越容易达到平衡状态,然而在平衡状态下处于能量较小状态的可能性也越小。温度越低,系统达到平衡状态的速度虽慢,但系统更容易达到能量较小的平衡状态。对于搜索问题中的爬山法,利用模拟退火法,不但可以使变化的随机选择大一些的步长,而且可以跨过局部极小点。通常的做法是:最初阶段倾向于取大步,后阶段倾向于取小步。

可以采用如下的方式设置温度:设置一个初始温度T,一个最终温度min_T, 一个降温系数f(如0.9)。每次迭代 T = T*f,使得温度逐渐降下来,当温度低于最终温度时,迭代停止。

算法的应用:

产生能量变化的方式: 与上文爬山法一致。

\Delta E_K即新解的开销减去旧解的开销。

初始时温度较高,P_k较大,容易接受差解,但随着温度的降低,接受差解将成为小概率事件,大部分时候都是朝着优解的方向搜索的,偶尔接受差解,使得能够跳出局部最小值。

代码:

int SA(data& m_data) {

  int final_result = 100000;
  int final_times;
  int final_last_update;

  for(int x = 0; x < 5; x++) {
    int result = 0;
    float T = 10000;        // 初温
    float min_T = 0.00001;  // 末温
    float factor = 0.9999;  // 降温系数
    vector<int> facility_status(m_data.facility_num, 0);
    vector<int> assignment(m_data.customer_num, 0);
    vector<int> facility_used(m_data.facility_num, 0);
    vector<int> m_random;

    if(!init_solution(assignment, facility_used, m_data, m_random)) {
      x--;
      continue;
    } 
    result = evaluation(assignment, m_data);
    // cout << "init cost: " << result << endl;

    float last_update = -1;
    int i = 1;
    while(T > min_T) {
      int customer;
      int facility;
      // 随机挑选一个顾客,并给他一个随机的位移,求出系统因此而产生的能量变化
      while(true) {
        // 得到一个可执行的调整(不超过最大容量)
        customer = get_random(m_data.customer_num);
        facility = get_random(m_data.facility_num);
        // 不选取关闭的商店
        // 第一个初始解开放所有的商店
        if(facility_used[facility] == 0 && !can_open(facility, m_random) && x != 0)
          continue;        
        if(m_data.facility_capacity[facility]-facility_used[facility] >= m_data.customer_demand[customer]
        && facility != assignment[customer]) // 要避开调度到同一个商店的情况(相当于没调动,而且会出bug)
          break;
      }
      int E = m_data.assignment_cost[facility][customer]-m_data.assignment_cost[assignment[customer]][customer];
      if(facility_used[facility] == 0) {
        // 当前调整如果需要开启新的商店
        E += m_data.facility_opening_cost[facility];
      } 
      if(facility_used[assignment[customer]] == m_data.customer_demand[customer]) {
        // 当前调整如果会关闭旧的商店
        E -= m_data.facility_opening_cost[assignment[customer]];
      }
      if(E <= 0) { // 如果是优的解,接受
        facility_used[assignment[customer]] -= m_data.customer_demand[customer];
        assignment[customer] = facility;
        facility_used[assignment[customer]] += m_data.customer_demand[customer];
        result += E;
        last_update = i;
        // cout << i << " : " << result << endl;
      } else {  // 如果是差的解,以一定概率接受
        float R = get_random(10000)/(float)10000;
        float P = exp(-E/T);
        if(R < P) {
          facility_used[assignment[customer]] -= m_data.customer_demand[customer];
          assignment[customer] = facility;
          facility_used[assignment[customer]] += m_data.customer_demand[customer];
          result += E;
          last_update = i;        
        }
      }
      T *= factor; // 降温
      i++;
    }
    if(result < final_result) {
      final_result = result;
      final_times = i;
      final_last_update = last_update;
      m_data.assignment = assignment;
      m_data.facility_used = facility_used;
    }
  }
  cout << "SA final cost: " << final_result << " total times: " << final_times << " last update: " << final_last_update << " check: " << evaluation(m_data.assignment, m_data) << endl;
  return final_result;
  // cout << "check result..." << endl;
  // check(assignment, m_data);
}

运行结果

   Result  Time(s)
p1  8958  0.542318
p2  7977  0.574981
p3  9521  0.456748
p4  11335 0.434649
p5  9037  0.222143
p6  7781  0.216178
p7  9602  0.231183
p8  11377 0.233821
p9  8576  0.332075
p10 7648  0.358680
p11 9226  0.336261
p12 10826 0.324133
p13 8798  1.668732
p14 7435  1.281751
p15 10185 1.042824
p16 12255 1.464110
p17 8719  1.065602
p18 7519  1.008021
p19 9319  1.221803
p20 11606 0.977873
p21 8567  0.679936
p22 7332  0.649653
p23 10187 0.642594
p24 11057 0.796385
p25 12995 2.124665
p26 11353 2.373364
p27 14023 1.998778
p28 15730 1.702998
p29 13257 1.971333
p30 12171 1.774540
p31 14723 1.401018
p32 17377 2.267692
p33 13366 2.080220
p34 11325 1.964321
p35 13981 2.501082
p36 15039 2.642908
p37 12793 1.685629
p38 11280 1.486809
p39 13540 1.251547
p40 14984 1.465966
p41 6628  0.485934
p42 6976  1.455323
p43 6098  2.149522
p44 7160  0.493512
p45 6910  6.036019
p46 7409  2.324937
p47 6309  0.581589
p48 6459  1.213418
p49 5625  1.343800
p50 9343  0.356038
p51 8180  0.739496
p52 9403  0.462276
p53 10375 1.207710
p54 9207  0.483871
p55 9195  1.347166
p56 23371 0.605247
p57 29942 0.714306
p58 42494 0.614179
p59 32929 0.643699
p60 22875 1.437787
p61 29571 1.117360
p62 41236 1.174382
p63 32934 1.109773
p64 22970 1.780464
p65 29930 1.659472
p66 36962 1.782220
p67 32720 1.151957
p68 23150 1.530568
p69 30626 1.938921
p70 39355 1.266474
p71 33590 1.367931

 

具体信息:

(依次为:总开销,商店是否开放,各个顾客的安排)

[p1]
8958
1 1 1 1 1 1 0 0 1 1 
8 2 1 5 3 8 2 4 4 1 9 0 3 2 8 3 4 0 9 4 3 4 9 4 2 5 1 5 0 5 2 5 0 3 9 4 4 3 0 4 1 8 1 5 4 0 2 0 4 0 
[p2]
7977
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 2 0 4 0 
[p3]
9521
1 1 1 1 1 1 1 0 1 0 
8 2 1 6 3 8 2 4 4 1 4 0 3 2 8 3 2 0 6 4 3 4 6 4 2 5 1 5 0 5 2 6 0 3 4 4 4 3 0 4 1 8 1 5 4 0 2 0 4 0 
[p4]
11335
1 0 1 1 1 1 1 0 1 1 
2 8 5 6 3 8 2 4 4 5 9 8 3 2 8 3 4 0 9 4 3 4 6 4 2 5 3 5 0 5 2 6 0 3 9 4 4 3 0 4 5 8 3 5 4 0 2 0 4 0 
[p5]
9037
1 1 1 1 1 1 1 0 1 1 
8 8 1 6 1 8 2 4 4 1 9 8 0 2 8 3 2 0 9 9 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 9 0 4 3 
[p6]
7781
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 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 3 4 0 
[p7]
9602
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 2 0 9 9 3 2 6 4 2 6 1 1 8 1 9 6 0 3 9 4 4 3 0 4 1 8 1 6 4 0 9 0 4 0 
[p8]
11377
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 2 3 7 0 
[p9]
8576
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 4 1 8 1 6 4 0 2 0 4 0 
[p10]
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 
[p11]
9226
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 4 1 8 1 6 4 0 2 0 4 0 
[p12]
10826
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 4 1 8 1 6 4 0 2 0 4 0 
[p13]
8798
1 1 0 1 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 1 
16 1 10 10 1 15 17 13 14 17 15 19 1 10 13 3 15 10 17 9 14 15 15 19 9 17 16 17 1 17 13 15 13 16 3 10 3 19 19 13 9 0 0 0 3 13 14 10 19 9 
[p14]
7435
0 1 0 1 0 0 1 0 0 1 1 0 1 1 0 1 1 1 0 1 
16 12 10 10 1 12 17 13 12 17 15 19 1 6 13 3 15 10 17 9 12 15 15 19 6 17 16 17 1 17 13 15 13 16 3 10 3 19 19 13 6 16 15 16 3 13 12 10 19 9 
[p15]
10185
0 0 1 1 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 
16 3 10 10 18 18 3 18 7 4 7 4 4 10 2 3 7 7 4 8 18 18 7 2 10 4 16 3 3 4 2 7 2 16 3 10 3 18 4 2 8 16 16 16 8 18 7 10 2 8 
[p16]
12255
1 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 
0 14 7 7 19 19 17 2 14 17 7 19 19 9 2 14 2 7 19 9 14 7 7 19 9 17 0 17 17 17 2 7 2 0 17 14 8 19 19 2 8 7 0 0 8 2 14 9 19 9 
[p17]
8719
0 1 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 
16 14 10 10 1 15 17 13 14 17 15 1 1 10 13 14 15 10 17 9 14 15 15 13 9 1 16 17 14 17 13 15 13 16 17 10 8 1 1 13 9 16 15 16 8 13 14 10 1 9 
[p18]
7519
1 1 0 1 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0 1 
0 1 10 10 1 15 17 13 7 17 15 19 1 10 13 3 15 10 17 9 15 15 15 19 9 17 0 17 1 17 13 7 13 0 3 10 3 19 19 13 9 0 15 0 3 13 7 10 19 9 
[p19]
9319
1 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 
0 3 10 10 1 1 17 13 3 17 15 1 1 6 13 3 15 10 17 6 15 15 15 13 6 17 0 17 1 17 13 15 13 0 3 10 3 1 1 13 6 0 15 0 3 13 10 10 1 6 
[p20]
11606
0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1 
16 1 10 10 1 18 17 18 14 17 15 19 1 10 18 11 15 10 17 11 14 15 15 19 10 17 16 17 1 17 18 15 18 16 1 10 11 19 19 18 14 16 15 16 11 15 14 14 19 11 
[p21]
8567
0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 1 0 1 
16 1 10 10 1 13 17 13 14 17 5 19 1 10 13 14 5 10 17 9 14 5 5 19 9 17 16 17 1 17 13 14 13 16 1 10 17 19 19 13 10 16 5 16 9 5 14 10 19 9 
[p22]
7332
1 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 1 
0 1 10 10 1 15 17 13 3 17 15 19 1 6 13 3 15 10 17 6 15 15 15 19 6 17 0 17 1 17 13 15 13 0 3 10 3 19 19 13 6 0 0 0 3 13 15 10 19 6 
[p23]
10187
0 0 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 0 
16 14 10 10 18 18 17 18 14 17 7 2 18 10 2 11 5 10 17 11 14 5 7 2 10 17 16 17 17 17 2 7 2 16 11 10 11 18 2 2 10 16 5 16 11 5 14 10 2 11 
[p24]
11057
1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 0 1 1 1 
0 3 10 10 19 18 17 18 14 17 15 19 19 10 18 3 15 10 17 9 14 15 15 19 9 17 0 17 3 17 18 15 18 0 3 10 3 19 19 18 10 0 0 0 3 15 14 10 19 9 
[p25]
12995
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 0 0 1 
20 11 20 14 20 5 2 24 14 17 24 8 8 20 7 14 14 17 5 11 2 0 5 7 5 8 2 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 7 20 11 8 29 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 24 0 24 24 20 20 11 17 24 8 24 20 14 24 20 7 20 17 2 17 2 7 20 5 2 24 17 11 7 5 2 14 25 20 8 17 17 25 2 29 7 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 20 8 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 
[p26]
11353
1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 
20 11 13 14 20 5 2 24 14 17 24 8 8 20 0 14 14 17 5 11 2 0 5 2 5 8 2 24 5 24 5 25 13 25 20 20 24 24 0 14 0 14 24 8 24 14 0 13 11 8 5 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 24 0 5 24 20 20 11 17 24 8 24 20 14 24 20 0 13 17 17 17 17 0 20 5 2 24 0 11 0 5 2 14 25 20 8 17 14 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 13 8 0 5 24 0 25 0 11 24 5 8 14 0 5 20 17 0 8 20 14 8 25 25 5 2 5 
[p27]
14023
1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 
20 11 13 14 20 5 2 24 14 17 24 8 8 20 2 14 14 17 5 11 2 0 5 2 5 8 2 24 5 24 5 25 13 25 20 20 24 24 0 14 0 14 24 8 24 14 7 13 11 8 5 14 14 5 20 20 17 11 11 14 0 5 20 11 11 11 24 0 24 24 20 20 11 17 24 8 24 20 14 24 20 7 20 17 2 17 17 7 20 5 2 24 7 11 7 5 14 14 25 20 8 17 17 25 2 25 7 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 13 8 0 5 24 0 25 0 11 24 5 8 14 7 5 20 17 0 8 20 14 8 25 25 5 2 5 
[p28]
15730
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 0 0 0 
20 11 20 14 20 5 2 24 14 17 24 8 8 20 2 14 14 17 5 11 14 0 5 17 5 8 2 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 20 11 8 5 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 24 0 5 24 20 20 11 17 24 8 24 20 14 24 20 7 20 17 17 17 2 7 20 5 2 24 17 11 7 5 2 14 25 20 8 17 14 25 2 25 7 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 20 8 0 5 24 0 25 0 11 24 5 8 14 7 5 20 17 0 8 20 14 8 25 25 5 2 5 
[p29]
13257
1 0 1 0 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 
20 11 20 2 20 5 2 9 14 17 9 8 8 20 2 14 14 17 5 11 2 0 9 17 5 8 2 24 24 9 5 25 6 25 20 20 24 24 0 14 0 14 24 8 24 14 0 20 11 8 5 14 14 5 6 20 17 11 11 14 0 5 20 11 11 11 9 0 9 9 8 6 11 17 24 8 9 20 2 24 20 0 20 17 2 17 17 0 20 5 2 24 17 11 17 5 2 2 25 8 8 17 17 25 2 25 0 11 14 17 14 14 2 11 11 25 24 24 24 24 5 8 25 20 8 0 5 9 0 25 0 11 24 5 8 14 17 5 20 17 0 8 8 14 8 25 25 5 2 5 
[p30]
12171
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 1 0 
20 11 13 2 20 5 2 9 14 17 9 8 8 20 17 14 14 17 5 11 2 0 5 17 9 8 2 24 5 9 5 25 13 25 20 20 24 24 0 14 0 14 24 28 24 14 7 13 11 8 5 14 14 5 13 20 17 11 11 14 0 5 20 11 11 11 9 0 9 9 20 20 11 17 24 8 9 20 14 24 20 7 13 17 17 17 17 7 20 5 2 24 17 11 17 9 2 2 25 13 8 17 17 25 2 25 7 11 28 28 14 14 2 11 11 25 24 24 24 24 5 8 25 13 8 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 
[p31]
14723
1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 1 
20 11 13 2 20 5 2 24 14 17 29 8 8 20 17 14 14 17 25 11 2 0 5 17 29 8 2 24 5 29 29 25 13 25 20 20 5 24 0 14 0 8 24 8 24 14 0 13 11 8 29 14 14 5 13 20 17 11 11 14 0 5 20 11 11 11 5 0 29 24 20 20 11 17 24 8 24 20 14 24 20 7 13 17 2 17 17 7 20 29 2 5 17 11 17 24 2 2 25 13 8 17 17 25 2 29 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 13 8 0 5 5 0 25 0 11 24 29 8 14 7 5 20 17 0 8 20 14 8 25 25 5 2 5 
[p32]
17377
1 0 1 0 0 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 11 13 2 20 5 2 24 14 17 24 8 8 20 17 14 14 17 25 11 2 0 5 17 25 8 2 24 24 24 5 25 13 25 20 20 24 5 0 14 0 14 24 8 24 14 0 13 27 8 25 2 14 5 13 20 17 27 0 14 0 5 20 11 11 11 25 0 5 25 20 20 11 17 24 8 24 20 14 25 20 7 13 17 2 17 17 7 20 25 2 24 17 11 17 5 2 2 25 13 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 27 24 24 5 5 5 8 25 13 8 0 5 24 0 25 0 11 24 27 8 14 7 5 20 17 0 8 20 14 8 27 25 5 2 5 
[p33]
13366
1 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 
20 11 20 2 20 5 2 9 14 17 24 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 13 25 20 20 24 24 0 14 0 14 24 8 24 14 0 13 11 8 5 14 14 5 13 20 17 11 11 14 0 5 20 11 11 11 9 0 5 24 20 20 11 17 24 8 24 20 14 24 20 0 20 17 17 17 17 0 20 5 2 24 17 11 17 24 2 2 25 20 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 13 8 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 
[p34]
11325
1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 
20 11 13 2 20 5 2 5 14 17 24 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 13 11 8 5 14 14 5 13 20 17 11 0 14 0 5 20 11 11 11 24 0 24 5 20 20 11 17 24 8 24 20 14 24 20 0 13 17 17 17 17 0 20 5 2 24 17 11 17 5 2 2 25 13 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 13 8 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 
[p35]
13981
1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 
20 11 20 2 20 5 2 24 14 17 5 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 13 11 8 5 14 14 5 13 20 17 11 11 14 0 5 20 11 11 11 24 0 24 5 20 20 11 17 24 8 24 20 14 24 20 7 13 17 17 17 17 7 20 5 2 24 17 11 17 5 2 2 25 13 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 13 8 0 5 24 0 25 0 11 24 5 8 14 7 5 20 17 0 8 20 14 8 25 25 5 2 5 
[p36]
15039
1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 
20 11 20 2 20 5 2 24 14 17 24 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 8 25 20 20 24 24 0 14 0 14 24 8 24 14 0 20 11 8 5 14 14 5 8 20 17 11 11 14 0 5 20 11 11 11 24 0 5 24 20 20 11 17 24 8 24 20 14 24 20 0 20 17 17 17 17 0 20 5 2 24 17 11 17 5 2 2 25 20 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 20 8 0 5 5 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5 
[p37]
12793
1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 
20 11 13 2 20 5 2 24 14 17 24 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 13 25 20 20 24 24 0 14 0 14 24 8 24 14 0 13 11 8 5 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 24 0 5 24 20 20 11 17 24 8 24 20 14 24 20 0 13 17 17 17 17 0 20 5 2 24 17 11 17 5 2 2 25 20 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 13 8 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 
[p38]
11280
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 0 0 0 
20 11 20 2 20 5 2 24 14 17 24 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 20 11 8 5 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 24 0 5 24 20 20 11 17 24 8 24 20 14 24 20 7 20 17 17 17 17 7 20 5 2 24 17 11 17 5 2 2 25 20 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 20 8 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 
[p39]
13540
1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 
20 11 13 2 20 5 2 24 14 17 24 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 11 20 11 20 20 24 24 0 14 0 14 24 8 24 14 0 13 27 8 5 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 24 0 5 24 20 20 11 17 24 8 24 20 14 24 20 0 13 17 17 17 17 0 20 5 2 24 17 11 17 24 2 2 27 20 8 17 17 11 2 5 17 11 14 8 14 14 2 11 11 27 24 24 24 24 5 8 11 13 8 0 5 24 0 27 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 27 11 5 2 5 
[p40]
14984
1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 
20 11 20 2 20 5 2 24 14 17 24 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 20 11 8 5 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 24 0 24 24 20 20 11 17 24 8 24 20 14 24 20 0 20 17 17 17 17 0 20 5 2 24 17 11 17 24 2 2 25 20 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 20 8 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 
[p41]
6628
1 0 1 1 0 1 1 0 0 1 
5 6 0 6 2 9 3 3 5 3 5 6 2 6 2 2 5 3 0 6 6 6 6 6 6 5 5 0 5 5 5 0 0 0 3 9 2 6 6 9 2 3 3 3 3 5 0 5 6 6 6 6 6 6 9 9 2 3 3 3 0 0 6 5 0 6 6 6 5 5 0 0 5 0 3 9 2 2 2 5 5 2 2 2 9 9 9 9 9 2 
[p42]
6976
0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 
17 14 9 9 7 18 17 17 17 17 9 18 18 14 18 18 18 17 14 14 14 9 9 17 18 18 9 17 17 17 7 18 18 14 14 18 14 7 7 7 7 17 17 18 9 14 18 18 18 18 17 17 7 17 17 9 17 18 14 14 18 17 9 17 9 17 7 18 18 18 18 18 18 18 18 18 18 18 18 18 
[p43]
6098
0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
29 7 11 29 7 7 7 7 29 29 29 29 7 7 11 11 11 11 7 7 7 7 7 11 7 7 29 11 29 29 29 29 29 7 7 7 7 7 11 11 29 7 29 29 29 7 7 7 7 11 11 7 7 11 11 11 7 11 7 29 29 29 7 29 29 29 29 29 29 29 
[p44]
7160
1 1 1 1 1 1 1 1 1 1 
4 4 4 4 4 4 4 4 6 6 0 0 0 0 0 0 1 1 1 7 1 7 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 3 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 9 9 9 9 6 5 7 5 
[p45]
6910
1 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 
0 0 0 0 0 0 0 1 18 1 1 1 1 1 18 2 2 2 2 2 2 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 0 0 2 2 11 11 18 17 18 13 18 5 13 13 11 18 18 18 5 1 2 2 2 2 0 17 13 13 11 11 13 1 18 2 13 17 17 17 17 17 13 13 
[p46]
7409
1 1 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 
10 0 10 10 10 0 10 1 1 18 1 1 1 1 19 2 2 2 2 2 2 27 27 27 27 27 27 8 8 27 8 8 8 8 10 2 2 14 14 1 0 19 19 0 14 14 18 27 26 18 0 26 27 0 2 26 27 18 18 14 19 19 0 18 26 27 14 27 19 18 
[p47]
6309
1 1 1 1 1 1 1 1 1 1 
0 0 0 0 0 0 0 0 0 2 1 2 1 1 1 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 0 7 7 7 7 7 7 8 8 6 8 8 8 8 8 9 2 9 9 9 9 9 0 
[p48]
6459
1 1 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 
0 0 0 0 1 0 1 1 1 2 3 2 2 3 3 5 5 5 5 5 5 5 5 5 9 5 5 9 5 5 5 8 8 8 8 8 8 8 9 9 9 9 11 11 11 11 11 11 13 13 13 13 13 13 13 14 14 13 14 13 0 14 14 14 14 17 17 17 17 17 17 17 17 17 17 17 0 17 0 0 
[p49]
5625
0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 
2 2 2 2 2 2 2 2 2 2 2 2 2 6 6 6 6 6 6 6 6 6 9 9 9 9 9 13 13 14 13 13 13 14 13 14 13 13 13 13 13 13 20 20 20 20 20 20 21 20 21 20 2 21 21 21 21 26 26 26 26 26 26 26 26 28 28 28 28 28 
[p50]
9343
1 1 1 1 1 1 1 1 0 1 
3 6 3 0 2 9 5 5 3 7 7 4 6 9 9 2 9 2 5 3 6 6 0 4 0 6 7 4 4 7 7 7 3 3 3 5 9 9 0 6 0 9 9 9 5 5 5 5 5 3 3 5 6 0 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 1 7 2 7 9 1 2 2 2 1 1 9 1 1 
[p51]
8180
1 1 0 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 1 
15 0 19 10 12 13 5 5 15 1 5 14 18 13 13 13 12 5 5 15 0 0 10 14 14 14 1 19 19 15 1 1 19 19 15 5 13 13 10 0 0 13 13 13 12 5 5 5 5 15 15 5 0 14 14 10 13 0 18 12 13 5 1 5 15 15 10 19 1 1 15 0 0 0 10 19 19 19 19 19 19 5 12 12 13 13 18 5 12 1 13 13 13 18 18 18 18 18 13 13 
[p52]
9403
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 3 8 8 8 3 8 3 9 9 9 9 9 9 9 9 5 6 6 6 6 6 6 6 6 6 6 7 7 4 8 8 5 5 3 4 6 7 5 3 3 3 4 6 5 5 5 3 3 5 6 4 7 6 6 4 3 3 5 3 4 7 1 6 3 3 5 5 3 3 7 5 3 5 5 1 1 5 1 3 4 3 7 
[p53]
10375
0 1 1 1 0 1 1 1 0 1 0 0 1 1 0 1 0 0 1 1 
5 5 5 5 5 5 5 5 19 19 19 7 7 7 7 7 7 12 13 12 12 13 13 12 12 9 9 9 15 9 15 9 15 9 18 18 18 18 18 18 18 18 18 18 5 5 7 12 12 15 15 3 7 18 5 15 3 3 1 6 18 2 15 13 3 13 2 18 6 5 18 18 6 3 3 15 3 6 6 2 18 19 13 15 15 3 1 6 15 3 15 2 9 2 15 18 1 6 1 5 
[p54]
9207
1 0 1 1 1 1 1 1 0 1 
7 7 7 7 7 7 7 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 3 2 3 3 2 3 3 3 3 3 3 3 3 3 3 3 6 6 3 6 6 6 3 6 6 3 3 3 3 6 6 6 6 6 6 6 6 6 5 5 6 5 5 5 6 5 0 0 0 0 5 7 0 0 0 0 0 0 4 0 4 4 4 4 4 4 4 4 9 4 9 9 9 2 9 9 9 
[p55]
9195
1 0 1 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1 1 0 
17 18 17 18 18 18 17 2 8 8 8 8 2 8 8 2 2 2 8 6 12 12 2 6 12 12 12 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 0 7 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 11 11 11 11 11 11 11 7 11 9 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 
[p56]
23371
1 0 1 1 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 
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 8 6 4 8 19 13 21 19 14 24 16 24 16 8 6 11 8 18 25 29 0 7 8 13 11 5 14 28 25 18 12 19 8 23 23 20 23 8 16 10 0 26 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 8 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 
[p57]
29942
0 0 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 1 
18 19 21 27 21 28 21 27 22 27 4 28 13 13 28 18 13 20 22 27 18 16 10 24 10 18 22 28 29 21 19 19 4 16 27 19 20 8 24 16 18 8 12 4 8 4 13 16 19 20 24 16 24 16 8 19 18 8 18 7 29 27 7 8 13 12 23 19 28 12 18 12 4 8 23 23 20 23 8 16 23 23 8 7 29 13 19 21 27 7 27 19 7 7 23 8 28 12 10 28 19 21 7 18 4 27 4 16 22 13 19 29 27 28 12 8 27 7 10 8 20 18 10 19 4 16 16 18 4 28 28 24 12 20 23 8 13 13 28 10 12 22 28 12 7 23 16 16 22 7 24 20 23 28 8 18 21 16 13 13 13 27 10 24 23 24 23 4 13 21 13 20 19 10 4 24 24 10 29 10 23 21 21 28 12 8 28 23 27 21 21 21 19 4 7 12 7 21 10 19 
[p58]
42494
1 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 1 0 1 1 1 1 1 0 0 0 1 1 
18 28 21 22 2 12 21 0 22 17 29 28 20 23 28 18 5 20 22 0 22 16 5 24 23 18 24 28 29 2 6 14 29 16 24 6 20 8 24 16 18 8 6 29 8 17 8 21 14 14 24 16 2 16 8 6 18 8 22 18 29 0 18 8 23 12 5 14 17 12 18 6 6 8 23 23 20 5 20 16 23 0 8 12 29 20 6 5 24 18 28 6 18 12 2 8 28 6 0 17 17 21 6 18 29 0 29 24 22 8 14 29 22 6 12 8 28 18 17 8 20 12 17 14 14 16 2 28 14 17 28 24 12 20 5 8 23 20 28 14 28 22 12 12 12 5 24 21 22 12 24 17 23 0 8 28 2 16 8 20 23 0 23 24 5 0 5 29 23 21 5 20 28 14 29 2 0 14 29 20 5 21 2 6 6 8 12 23 0 21 2 21 6 29 22 28 18 21 17 14 
[p59]
32929
1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 0 1 1 1 1 1 1 0 
18 19 21 27 2 12 2 27 18 28 4 28 13 13 28 18 13 10 27 0 18 21 23 24 10 18 27 19 4 2 19 19 4 21 27 6 8 8 24 21 18 9 6 4 8 19 13 21 19 14 24 24 24 21 8 6 11 9 18 7 4 0 7 8 13 11 23 14 28 25 18 12 19 9 23 23 10 23 8 24 10 0 9 25 4 13 6 2 27 7 28 6 25 25 2 13 11 6 0 28 28 21 25 18 4 0 4 24 27 13 19 4 27 12 12 8 28 7 17 8 26 11 17 19 26 21 2 11 26 17 28 24 25 10 23 9 13 13 28 10 12 27 11 11 25 2 24 21 27 25 24 17 23 0 8 11 2 21 13 13 13 27 10 24 23 27 23 4 13 21 23 8 19 14 26 2 0 10 4 10 2 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 21 10 19 
[p60]
22875
1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 
7 19 21 27 2 12 21 27 22 28 4 28 13 1 28 7 1 20 22 0 27 16 5 24 10 27 27 19 4 2 19 19 4 16 27 6 20 8 24 16 7 9 6 4 8 19 13 21 19 14 24 16 24 16 8 6 11 9 22 25 4 0 7 8 13 11 5 14 28 25 7 12 19 9 5 13 20 5 8 16 10 0 9 25 4 13 6 5 27 7 28 6 25 25 2 13 11 6 0 28 28 21 25 7 4 0 4 24 22 13 19 4 27 12 12 8 28 7 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 1 9 1 13 28 10 12 22 11 11 25 5 24 21 27 25 24 17 10 0 8 11 2 16 13 13 13 27 10 24 5 27 5 4 1 21 1 20 19 14 26 2 0 10 4 10 5 21 2 19 12 8 28 10 0 21 2 21 6 4 7 12 7 21 10 19 
[p61]
29571
1 0 1 1 1 0 1 0 1 0 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 
18 6 2 22 0 6 2 0 22 14 4 14 8 13 6 18 3 8 22 0 18 22 2 0 13 18 22 14 4 2 6 4 4 22 0 6 8 8 22 2 18 8 6 4 8 4 13 2 14 14 2 22 22 2 8 6 11 8 18 18 4 0 18 8 13 11 13 14 6 11 18 11 6 8 13 13 8 13 8 22 13 0 8 18 4 13 4 3 22 18 11 6 11 11 0 3 6 6 0 11 14 0 11 18 4 0 4 22 22 3 14 4 18 6 11 8 11 18 14 8 14 11 0 6 4 22 2 18 4 0 11 2 11 8 13 8 3 3 6 14 11 22 6 11 11 2 22 2 22 11 0 14 13 0 8 6 2 2 3 13 13 18 13 0 13 22 13 4 3 2 13 8 14 14 4 22 0 14 4 14 2 2 2 6 6 8 11 13 0 2 2 2 6 4 18 11 18 2 14 14 
[p62]
41236
1 0 0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 
18 26 0 27 10 4 0 27 22 27 4 0 13 13 12 18 3 20 22 27 18 22 10 27 10 18 27 26 4 13 4 4 4 22 27 12 20 20 22 22 22 26 4 26 13 26 13 0 26 20 27 22 27 22 20 4 18 26 18 18 4 0 18 20 13 12 10 10 4 12 18 12 26 20 10 13 20 10 20 22 10 0 26 12 4 13 4 13 27 18 20 4 18 12 10 3 27 12 0 27 26 0 12 18 4 0 4 22 22 3 26 4 18 12 27 20 0 18 10 20 26 18 0 26 26 22 10 12 26 0 27 0 12 20 13 20 3 3 27 10 12 22 12 12 18 0 22 22 27 18 27 0 10 0 13 12 0 22 3 13 13 27 10 27 10 27 13 26 3 0 13 20 26 20 26 13 27 20 4 20 10 0 22 12 12 20 4 13 0 22 0 22 4 4 18 12 18 0 10 26 
[p63]
32934
1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 
18 19 2 27 2 12 2 27 18 28 29 28 13 13 28 18 13 20 27 0 18 16 5 24 10 18 27 19 29 2 19 19 26 16 27 6 20 8 24 16 18 9 6 26 8 19 13 2 19 20 24 16 24 16 8 6 11 9 18 25 29 0 25 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 25 28 6 25 25 2 13 11 6 0 28 28 16 25 18 29 0 29 24 27 13 19 29 27 12 12 8 28 25 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 23 9 13 13 28 10 12 27 11 11 25 5 24 16 27 25 24 17 23 0 8 11 2 16 13 13 13 27 10 24 5 27 5 29 13 2 5 20 19 10 26 2 0 10 29 10 5 16 2 19 12 8 28 23 0 2 2 2 6 29 25 12 25 2 10 19 
[p64]
22970
1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 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 13 28 18 3 20 22 0 18 21 23 24 10 18 27 19 29 2 19 19 4 21 27 6 20 8 24 15 18 8 6 4 8 19 13 21 19 14 24 24 24 21 8 6 11 8 18 25 29 0 7 8 13 11 23 14 28 25 18 12 19 8 23 23 20 23 8 24 10 0 8 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 14 11 17 19 4 21 2 11 19 17 28 24 25 20 23 8 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 23 20 19 14 4 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 
[p65]
29930
1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 
18 19 21 27 2 12 15 27 22 28 4 28 13 13 28 18 13 20 22 0 18 16 5 24 10 18 27 19 4 2 19 19 4 16 27 6 20 8 24 16 18 8 6 4 8 19 13 21 19 14 24 16 24 16 8 6 11 8 18 7 4 0 7 8 13 11 5 14 28 25 18 12 19 8 5 13 20 5 8 16 10 0 8 25 4 13 6 5 27 7 28 6 25 25 2 13 11 6 0 28 28 15 25 18 4 0 4 24 22 13 19 4 27 12 12 8 28 7 17 8 14 11 17 19 4 16 2 11 19 17 28 24 25 20 5 8 13 13 28 10 12 22 11 11 25 5 24 15 27 25 24 17 10 0 8 11 2 15 13 13 13 27 10 24 5 27 5 4 13 21 5 20 19 14 4 2 0 10 4 10 5 21 2 19 12 8 28 10 0 21 2 21 6 4 7 12 7 15 10 19 
[p66]
36962
0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 
18 19 2 22 22 11 2 28 22 28 28 28 3 3 28 18 3 14 22 28 18 22 3 22 14 18 22 19 19 2 19 19 19 2 18 11 14 3 22 2 18 14 19 14 3 19 3 2 19 14 2 22 22 2 14 19 11 14 18 11 19 28 18 14 3 11 2 14 28 11 18 11 28 14 14 3 14 2 14 22 14 2 14 11 19 3 19 2 22 18 28 19 11 11 2 3 11 11 28 28 28 22 11 18 19 22 19 22 22 3 14 19 18 11 11 3 28 11 14 3 19 11 28 19 19 22 2 11 28 28 28 2 11 14 3 14 3 3 28 14 11 22 11 11 11 2 22 22 18 11 22 28 3 28 3 28 2 2 3 3 3 18 3 22 2 18 2 19 3 2 3 3 19 14 19 2 28 14 19 14 2 2 2 28 11 14 28 3 28 2 2 2 19 19 18 11 18 2 14 19 
[p67]
32720
1 0 1 1 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 
18 19 2 22 2 12 15 27 22 28 4 28 10 3 28 18 3 20 22 0 18 16 23 24 10 18 27 19 4 2 19 19 4 16 27 6 20 8 24 15 18 8 6 26 8 19 3 16 19 10 24 16 24 16 8 6 11 8 18 25 4 0 18 8 8 11 23 17 28 25 18 12 19 20 23 23 20 23 8 16 10 0 26 25 4 10 19 2 27 25 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 8 28 25 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 23 8 3 3 28 10 12 22 11 11 25 2 24 15 27 25 24 17 23 0 8 11 2 15 3 3 23 27 10 24 23 27 23 4 3 16 23 20 19 10 26 2 0 10 4 10 2 15 2 19 12 8 28 23 0 2 2 16 6 4 25 12 25 15 10 19 
[p68]
23150
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 
18 19 21 27 2 12 15 27 22 28 4 28 10 1 28 18 1 20 22 0 18 16 5 24 10 18 27 19 4 2 19 19 4 16 27 6 20 8 24 16 18 8 6 4 8 19 3 21 19 14 24 16 24 16 8 6 11 8 18 7 4 0 7 8 3 11 5 14 28 25 18 12 19 8 23 23 20 23 8 16 10 0 26 25 4 10 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 8 3 3 28 10 12 22 11 11 25 5 24 15 27 25 24 17 23 0 8 11 2 15 3 3 1 27 10 24 5 27 5 4 3 21 1 20 19 14 26 2 0 10 4 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 15 10 19 
[p69]
30626
1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 
7 19 21 27 2 12 15 27 22 28 4 28 13 13 28 7 3 20 22 0 27 16 5 24 10 27 27 19 29 2 19 19 4 16 27 6 20 8 24 16 7 9 6 4 8 19 13 21 19 20 24 16 24 16 8 6 11 9 22 7 29 0 7 8 13 11 5 17 28 25 7 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 7 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 5 20 19 10 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 
[p70]
39355
0 0 1 0 1 0 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 
24 19 21 24 21 11 21 24 16 14 14 28 13 13 28 11 13 8 16 24 24 16 21 24 8 11 24 19 4 2 19 19 4 16 24 19 8 8 24 16 11 8 19 4 8 4 13 21 19 14 24 16 21 16 8 4 11 8 16 11 4 2 24 8 13 11 2 14 19 11 16 11 19 8 2 13 8 2 8 16 14 2 8 11 14 13 19 2 24 11 11 4 11 28 2 13 28 19 14 28 14 21 28 11 4 21 4 24 16 13 19 4 16 11 28 8 11 11 14 8 14 28 14 19 14 16 2 28 19 2 28 21 28 8 13 8 8 8 28 14 28 16 28 11 11 2 16 21 24 19 24 14 13 2 8 11 2 16 13 13 13 24 8 21 2 28 2 4 8 21 13 8 19 14 4 2 21 14 4 8 2 21 21 19 11 8 11 13 21 21 2 21 19 4 11 19 28 21 13 19 
[p71]
33590
0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 
18 19 21 24 2 12 21 28 18 28 4 28 13 1 28 18 1 20 24 17 18 21 5 24 10 18 24 19 29 2 19 19 4 21 28 6 20 8 24 21 18 9 6 4 8 19 13 21 19 14 24 24 2 21 8 6 11 9 18 7 29 2 7 8 13 11 5 14 28 25 18 12 19 9 23 23 20 23 8 24 10 17 9 25 29 13 6 5 24 7 28 6 25 25 2 13 11 6 17 28 28 21 25 18 4 24 4 24 18 13 19 4 18 12 12 8 28 7 17 8 9 11 17 19 9 21 2 11 19 17 28 24 25 20 23 9 1 13 28 10 12 18 11 11 25 5 24 21 18 25 24 17 23 17 8 11 2 21 13 13 13 28 10 24 5 18 5 4 1 21 1 20 19 14 4 2 24 10 29 10 5 21 2 19 12 8 28 23 17 21 2 21 6 4 7 12 7 21 10 19 

 

结果分析

从总体来看,模拟退火算法运行的效果地比爬山法要好,但需要更长的执行时间。

代码链接: https://github.com/chent86/algorithm_project1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值