繁体   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