最大化董事会得分

时间:2015-08-29 22:53:58

标签: algorithm maximize

董事会是一个简单的31乘31国际象棋网格。

  • 每个正方形最多可放置一件(技术上最多可达961件)
  • Pieces grant [16 - taxicab_distance_from_middle_square]得分(不能低于0分)
  • 但是每一件作品的分数都会在每件其他作品中丢失1/24
    • 所以一个完全被包围的部分完全没有分数
    • 一件被其他12件作品包围的作品正好是其原始分数的一半
  • 目标当然是找到产生最高分数的作品排列

我尝试过运行一个程序,在任何可以获得最高分的地方一次放置一个程序,但由于每个位置影响其他部分的分数,结果显然甚至不接近最佳。

找到(或至少接近)得分最高的董事会成员的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

似乎好的解决方案有一种有趣的结构。这是一个价值879.25的解决方案:

0000000000000001000000000000000
0000000000000011100000000000000
0000000000000001000000000000000
0000000000001001001000000000000
0000000000011111111100000000000
0000000000001001001000000000000
0000000000000000000000000000000
0000000011111111111111100000000
0000000111111111111111110000000
0000000000000000000000000000000
0000000000000000000000000000000
0000111111111111111111111110000
0001111111111111111111111111000
0000000000000000000000000000000
0000000000000000000000000000000
1111111111111111111111111111111
0111111111111111111111111111110
0000000000000000000000000000000
0000000000000000000000000000000
0000111111111111111111111110000
0000011111111111111111111100000
0000000000000000000000000000000
0000000000000000000000000000000
0000000011111111111111100000000
0000000001111111111111000000000
0000000000000000000000000000000
0000000000001001001000000000000
0000000000001111111000000000000
0000000000000011000000000000000
0000000000000001000000000000000
0000000000000001000000000000000

我通过模拟退火找到了这个解决方案,以及它的7次旋转和反射。

如果你“猜测”中间的一行行如上所述,那么你可以在上面和下面的行中得到可控的小子问题。例如,您可以通过动态编程找到这些子问题的最佳解决方案。