微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据输入查找“最佳”组合的函数?

如何解决根据输入查找“最佳”组合的函数?

我正在尝试制定一个算法来解决基于输入的游戏中“升级”的最佳组合。这些是变量:

'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”和用户选择的变量,我希望计算机计算出什么是“最佳”升级组合。在这种情况下,最好意味着最多的收入。每次升级都会对收入产生非常复杂的直接和间接影响。例如,矿山为您提供可以出售的资源,但它们也会造成污染,从而减少您所在城市的人口,从而降低收入。该系统上的所有算法都是已知的。

影响收入的变量是疾病、商业、人口、犯罪、污染等。不同的升级对这些数字有不同的影响。

我想知道我应该怎么做?有人告诉我,背包问题是我应该研究的问题,但我不知道如何实现这么多相互影响的不同数字和输入。那可能吗?有没有其他算法可以解决我的问题?

解决方法

如果您的“最佳”组合可以表示为一组约束,您可能需要查看线性规划(可能是单纯形方法),以便用数学方法解决它。

否则,您可以尝试将“最佳”的概念转换为允许在组合之间进行比较的数字(或元组),并将其用作 max() 组合调用中的键。

如果组合太多,您可能需要使用动态规划来优化最佳组合的搜索(通常在递归遍历中,可能带有记忆,即背包问题)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。