簡體   English   中英

Function 根據輸入找到“最佳”組合?

[英]Function to find “best” combination based on input?

我正在嘗試制定一個算法來解決基於輸入的游戲中“升級”的最佳組合。 這些是變量:

'imp_total': '30', # This says how many in total the other variables can be combined
'imp_coalpower': '0', 
'imp_oilpower': '0', 
'imp_nuclearpower': '1', 
'imp_windpower': '0', 
'imp_coalmine': '0', 
'imp_oilwell': '0', 
'imp_ironmine': '0', 
'imp_bauxitemine': '0', 
'imp_leadmine': '0', 
'imp_uramine': '1', 
'imp_farm': '0', 
'imp_gasrefinery': '0', 
'imp_steelmill': '0', 
'imp_aluminumrefinery': '0', 
'imp_munitionsfactory': '0', 
'imp_policestation': '1', 
'imp_hospital': '1', 
'imp_recyclingcenter': '1', 
'imp_subway': '1', 
'imp_supermarket': '0', 
'imp_bank': '0', 
'imp_mall': '3', 
'imp_stadium': '3', 

# These variables are chosen by the user:
'imp_barracks': '5', 
'imp_factory': '5', 
'imp_hangar': '5', 
'imp_drydock': '3'

根據“imp_total”和用戶選擇的變量,我希望計算機計算出什么是“最佳”升級組合。 在這種情況下,最好的意味着最多的收入。 每次升級都會對收入產生相當復雜的直接和間接影響。 例如,礦山為您提供可以出售的資源,但它們也會造成污染,從而減少您所在城市的人口,從而減少收入。 該系統上的所有算法都是已知的。

影響收入的變量是疾病、商業、人口、犯罪、污染等。不同的升級對這些數字有不同的影響。

我想知道的是我應該如何 go 這樣做? 有人告訴我背包問題是我應該研究的問題,但我不明白如何實現這么多不同的數字和輸入,這些數字和輸入都會相互影響。 那可能嗎? 我可以看看另一種算法來解決我的問題嗎?

如果您的“最佳”組合可以表示為一組約束,您可能需要查看線性規划(可能是單純形法),以便以數學方式解決它。

否則,您可以嘗試將“最佳”的概念轉換為允許在組合之間進行比較的數字(或元組),並將其用作 max() 調用組合中的鍵。

如果組合太多,您可能需要使用動態規划來優化對最佳組合的搜索(通常在遞歸遍歷中,可能帶有記憶,即背包問題)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM