pypepa是pepa的库和工具集。
pypepa的Python项目详细描述
皮佩帕
pypepa是一个PEPA库,也是Jane为Performance Evaluation Process Algebra(PEPA)提供的工具集 希尔斯顿pyPEPA不是一个完全兼容PEPA的工具,它支持有限的PEPA语法(目前我们只允许在系统方程中使用<>运算符),即它不支持隐藏运算符(例如P\{a,b,}),也不计算通过时间pypepa也不使用kronecker状态空间表示和hillston的聚合算法,因此它的性能可能比pepa eclipse插件差。 所有这些功能以及更多功能都计划在下一个版本中添加。如果你愿意帮忙,就给我发邮件或者提出请求。
警告:pyPEPA正在开发中,这是一个测试版软件
PYPEPA由三部分组成:
- libpepa-用python编写的库,
- pypepa—用于求解和绘制图形的命令行工具,
- 用于解决大型pepa实验的distr/-map reduce工具。
更多文档可以在readthedocs上找到。
新闻
(2014年5月19日)完全切换到python>;3.3
(2013年7月22日)添加了文档,pypepa现在在rtd.org上有文档
(2013年7月18日)PYPEPA现在可以计算组件状态的利用率,输出参数起作用 再次
(2013年6月7日)增加了对将速率定义为数学表达式的支持,例如r=2*3+7*n;
安装
套餐
使用pip:
$ pip install pypepa
手动:
- 克隆项目
$ git clone git@github.com:tdi/pyPEPA.git pypepa
$ cd pypepa
- 运行安装
$ python setup.py install
从源头
对于当前版本,我建议安装在virtualenv中
- 克隆项目
$ git clone git@github.com:tdi/pyPEPA.git pypepa
$ cd pypepa
- 制作一个virtualenv
$ mkvirtualenv -p /usr/bin/python3 pypepa $ workon pypepa
- 安装所有要求
$ pip install pyparsing numpy scipy matplotlib
使用pypepa
基本参数
显示帮助命令:
$ pypepa -h
设置日志记录级别(默认为无):
$ pypepa --log {DEBUG, INFO, ERROR, NONE}
计算
计算银行情景的稳态默认情况下,putput指向您的终端
$ pypepa -st models/bankscenario.pepa Statespace of models/bankscenario.pepa.1 has 7 states Steady state vector Using ; delimiter 1;Idle,WaitingForCustomer,WaitingForEmployee;0.08333333333333337 2;Informed,WaitingForCustomer,WaitingForEmployee;0.25 3;WaitingBankResponse,RequestReceived,WaitingForEmployee;0.16666666666666666 4;WaitingBankResponse,CustomerNotReliable,WaitingForEmployee;0.16666666666666666 5;WaitingBankResponse,CustomerReliable,WaitingForEmployee;0.16666666666666666 6;WaitingBankResponse,WaitingManagerResponse,EvaluatingOffer;0.08333333333333333 7;OfferReceived,WaitingForCustomer,WaitingForEmployee;0.08333333333333333
计算操作吞吐量:
$ pypepa -th models/bankscenario.pepa Statespace of models/bankscenario.pepa.1 has 7 states Throuhput (successful action completion in one time unit) readInformation 0.08333333333333337 createLoanRequest 0.25 getNotReliableMessage 0.16666666666666666 badOffer 0.08333333333333333 askManager 0.16666666666666666 reset 0.08333333333333333 goodOffer 0.08333333333333333 checkReliability 0.3333333333333333
您可以计算一些时间步的瞬时时间可分配性:
$ pypepa --transient 5 models/bankscenario.pepa Transient analysis from time0 to 10 Using ; delimiter 1;Idle,WaitingForCustomer,WaitingForEmployee;0.08351202761947342 2;Informed,WaitingForCustomer,WaitingForEmployee;0.2500169897974121 3;WaitingBankResponse,RequestReceived,WaitingForEmployee;0.16662129023697114 4;WaitingBankResponse,CustomerNotReliable,WaitingForEmployee;0.16657721277634494 5;WaitingBankResponse,CustomerReliable,WaitingForEmployee;0.16657721277634485 6;WaitingBankResponse,WaitingManagerResponse,EvaluatingOffer;0.08328947039778702 7;OfferReceived,WaitingForCustomer,WaitingForEmployee;0.08340579639566591
可以通过指定--solver|-s {direct, sparse}来选择解算器。 通过defalt,我们将稀疏解算器与lil矩阵结合使用,因为它速度更快,而且在总体上,由pepa模型生成的矩阵是稀疏的。在结果上也有不显著的差异
pypepa允许您通过指定-gdswitch来可视化所有pepa组件和模型的整个状态空间。生成的graphiz点文件由deault保存在当前目录中的dots文件夹中您可以使用xdot浏览点文件,需要先安装这些文件。
$ pypepa -gd bankdots models/bankscenario.pepa
最后,pypepa可以为我们提供一个测试速率和动作的工具。 在步骤1中,检查当rateReset从1更改为50时,askManager操作的throughtput如何更改此命令的默认结果将是matplotlib图形。 -var的格式是“vartype:varname:value range说明符:value range value”。有效的那个 vartype现在是rate,对于值范围说明符,您可以选择:range或list。对于range 您需要提供START、STOP和STEP,而对于list则需要一个逗号分隔的值列表。 可以使用-f参数指定其他输出选项:graph、console、csv
$ pypepa -var "rate:rateReset:range:1,50,1" -val askManager models/bankscenario.pepa
格式化
可以使用--format选项指定-st、-th和--varrate的格式。 目前我们支持CSV(尽管;不是逗号分隔)、console(默认)和graph(仅限 对于变率实验)此外,还可以使用file参数指定-o|--output选项,以指定保存CSV的位置
$ pypepa -st models/bankscenario.pepa -f csv -o bank_steady.csv
待办事项
功能
- 使用函数速率实现速率数学表达式(完成)
- 机具通过时间分析
- 实现隐藏运算符
- 实现三维图形和实验(完成)
- Kronecker状态空间与聚集的实现
- 通过mirco tribastone实现通用通信pepagenPEPA
- 为还原器添加模型操作语言
- 添加随机探测
- 添加BU算法的分布式版本
- 添加从外部文件(和命名空间)导入模型和组件的操作。
非功能性
- 优化优化
许可证和学分
版权所有(c)Dariusz Dwornikowski和波兹南理工大学。 在ApacheCommons2.0下发布。