#distributed #optimistic #block #dsl #computation #events

dvcompute_gpss_dist

离散事件模拟库(支持乐观分布式模拟的类似GPSS的DSL语言)

4个稳定版本

2.0.0 2024年6月29日
1.3.5 2022年1月7日
1.3.4 2022年1月6日
1.3.3 2022年1月5日

#303模拟

Download history 1/week @ 2024-05-19 1/week @ 2024-06-09 132/week @ 2024-06-23 43/week @ 2024-06-30 3/week @ 2024-07-07 47/week @ 2024-07-28

51 每月下载量
2 个Crates中使用(通过 dvcompute_results_dist

MPL-2.0 许可证

1MB
19K SLoC

dvcompute_gpss_dist

该crate是离散事件模拟框架DVCompute Simulator(俄罗斯专利局注册号2021660590)的一部分。该dvcompute_gpss_dist crate定义了一个类似GPSS的DSL用于乐观分布式模拟,但与dvcompute_gpss_branch crate(用于嵌套模拟)共享相同的代码库。

DSL语言实现了以下块的对等物:PREEMPT、RETURN、ASSEMBLE、GATHER、SPLIT、TRANSFER以及其他。SELECT块自然表示为计算的组合。还有设施和存储实体的对等物。

以下是一些主要的crate:dvcompute(顺序模拟)、dvcompute_dist(乐观分布式模拟)、dvcompute_cons(保守分布式模拟)和dvcompute_branch(嵌套模拟)。所有四个crate都非常相似。它们基于相同的方法。

要求

在乐观分布式模拟的情况下,您必须满足dvcompute_dist crate对动态(共享)库提出的各项要求。

模拟方法

以下是一个示例,其中每个学生的到达都被模拟为某个事务。这些事务通过块计算处理

fn student_chain(line: Grc<Queue>, prof: Grc<Facility<f64>>) -> BlockBox<Transact<f64>, ()> {
    queue_block(line.clone(), 1)
        .and_then(seize_block(prof.clone()))
        .and_then(depart_block(line.clone(), 1))
        .and_then({
            advance_block(random_exponential_process_(1000.0))
        })
        .and_then(let_go_chain(line, prof))
        .into_boxed()
}

fn let_go_chain(_line: Grc<Queue>, prof: Grc<Facility<f64>>) -> BlockBox<Transact<f64>, ()> {
    release_block(prof)
        .and_then(terminate_block())
        .into_boxed()
}

这些计算在函数式编程中是箭头。它们通过组合结合。这些计算应在稍后运行以生效。

示例

您可以在作者的仓库中找到示例。

文档

参考书目

  • Sorokin David. DVCompute Simulator for discrete event simulation. Prikladnaya informatika=Journal of Applied Informatics, 2021, vol.16, no.3, pp.93-108 (in Russian). DOI: 10.37791/2687-0649-2021-16-3-93-108

许可证

版权所有 2020-2024 David Sorokin [email protected],总部位于俄罗斯Yoshkar-Ola

本软件受Mozilla公共许可证第2.0版的约束。如果本文件未附带MPL副本,您可以在http://mozilla.org/MPL/2.0/获取一份。

依赖

~1.8–2.6MB
~51K (估算) SLoC(额外代码行数)