首先,似乎您需要获得给定来源的每个目的地的概率。您可以使用子查询来执行此操作,该子查询可以连续加入主查询,也可以使用窗口函数。我个人认为窗口函数更加清晰,因此这里是使用窗口函数的示例
我想通过来源块将车辆插入特定的工厂。我的工厂是基于代理类型的种群,在这里我想编写一个普遍适用的逻辑。到达率是由我要从数据库中读取的到达率(例如,每周5个)定义的。该数据库包括以下几列:开始(车辆应在其上开始的工厂的名称),每星期的depatures_per_week(费率),目的地(车辆的目的地)。
例如:
现在,我对一个源块有2个速率。我想将它们加起来等于一个比率,并根据车辆的变量v_destination中每周的离开量来写出目的地。因此,0.2%的目标将得到dest2,0.8%的目标将得到dest1。
如何编写代码以根据各个费率定义车辆的目的地?
谢谢!
如果您愿意将源建模为泊松过程,则可以按照它们的组合速率生成它们,然后将它们按单个目标的比率成比例地分解为组成目标。] >
例如,city1的综合利率为λc
=(λd1 +λd2)= 2 + 0.5 = 2.5。其中,比例λd1 /λc = 2 / 2.5 = 0.8和λd2] /λc = 0.5 / 2.5 = 0.2 2,分别。因此,以2.5的速率生成货件,然后生成一个U,一个Uniform(0,1)随机数。如果U <= 0.8,则此装运转到dest1,否则转到dest2。这概括了目的地的数量。如果目的地d 1,d 2
和d 3的比例为p 1,p 2和p 3,则将它们路由当U <= p 1时为d 1,当p 1 2时为d 2,否则为d 3 。换句话说,使用一系列if / else逻辑与累积比例进行比较。首先,似乎您需要获得给定来源的每个目的地的概率。您可以使用子查询来执行此操作,该子查询可以连续加入主查询,也可以使用窗口函数。我个人认为窗口函数更加清晰,因此这里是使用窗口函数的示例
SELECT
start,
destination,
depatures_per_week / SUM(depatures_per_week) OVER (
PARTITION BY start
ORDER BY destination
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) * 100 as percentage
FROM trains
可以使用WindowFunction
在QueryDSL SQL中构造Window函数。窗口功能在JPA中不可用。
首先,似乎您需要获得给定来源的每个目的地的概率。您可以使用子查询来执行此操作,该子查询可以连续加入主查询,也可以使用窗口函数。我个人认为窗口函数更加清晰,因此这里是使用窗口函数的示例