Exemple #1
0
  /**
   * ****** 判断禁忌表中W最大的解,并打印解
   *
   * @param tabuTable
   */
  public static void PrintfSolution(
      int[][] tabuTable, int[] L, int[] W, RectanglePaking rping, int[][] plank) {
    rping.InitPlank(plank); // 木板初始化
    int x = 0; // 表示最优解所处在的列
    int lieshu = tabuTable[0].length;
    int max = tabuTable[0][lieshu - 2];
    for (int i = 1; i < tabuTable.length; i++) {
      if (tabuTable[i][lieshu - 2] > max) {
        max = tabuTable[i][lieshu - 2];
        x = i;
      }
    }

    // Console.WriteLine("最大的价值为: " + max);
    for (int i = 0; i < lieshu; i++)
      // Console.Write(tabuTable[x][i] + " ");
      // Console.WriteLine();

      for (int k = 0; k < tabuTable[0].length - 2; k++) // 将初始解放入木块中
      {
        rping.InsertRectangle(plank, W[tabuTable[x][k] - 1], L[tabuTable[x][k] - 1], k);
      }
    rping.PrintPlank(plank);
  }