×

使用SWIG生成的ADOL-C接口,高效计算导数,以解决R和Python中的优化问题。 (英语) Zbl 1453.90109号

摘要:脚本语言因其易用性和在许多领域(包括机器学习和统计)的快速原型价值而越来越被接受。然而,在算法差异化的背景下,主要的开发工作仍然集中在传统的编译语言上,如Fortran和C/C(++),无论是源代码转换工具还是运算符重载工具。因此,需要使用AD工具在脚本语言中高效地计算派生。ADOL-C是一个基于运算符重载的C(++)库,它为C(+++)中的应用程序提供准确的一阶和更高阶导数。SWIG是一个预处理器,它使用C/C\(++\)头文件包装库的API,以便可以从脚本语言(如R和Python以及其他一些高级编程语言)调用。尽管每种语言都有其警告,但通过SWIG提供C/C(++\)API的整个过程对于所有脚本语言来说都是一样的。由于SWIG是一个基于库的实际头文件的自动接口生成器,因此每种语言都需要进行一次初始工作,因此只需很少的工作即可将脚本接口与原始C/C\(++\)库中的上游开发保持同步。除了实现为R创建接口的最初目标之外,我们还能够为Python生成一个接口,该接口比以前实现的接口快了一个数量级。本文概述了界面生成过程、我们在两种脚本语言中遇到的挑战以及一些数值结果,以证明其实用性和效率。

MSC公司:

90立方厘米 随机规划
68瓦30 符号计算和代数计算
90-04年 与运筹学和数学编程有关的问题的软件、源代码等
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] ADMB-模板模型生成器, 2014. 可在
[2] Alns,医学硕士。;布莱希塔,J。;Hake,J。;约翰逊,A。;Kehlet,B。;Logg,A。;Richardson,C。;Ring,J。;罗杰斯,M.E。;威尔斯,G.N。,fenics项目1.5版,建筑。数字。软质。,3, 9-23, (2015)
[3] R中的自动微分, 2014. 可在
[4] SWIG:一个易于使用的工具,用于将脚本语言与C和C集成++第四届Tcl/Tk年度研讨会,加利福尼亚州蒙特雷,1996年。可在
[5] 使用SWIG用Python控制、原型化和调试C程序,第四届国际Python大会,加利福尼亚州利弗莫尔,1996年。可在
[6] 向Python提供大规模物理应用程序第六届国际蟒蛇会议,加利福尼亚州圣何塞,1997年。可在
[7] CppAD:一个用于区分C++算法的软件包。网址:
[8] 贝萨克,J。;Constantinescu,E.M。;M.Anitescu。,基于观测和物理模型输出的风速预测时空场景的随机模拟,Ann.应用。统计(2017)
[9] 随机拟牛顿:新算法的模块化实现可在
[10] 数字ifftools。网址:
[11] 伯德·R·H。;Hansen,S.L。;Nocedal,J。;Y.Singer。,大规模优化的随机拟Newton方法、SIAM J.Optim.、。,26, 1008-1031, (2016) ·Zbl 1382.65166号
[12] Calculus-SymPy 1.0文档。网址:
[13] 应用TAF生成Fortran 77–95程序的高效派生代码《2002年GAMM会议记录》,德国奥格斯堡,2003年
[14] Ryacas—YACAS计算机代数系统的R接口, 2014. 可在
[15] Griewank,A。;A.沃尔特。,算法微分原理与技术,(2008),费城,SIAM·兹比尔1159.65026
[16] Griewank,A。;Kulshreshtha,K。;A.沃尔特。,算法微分的数值稳定性,计算,94125-149,(2012)·Zbl 1238.65013号 ·doi:10.1007/s00607-011-0162-z
[17] 哈斯科。;V·帕斯卡尔。,tapenade自动区分工具:原理、模型和规范,ACM变速器。数学。软质。,39, 20:1-20:43, (2013) ·Zbl 1295.65026号 ·doi:10.1145/2450153.2450158
[18] R.J.霍根。,C语言中使用表达式模板的快速反向模式自动微分++,ACM变速器。数学。软质。,40, 26:1-26:16, (2014) ·Zbl 1369.65037号 ·数字对象标识代码:10.1145/2560359
[19] E.卡尔内。,大气建模、数据同化和可预测性,(2003),剑桥大学出版社,剑桥
[20] 兰博尼,M。;Iooss,B。;波佩林,A.L。;甘博阿,F。,基于导数的全球敏感性度量:与sobol指数和数值测试的一般联系,数学。计算。模拟。,87,45-54,(2013)·Zbl 1490.62035号 ·doi:10.1016/j.matcom.2013.02.002
[21] Logg,A。;威尔斯,G.N。,DOLFIN:自动有限元计算,ACM变速器。数学。软质。,37, 1-28, (2010) ·Zbl 1364.65254号
[22] DOLFIN:一个C++/python有限元库微分方程的有限元自动求解计算科学与工程讲义,第84卷,第10章Springer2012
[23] dco/c++-在c语言中通过重载派生代码++,技术代表2011,06,Aachener Informatik-Berichte,Aachen,2011
[24] Narayanan,S.香港。;诺里斯,B。;温尼卡,B。,ADIC2:用于区分C和C的组件源转换系统的开发++,Procedia Compute。科学。,1, 1845-1853, (2010) ·doi:10.1016/j.procs.2010.04.206
[25] 程序包编号派生。网址:
[26] 疯狂:多元运算的自动区分, 2017. 提供于,R软件包版本0.2.2
[27] CoDiPack公司。网址:
[28] Saltelli,A。;Ratto,M。;安德烈斯,T。;Campolongo,F。;Cariboni,J。;加泰利,D。;塞萨纳,M。;南卡罗来纳州塔兰托拉。,全球敏感性分析:入门,(2008),威利,奇切斯特·Zbl 1161.00304号
[29] Python-SciPy.org的科学计算工具。网址:
[30] SWIG网站。网址:
[31] 简单表达式的符号和算法导数。网址:
[32] 统计计算的R项目。网址:
[33] Theano:用于快速计算数学表达式的Python框架,预印本(2016)。可在arXiv电子打印abs/1605.02688上获取。
[34] Utke,J。;美国诺曼。;费根,M。;塔伦特,N。;斯特劳特,M。;Heimbach,P。;希尔,C。;温施,C。,openad/F:一个用于自动区分Fortran代码的模块化开源工具,ACM变速器。数学。软质。,34, 18:1-18:36, (2008) ·Zbl 1291.65140号 ·doi:10.1145/1377596.1377598
[35] Python中的AD及其在科学和工程中的应用,第八届EuroAD研讨会,数值算法小组,牛津,2009年
[36] 使用PYADOLC和PYCPPAD在Python中进行算法区分2009年,欧洲科学大会,德国莱比锡
[37] PyADOLC公司。网址:
[38] 沃尔特·S·F。;莱曼,L。,python中的算法微分,J.计算。科学。,4, 334-344, (2013) ·doi:10.1016/j.jocs.2011.10.007
[39] 沃尔特·S·F。;施密特,A。;科克尔,S。,多控制变量实验设计的伴随优化,J.过程控制,241504-1515,(2014)·doi:10.1016/j.jprocont.2014.06.019
[40] ADOL-C入门组合科学计算查普曼-霍尔纽约2012181202
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。