如何解决有没有办法在蒙特卡洛模拟中为单个任务比例的总和设置最大限制?
我有一个数据集“活动”,其中列出了不同的工作任务及其关联的通道,并且每个通道每个任务的时间和数量都有范围。 “ volumes”数据集包含我希望应用volume_prop生成适当输出(最终变量中为x)的体积数据。每个“ channel”需要相同的任务,但是时间和体积数据因通道而异。目标是每次运行都获得相同的任务,以求所有通道的总和为100%(即,对于在通道1 2和3中执行的任务X,每个通道X具有模拟选择的不同volume_prop,我要求通道的volume_prop 1 2和3,在运行1/1000中任务X的总和等于100%。
我按如下方式运行模拟:
monte = activities #this is my list of activities/tasks,their associated times and volume proportions %>%
bind_rows(replicate(1000,.,simplify = F)) %>%
left_join(volumes) %>% #this is the data set containing the volumes I apply the proportions to
group_by(channel,task,year) %>%
mutate(run = seq(1,n(),1) %>% as.factor,time = ifelse(time_dist == "normal",rnorm(n(),mean = time_med,sd = (time_med-time_low)/3),ifelse(time_dist == "triangular",rtri(n(),min = time_low,max = time_high,mode = time_med),time_med)),volume_prop = ifelse(volume_dist == "normal",mean = volume_med,sd = (volume_med-volume_low)/3),ifelse(volume_dist == "triangular",min = volume_low,max = volume_high,mode = volume_med),ifelse(volume_dist == "fixed",volume_med,volume_med)))
) %>%
select(-time_low,-time_med,-time_high,-volume_low,-volume_med,-volume_high) %>%
mutate(value = volumes$volume * volume_prop,x = (value*time)/(60))
这将为每个任务的每个通道生成一个随机的(在设置的分布范围内)输出,但不允许我查看不同通道在同一运行中相同任务之间的关系。有没有办法在突变中进行附加分组以使这种情况发生?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。