GAMSD开发工具重构分析可视化

FP.GAMS开发工具重构分析可视化历史

隐藏次要编辑-显示对输出的更改

2008年12月12日上午10:04通过帕特里克·詹森-
将第26-27行更改为:
不,我不希望这个项目的结果是一个IDE,而是可以用作IDE的“插件”或独立的“批处理模式”工具的软件组件。重点应该放在GAMS语言的语法和语义结构(用GAMS语言表示的模型)上,使用抽象语法树和源到源的转换。(理想情况下,我想要一个可以在模型源代码的svn版本历史上运行并显示的系统聚集的结果。)
 
收件人:
不,我不希望这个项目的结果是一个IDE,而是可以用作IDE的“插件”或独立的“批处理模式”工具的软件组件。重点应该放在GAMS语言的语法和语义结构(用GAMS语言表示的模型)上,使用抽象语法树和源到源的转换。(理想情况下,我想要一个可以在模型源代码的svn版本历史上运行并显示的系统聚合结果。)
 
2008年12月12日上午10:02通过帕特里克·詹森-
将第20-22行更改为:
* 1. 该提案与GAMS基础设施提案一起,旨在构建一个用于使用GAMS源代码的开源基础设施。我的职责是通过添加功能来扩展这个基础设施。就我而言
知道吗,我读过一些关于GAMS的文档,发现已经有了一个编程环境。所以我的问题是,要构建的项目是否与可以从网站下载的IDE类似?
 
收件人:
* 1. 该提案与GAMS基础设施提案一起,旨在构建一个用于使用GAMS源代码的开源基础设施。我的职责是通过添加功能来扩展此基础结构。据我所知,我读了一些关于GAMS的文档,发现已经有了一个编程环境。所以我的问题是,要构建的项目是否与可以从网站下载的IDE类似?
 
2008年12月12日上午10:02通过帕特里克·詹森-
添加第16-49行:

------
!!笔记
学生问题:
* 1. 该提案与GAMS基础设施提案一起,旨在构建一个用于使用GAMS源代码的开源基础设施。我的职责是通过添加功能来扩展这个基础设施。就我而言
知道吗,我读过一些关于GAMS的文档,发现已经有了一个编程环境。所以我的问题是,要构建的项目是否与可以从网站下载的IDE类似?

帕特里克的回答:

(你已经开始做一些“相关的工作”研究,这很好——理科硕士论文最重要的部分之一是建立在当前的“最先进的技术”之上,而不是重新发明轮子。我还没有尝试过GAMS IDE,所以我的评论可能有点偏离主题。)

不,我不希望这个项目的结果是一个IDE,而是可以用作IDE的“插件”或独立的“批处理模式”工具的软件组件。重点应该放在GAMS语言的语法和语义结构(用GAMS语言表示的模型)上,使用抽象语法树和源到源的转换。(理想情况下,我想要一个可以在模型源代码的svn版本历史上运行并显示聚合结果的系统。)

* 2. 我应该使用哪种语言和哪个平台?

Patrik:我会说是Haskell和Linux,但最重要的部分是可移植性(如果可能的话,独立于平台)。可能使用http://www.graphviz.org/用于可视化?Haskell非常擅长处理抽象语法树(可能由BNF Converter[1]帮助),而且它是我最熟悉的语言。Linux对软件开发有很好的支持,并且有很强的开源传统。

[1] http://www.cs.chalmers.se/cs/Research/Language-technology/BNFC/

* 3. 对于编写测试框架,它像Java中的Junit吗?它还应该自动生成测试用例吗?

Patrik:这里的重要部分是支持回归测试,以帮助在重构或改进模型时检测问题(支持在特定更改前后进行测试和比较)。如果某些部分可以自动化,那就太好了,但典型GAMS模型的输入数据通常是相当大的浮点数矩阵,我预计很难自动生成。但是,“输入灵敏度”的自动测试将是很好的——用输入数据的微小变化运行模型,并测量输出的变化(以确定输入不同部分的相对重要性)。用“琐碎”(可能是“全零”)或“边界线情况”输入来测试模型以捕捉错误也是很好的。如果这种“特殊情况”可以(半)从模型源代码的分析中自动生成,那就太棒了。跟踪模型源代码不同版本的求解器的运行时间也很好。

* 4. 正如你所说,这个提议与GAMS模型重构密切相关。那么,对GAMS的重构支持是什么呢?

Patrik:重构通常是关于源代码的语义保持转换。就GAMS及其PIK用户而言,其中一个需求是更改模型的源代码以使其运行更快,但仍会产生相同的结果。另一个需要是在不改变行为的情况下重组代码以提高可读性。(它可以是变量或方程的重命名,拆分或合并文件,在s_{i+1}=sum_{j=0}^{i}(a_j)和s_{1+1}=s_i+a_i之间进行更改,等等。)

目前,GAMS支持将模型分离为多个源文件(可以被认为是子模型或子模块),但没有真正的模块系统,因此对GAMS优化器来说,这都是一个大的优化问题。当模型变得更加复杂时,这对模型开发人员来说就成了一个问题。从概念上讲,他们谈论“组合子模型”,例如经济子模型和气候子模型,但没有直接的语言支持来自行开发和测试子模型。在当前系统中,他们不愿用更好的版本替换一个子模块,因为他们不确定可能对整个系统产生的影响。对依赖关系可视化和单元测试的支持可以让他们充分相信这些更改是可控的。

----

我希望这些答案有助于您前进——如果您愿意,我们可以在下周安排一次会议,以最终确定描述。

请注意,这个项目需要与Eric Bergquist进行一些交互,他将负责[[GAMS Model Refactoring]]和优化,我希望再多一个学生同时负责[[GAMS Software Technology Infrastructure]]。(如果你有朋友在找硕士项目,你可以试着招聘他们;-)
2008年12月10日,晚上10:41通过帕特里克·詹森-
将第4-5行更改为:
(取决于上述GAMS ST内部结构。)
 
收件人:
(该提案依赖于[[GAMS软件技术基础设施]]提案,并与[[GAMS-Model Refactoring]]密切相关。)

[[游戏->http://www.gams.com/]]是用于(经济)优化问题的[[DSL]]。
 
2008年11月24日上午09:03通过帕特里克·詹森-
添加了第1-13行:
!!GAMS开发工具:重构、分析、可视化
(添加081109)

(取决于上述GAMS ST内部结构。)

*方程/文件之间依赖关系的可视化
*支持重构
*测试框架
**系统的夜间运行
**连接到SVN存储库(跟踪最新的工作版本等)

背景:FP(Haskell),“测试、调试和验证”,数学建模,敏捷软件开发(应包含单元测试和重构),软件架构
:联系人:Patrik Jansson(Chalmers)、Cezar Ionescu([[Research.PIK]])