我玩Dwarf Fortress遊戲。我面臨的主要挑戰是有效設計堡壘的佈局。這意味着,每個工業流程應儘可能密集,以儘量減少行駛距離。最小化頂點距離的算法 - 矮人要塞
一個例子可以是食品工業。每個灰色橢圓代表一棟建築物。每個白色矩形代表建築物的產品。
我的目標是要找到算法,將分佈在二維網格中的建築物爲,使得這些建築之間的距離是在這個意義上,他們是如何連接的最小。這意味着fishery
和loom
可以相距很遠,但loom
和farmer's
應儘可能接近。
目前我已經考慮使用一些現成的軟件來模擬佈局,但是算法的一些提示會很好。
目前我正在考慮一些力導向算法,但我不確定離散電網的要求。
問題的形式化:是否有一個Force Draw Graph算法在離散座標系下工作?
UPDATE:我發現在執行AS3的Force draw algorithm的(網頁包含JS版本太多)。我會嘗試將其轉換爲離散版本。但我有一些懷疑它會起作用...
UPDATE2:在評論中請求了一些進一步的限制。它們是: 每個建築物都佔用虛擬網格上的單個單元格。建築物可以在相鄰的單元格上。建築物不能堆疊/重疊。 (PS:在遊戲中,每座建築物的尺寸都是一定的,通常是3x3,但我想保持這個問題更一般,以便採取更多方法)。
每棟建築是否只佔用一個格子的一個平方?現在你在任何邊長上都沒有下界,所以最佳解決方案就是堆疊在彼此之上的所有東西。 –
建築物佔用3x3平方,幾種類型的遊戲中有5x5尺寸的網格單位。但是爲了一般性,我們假設每個建築物可以佔據單個網格單元並且建築物不能堆疊。 – jnovacho
我的猜測是,這個問題有太多方面需要爭論到任何現有的算法。我的直覺說,某種形式的模擬退火方法在這裏最適合。 –