我玩Dwarf Fortress游戏。我面临的主要挑战是有效设计堡垒的布局。这意味着,每个工业流程应尽可能密集,以尽量减少行驶距离。最小化顶点距离的算法 - 矮人要塞
一个例子可以是食品工业。每个灰色椭圆代表一栋建筑物。每个白色矩形代表建筑物的产品。
我的目标是要找到算法,将分布在二维网格中的建筑物为,使得这些建筑之间的距离是在这个意义上,他们是如何连接的最小。这意味着fishery
和loom
可以相距很远,但loom
和farmer's
应尽可能接近。
目前我已经考虑使用一些现成的软件来模拟布局,但是算法的一些提示会很好。
目前我正在考虑一些力导向算法,但我不确定离散电网的要求。
问题的形式化:是否有一个Force Draw Graph算法在离散坐标系下工作?
UPDATE:我发现在执行AS3的Force draw algorithm的(网页包含JS版本太多)。我会尝试将其转换为离散版本。但我有一些怀疑它会起作用...
UPDATE2:在评论中请求了一些进一步的限制。它们是: 每个建筑物都占用虚拟网格上的单个单元格。建筑物可以在相邻的单元格上。建筑物不能堆叠/重叠。 (PS:在游戏中,每座建筑物的尺寸都是一定的,通常是3x3,但我想保持这个问题更一般,以便采取更多方法)。
每栋建筑是否只占用一个格子的一个平方?现在你在任何边长上都没有下界,所以最佳解决方案就是堆叠在彼此之上的所有东西。 –
建筑物占用3x3平方,几种类型的游戏中有5x5尺寸的网格单位。但是为了一般性,我们假设每个建筑物可以占据单个网格单元并且建筑物不能堆叠。 – jnovacho
我的猜测是,这个问题有太多方面需要争论到任何现有的算法。我的直觉说,某种形式的模拟退火方法在这里最适合。 –