python 解决最佳方案_python – 找到最小化约束的最佳解决方案?

让我们把这个问题称为Slinger-Bird问题(实际上Slinger类似于服务器和鸟类的请求,但我正在思考它,所以我改变它们希望得到不同的观点!).

>有S石投掷者(slingers)和B鸟.

> slingers不在彼此的范围内.

>投掷一次可以杀死所有鸟类在一个抛油者的视线内,并将消耗一次和一次单位

我试图找出最佳解决方案,最大限度地减少了鸟类特定到达模式下杀死鸟类所需的时间和射击次数.让我举一个绝对数字的例子:3个Slingers和4个鸟.

Time 1 2 3 4 5

Slinger

S1 B1, B2 B1, B2, B3 B4

S2 B1 B1, B2 B3,B4

S3 B1 B3, B4 B1,B2,B3,B4

我的数据看起来像这样:

>> print t

[

{

1: {S1: [B1, B2], S2: [], S3: [B1]},

2: {S1: [B1, B2, B3], S2: [B1], S3: [B3, B4]},

3: {S1: [B4], S2: [B1,B2], S3: []},

4: {S1: [], S2: [B3, B4], S3: [B1, B2, B3, B4]}

}

]

我能想到的解决方案有很多(S = t = k意味着抛物线Sx在时间k拍摄):

> t = 1时的S1,t = 2时的S1,t = 3时的S1< - 成本:3次3次单位= 6

> t = 2时的S1,t = 3时的S1< - 成本:2次3个时间单位= 5

> t = 1时的S1,t = 2时的S3< - 成本:2次2次单位= 4

> t = 4时的S3< - 成本:1次射击4次单位= 5

对我而言,解决方案3似乎是最佳解决方案.当然,我是手工完成的(因此有可能我错过了一些东西)但我想不出这种可扩展的方式.此外,我担心有一些角落案件,因为一个射手的决定可能会改变他人的决定,但因为我有全球观点,可能无关紧要.

在python中解决这个问题的快速而好的方法是什么?我很难想出一个好的数据结构来做到这一点,不用单独算法来做到这一点.我正在考虑使用动态编程,因为这似乎涉及状态空间探索,但对如何继续进行有点困惑.有什么建议?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值