基于贪婪算法查找《游戏厅物语》的最优布局

       最近在玩开罗游戏的《游戏厅物语》,里边有一个很重要的概念就是专区,大概的意思就是在游戏中,设施只能够布置在特定的区域,同时一旦区域中的设施满足一定的组合,该区域中所有设施都会获得一系列加成。每一类专区组合能给区域中所有设施提供三个部分的加成(均可叠加):1. 降低区域中所有设施n%的电费;2. 提高区域中所有游戏机一定数值的吸引力;3. 提高区域中所有游戏机一定数值的收入。游戏中共有133种专区组合方式,同时有56种不同类别的设施,最大的区域可以放置12台设施。人工找最优布局的话,找几天都不见得找得出来。。。

       如何寻找出我们所希望的最优布局可以看做是一个最优化问题,最优化目标可以设定为组合数最多、吸引力加成最高或者收入加成最高。我们首先以组合数最多作为目标来考虑。最简单的考虑是遍历搜索所有可能的排列方式,一个个与专区列表进行比较,找出组合数最多的情况。不过这个方法计算量大的突破天际,假设区域容量为n,那么计算量是o(56^n),正常的电脑是不可能在有生之年找出结果的。所以我们得找个简化计算量的方法来做。

       由于专区可能为2个或者3个设施的组合,因此当区域的容量为2时,专区数最大只能为1。那么再看区域容量为3的情况,在不考虑专区组合方式约束的情况下,最多的专区数显然是由(3设施专区*1+2设施专区*3)组成(当然实际游戏中由于专区组合方式的约束,最多的专区数是3,由(3设施专区*1+2设施专区*2)或者(2设施专区*3)组成)。也就是说,在更大区域中,比较好的组合必定要包含之前我们看到的专区数比较多的情况对吧~那么同理,在区域容量为4的时候,是不是我们就应该选择区域容量为3的时候比较好的组合方式,每个组合都遍历加入不同的设施的情况,再统计专区数比较好的组合方式……显然,这种方法是一种贪婪思想,不能保证找出真正数学意义上的最优解,但是由于这个游戏的专区组合方式不算复杂,所以从游戏的角度而言,只要贪婪程度不是那么高,最优布局要找出来是没啥问题的。

       经过计算,当区域数为12时,区域内专区数最大为21,共有14种组合,如下所示,其中所有游戏机都可以被同类的上位游戏机替换,:

Max Themed Areas: 21
['Angry Missile', 'Begemmed', 'Beijing', 'Big Hitters', 'Digital Fight', 'Insane Cab', 'Rail Baron', 'Road Fight II', 'Speed Required', 'Train Heist', 'Turning Dance', 'Wanna be Rich?']
['Angry Missile', 'Begemmed', 'Big Hitters', 'Digital Fight', 'Insane Cab', 'Rail Baron', 'Road Fight II', 'Roshambo', 'Speed Required', 'Train Heist', 'Turning Dance', 'Wanna be Rich?']
['Angry Missile', 'Big Hitters', 'Digital Fight', 'Flipper Fan', 'Insane Cab', 'Mallet Mammals', 'Rail Baron', 'Road Fight II', 'Roshambo', 'Speed Required', 'Train Heist', 'Wanna be Rich?']
['Angry Missile', 'Begemmed', 'Beijing', 'Big Hitters', 'Digital Fight', 'Insane Cab', 'Rail Baron', 'Road Fight II', 'Speed Required', 'Turning Dance', 'Up The River', 'Wanna be Rich?']
['Begemmed', 'Big Hitters', 'Digital Fight', 'Flipper Fan', 'Mallet Mammals', 'Plumber Bros.', 'Road Fight II', 'Speed Required', 'The Gun Show', 'Turning Dance', 'Wanna be Rich?', 'Zombie Home']
['Big Hitters', 'Flipper Fan', 'Insane Cab', 'Mallet Mammals', 'Plumber Bros.', 'Rail Baron', 'Road Fight II', 'Roshambo', 'Speed Required', 'The Gun Show', 'Train Heist', 'Zombie Home']
['Begemmed', 'Big Hitters', 'Flipper Fan', 'Gradient', 'Mallet Mammals', 'Plumber Bros.', 'Road Fight II', 'Speed Required', 'The Gun Show', 'Turning Dance', 'Wanna be Rich?', 'Zombie Home']
['Begemmed', 'Big Hitters', 'Cutie Fruits', 'Flipper Fan', 'Mallet Mammals', 'Plumber Bros.', 'Road Fight II', 'Speed Required', 'The Gun Show', 'Turning Dance', 'Wanna be Rich?', 'Zombie Home']
['Begemmed', 'Big Hitters', 'Flipper Fan', 'Mallet Mammals', 'Plumber Bros.', 'Road Fight II', 'Roshambo', 'Speed Required', 'The Gun Show', 'Turning Dance', 'Wanna be Rich?', 'Zombie Home']
['Begemmed', 'Big Hitters', 'Flipper Fan', 'Gradient', 'Mallet Mammals', 'Plumber Bros.', 'Road Fight II', 'Speed Required', 'The Gun Show', 'UFO Interloper', 'Wanna be Rich?', 'Zombie Home']
['Begemmed', 'Big Hitters', 'Flipper Fan', 'Gradient', 'Mallet Mammals', 'Plumber Bros.', 'Road Fight II', 'Speed Required', 'The Gun Show', 'Turning Dance', 'UFO Interloper', 'Zombie Home']
['Begemmed', 'Big Hitters', 'Cutie Fruits', 'Flipper Fan', 'Mallet Mammals', 'Plumber Bros.', 'Road Fight II', 'Roshambo', 'Speed Required', 'The Gun Show', 'Turning Dance', 'Zombie Home']
['Begemmed', 'Big Hitters', 'Breakthrough', 'Flipper Fan', 'Gradient', 'Mallet Mammals', 'Plumber Bros.', 'The Gun Show', 'Turning Dance', 'UFO Interloper', 'Wanna be Rich?', 'Zombie Home']
['Begemmed', 'Big Hitters', 'Breakthrough', 'Flipper Fan', 'Gradient', 'Mallet Mammals', 'Plumber Bros.', 'Speed Required', 'The Gun Show', 'UFO Interloper', 'Wanna be Rich?', 'Zombie Home']

      仅仅从设立的优化目标来看,我们的任务似乎已经完成了,但是真的是专区数越多就越好吗?这得看我们从什么方面去看待这个问题。单纯从收入的角度而言,收入最大的组合是专区数为21的下列组合,可以增加收入1765,但是要知道,排名并列第二的两个组合,收入增加量为1750,但专区数仅为18个和19个,超过了其它13种专区数为21的组合。。。

['Angry Missile', 'Begemmed', 'Beijing', 'Big Hitters', 'Digital Fight', 'Insane Cab', 'Rail Baron', 'Road Fight II', 'Speed Required', 'Turning Dance', 'Up The River', 'Wanna be Rich?']

      而在吸引力方面,专区数为21的所有组合全军覆没,最大吸引力加成的组合是专区数为18的下列组合,达到了464,而专区数为21的组合最大吸引力加成为413。

['Angry Missile', 'Big Hitters', 'Creperie', 'Cutie Fruits', 'Flipper Fan', 'Insane Cab', 'Juice Machine', 'Rail Baron', 'Roshambo', 'Speed Required', 'Train Heist', 'Turning Dance']

      因此,视应用场合的不同,我们得到的最优布局当然也是不尽相同的233……所以,下面仅仅给出在专区数最多的情况下,收入最高的各区域布局方式:

Areas: 2
Max Themed Areas: 1
['Digital Fight', 'Digital Fight']
Appeal: 15   Cost: 150

Areas: 3
Max Themed Areas: 3
['The Claw', 'Token Machine', 'Token Storm']
Appeal: 74   Cost: 375

Areas: 4
Max Themed Areas: 5
['Angry Missile', 'Insane Cab', 'Rail Baron', 'Speed Required']
Appeal: 126   Cost: 370

Areas: 5
Max Themed Areas: 7
['Angry Missile', 'Digital Fight', 'Insane Cab', 'Rail Baron', 'Speed Required']
Appeal: 151   Cost: 570

Areas: 6
Max Themed Areas: 9
['Angry Missile', 'Digital Fight', 'Insane Cab', 'Rail Baron', 'Road Fight II', 'Speed Required']
Appeal: 161   Cost: 750

Areas: 7
Max Themed Areas: 11
['Angry Missile', 'Digital Fight', 'Insane Cab', 'Rail Baron', 'Road Fight II', 'Speed Required', 'Turning Dance']
Appeal: 208   Cost: 900

Areas: 8
Max Themed Areas: 13
['Angry Missile', 'Begemmed', 'Digital Fight', 'Insane Cab', 'Rail Baron', 'Road Fight II', 'Speed Required', 'Turning Dance']
Appeal: 233   Cost: 1080

Areas: 9
Max Themed Areas: 15
['Angry Missile', 'Begemmed', 'Digital Fight', 'Insane Cab', 'Rail Baron', 'Road Fight II', 'Speed Required', 'Turning Dance', 'Wanna be Rich?']
Appeal: 282   Cost: 1250

Areas: 10
Max Themed Areas: 17
['Angry Missile', 'Begemmed', 'Big Hitters', 'Digital Fight', 'Insane Cab', 'Rail Baron', 'Road Fight II', 'Speed Required', 'Turning Dance', 'Wanna be Rich?']
Appeal: 321   Cost: 1320

Areas: 11
Max Themed Areas: 19
['Angry Missile', 'Begemmed', 'Beijing', 'Big Hitters', 'Digital Fight', 'Insane Cab', 'Rail Baron', 'Road Fight II', 'Speed Required', 'Turning Dance', 'Wanna be Rich?']
Appeal: 360   Cost: 1515

Areas: 12
Max Themed Areas: 21
['Angry Missile', 'Begemmed', 'Beijing', 'Big Hitters', 'Digital Fight', 'Insane Cab', 'Rail Baron', 'Road Fight II', 'Speed Required', 'Turning Dance', 'Up The River', 'Wanna be Rich?']
Appeal: 384   Cost: 1765

      可能由于某些组合过于优秀,导致从区域为4开始,组合的雷同性很高,不过也并非一定要以这个作为优化目标,比如做全局尽可能多的不同专区啊这种也是很有意思的。以上。

程序和专区组合数据的github地址:https://github.com/PolarisShi/PocketArcadeStorySolver

 

你可能感兴趣的:(闲的蛋疼)