从设定的分配中选择项目

时间:2010-04-23 23:25:49

标签: java algorithm dataset

我有一套X项目,例如{鼓风机,割草机,炉灶},每个项目都有一定的百分比,应从整体设置中选择{blower = 25%,割草机= 25%,炉灶= 75 %}以及这些项目应遵循的特定分布(鼓风机应在选择开始时选择更多,并在结束时更多地加热)。我们给出了一些要被整体选择的对象(即100)以及执行此操作的总时间(例如100秒)。

我正在考虑使用轮盘赌算法,其中车轮上的重量受到当前分布的影响,作为经过时间(和允许的持续时间)的函数,因此可以使用简单的函数来确定权重。对于这样的问题,有没有人能够意识到的常见方法?

目前我已经使用x ^ 2(对权重进行了正确的归一化)等函数在java中编写了与此类似的东西,以确保发生良好的分布。欢迎提出其他建议或惯例: - )

1 个答案:

答案 0 :(得分:0)

我的问题描述并不完全清楚,但我会尽量回答我的理解。首先,您可以通过执行以下操作从加权分布中选择随机项:

  1. 找出我们称之为wsum的所有潜在物体的重量总和。
  2. 选择一个随机数,a。
  3. 将累积变量初始化为0.0。
  4. 从第一个可能的对象(权重> 0.0)开始,将权重添加到总计。
  5. 如果< total / wsum,选择此数字,我们将其从可能的对象列表中删除,并从wsum中减去它的权重。
  6. 如果我们选择了足够的对象,请继续,否则请转到步骤2.
  7. 通过权重按降序排列对象有助于提高操作的速度。

    这只是为了找到我们从当前分布中选择的对象。听起来你的发行版随着时间的推移而变化,所以你只需要改变随时间选择的可能对​​象列表。