教育装备采购网
第七届图书馆 校体购1

【应用实例】使用 GAMS Engine 和 GitHub Actions 进行自动化 GAMS 模型测试

教育装备采购网 2021-11-18 09:07 围观1271次

【应用实例】使用 GAMS Engine 和 GitHub Actions 进行自动化 GAMS 模型测试

  关于GAMS

  GAMS是优化行业领先的工具提供商之一,也是首先将数学代数语言与传统编程概念相结合的软件系统,以便有效地描述和解决优化问题。

  GAMS为“General Algebraic Modeling Systems”的缩写,透过简单的操作模式,GAMS排除了许多技术性问题,让用户能专心于模块的建立。其语言编辑器近似于其他常用的程序语言,让更多的使用者能受惠于GAMS。在使用过程中,运算数据可以经由常用的表格加载、清晰的模块架构让用户可以随时重复利用之前撰写的模块,进行代数符号的修改。GAMS亦可以对包含时间序列的动态模块进行运算。通用代数建模系统(GAMS)是特别为建模线性,非线性和混合整数优化问题而设计的。本系统对于大型的,复杂的问题特别有帮助.GAMS可以运行在个人计算机、工作站、大型机和超级计算机上。

【应用实例】使用 GAMS Engine 和 GitHub Actions 进行自动化 GAMS 模型测试

扫码获取软件报价

  背景

  专业软件开发在很大程度上依赖于测试自动化和持续集成 (CI),以确保在开发过程的早期发现错误。Jenkins 是首先被大量采用的开源自动化服务器,并且是 GAMS 每天使用的工具之一。借助 GitLab CI/CD 和 GitHub Actions,两大存储库平台近年来也纷纷加入了自己的持续集成产品。对于 GAMS 模型的开发人员来说,Jenkins、GitHub 和 GitLab 的 CI 功能并不容易使用,因为构建过程很难与可用于运行测试代码的 GAMS 安装进行通信。

  我们全新的产品GAMS Engine已经改变了这一点。GAMS Engine 提供了一个 REST API,可用于将 GAMS 任务提交和运行到一个中心位置。

【应用实例】使用 GAMS Engine 和 GitHub Actions 进行自动化 GAMS 模型测试

  下面我们概述了 GitHub 上的任何 GAMS 模型开发人员如何轻松使用 Engine 为其模型运行自动化测试。相同的原则适用于 GitLab 和 Jenkins。

  GitHub 示例

  Prerequisites

  1. 包含您的 GAMS 模型代码的 GitHub 存储库。

  2. 访问 GAMS 引擎实例的凭据。

  它是如何完成的

  “GitHub Actions”背后的概念很简单。简而言之:

  • 代码存储库中发生的任何事件(例如推送新提交)都可以触发工作流

  • 一个工作流包含一个或多个作业,这些作业在称为runners 的计算资源上执行。作业中发生的一切都在同一个运行器上顺序运行,默认情况下,多个作业在多个运行器上同时运行。您可以选择基于 Linux、Windows 或 macOS 的运行程序。GitHub 提供了相当慷慨的免费 runner时间配额,这对于大多数项目来说应该足够了 。

  • 每个作业包含一个或多个步骤。典型的步骤可以是“将新版本从存储库签出到运行器”、“编译源代码”、“将某些内容部署到服务器”等等。

  • 每个步骤都调用操作或执行 shell 命令。行动是实际做某事的事情。

  为了演示如何使用 Engine 为 GAMS 模型运行自动化测试,我们开发团队的 Freddy 在https://github.com/GAMS-dev/actions创建了两个 GitHub 操作。

  • “run-job”操作允许您在 GAMS 引擎实例上运行模型。

  • “更新模型”操作允许您在 GAMS 引擎实例上注册或更新 GAMS 模型。这与自动化测试无关,但可用于控制 GAMS 引擎上的模型部署,不在本文讨论范围之内。我们将在另一篇文章中介绍模型部署。

  如何使用 GitHub 操作?

  要定义工作流,您必须在.github/workflows/源存储库中创建一个 YAML 文件。将新提交推送到存储库时,将运行以下工作流。它检查对新运行器的新提交,准备模型以提交给 GAMS 引擎,然后在引擎上以仅编译模式运行模型:

【应用实例】使用 GAMS Engine 和 GitHub Actions 进行自动化 GAMS 模型测试

  关于可以传递给‘run-job’操作的参数,一些相关的解释如下:

  你可以看到我们使用了一些形式的变量${{ secrets.xyz }}。这些变量可以以加密形式存储在模型存储库 ( https://docs.github.com/en/actions/security-guides/encrypted-secrets)中。您需要将这些秘密设置为指向URL您选择的 Engine实例的 ,并提供USERPASSWORD

  ${{ github.workspace }}末行中使用的变量包含运行程序内的路径,您的代码在任务的首步中由“checkout”操作检出。

  该参数a=c导致模型仅由 GAMS 工作人员编译,但不会执行。这足以捕获语法错误,并确保工作流快速完成。

  将此工作流文件添加到您的存储库并对其进行修改以适合您的模型后,每次推送到存储库都会触发该模型在Engine上运行。如果模型编译失败,运行将失败。

【应用实例】使用 GAMS Engine 和 GitHub Actions 进行自动化 GAMS 模型测试

  如何运作?

  当我们的 GitHub 操作运行时会发生什么呢?解释如下:

  1. 我们的 GAMS-dev/actions存储库包含每个动作的单独元数据 YAML文件,这些文件配置动作的输入和输出(例如https://github.com/GAMS-dev/actions/blob/main/run-job/action。yml)。

  2. 元数据定义由 GitHub ( https://docs.github.com/en/actions/creating-actions/creating-a-javascript-action )提供的“操作工具包”读取,它创建了一个‘index.js’ 文件。这个‘index.js’ 必须完成才能实现实际的逻辑,即使用 Engine REST API来提交和调度模型,并接收结果。

  3. 您可以在我们的存储库中看到的 JavaScript 代码使用 ncc ( https://github.com/vercel/ncc )编译成一个独立的文件,包括所有依赖项。

  软件订购 

  订购热线: 010-56548231, 18610597626

  软件咨询: crystal@uone-tech.cn 

  北京友万信息科技有限公司,英文全称:Beijing UoneInfo&Tech Co.,Ltd (Uone-Tech),作为GAMS软件在中国大陆的授权经销商及合作伙伴,希望能给GAMS软件的中国用户提供更多服务与支持,并帮助中国用户建立完善的软件售后服务体系。如需申请新版本软件试用、新版本采购及老版本更新升级请联系我们,感谢您的支持与关注。

【应用实例】使用 GAMS Engine 和 GitHub Actions 进行自动化 GAMS 模型测试

  专注分享商业数据分析、金融数据分析、应用统计分析、知识图谱、机器学习、计量经济、人工智能、网络爬虫、自动化报告与可重复研究等热门技术内容。定向培养Stata、Python、R语言数据人才,助力产学研政企商协同发展,为中国大数据产业蓄能。合作热线:010-56548231 邮箱:info@uone-tech.cn。

点击进入北京友万信息科技有限公司展台查看更多 来源:教育装备采购网 作者:北京友万信息科技有限公司 责任编辑:张肖 我要投稿
校体购终极页

相关阅读

  • 【软件更新】GAMS 42版本更新啦!

    【软件更新】GAMS 42版本更新啦!
    教育装备采购网04-11
    2023年GAMS42新版本更新,接下来让我们看一下更新的主要内容:42.1.0主要版本我们要感谢所有报告问题并提出改进此版本建议的用户。我们特别感谢Wolfga...
  • 【GAMS实际案例】使用 GAMS 为欧盟建模交通碳强度目标

    【GAMS实际案例】使用 GAMS 为欧盟建模交通碳强度目标
    教育装备采购网04-04
    软件简介GAMS为“GeneralAlgebraicModelingSystems”的缩写,透过简单的操作模式,GAMS排除了许多技术性问题,让用户能专心于模块的建立。其语言编辑器...
  • 江苏海事职业技术学院船舶学院成功举办2020年机械制造与自动化专业人才培养方案评审会
    中国高校之窗10-20
    10月16日下午,江苏海事职业技术学院船舶与海洋工程学院在敏行楼201会议室召开了机械制造与自动化专业共建共管委员会会议,南京工业职业技术大学工程技术实训中心主任、全国人大代表、教授王红军...
  • GAMS软件电力能源专题视频课程免费申请
    教育装备采购网09-04
    通用代数建模系统(GAMS)是数学编程和优化的高级建模系统。它由一个语言编译器和一个稳定的集成各种高性能的求解器组成。GAMS适用于复杂的、大规模的建模应用,并允许您创建大的维护模型以很快...
  • GAMS 31.1.1 版本更新啦 !

    GAMS 31.1.1 版本更新啦 !
    教育装备采购网06-03
    GAMSSoftwareGmbH于2020年5月1日发布了GAMS31.1.0版本,新的版本将不再支持32位MSWindows,具体更新内容如下:GAMS系统Ø扩展了modelstatement的语法,...
  • GAMS优化软件电力能源免费专题直播培训
    教育装备采购网02-21
    通用代数建模系统(GAMS)是数学编程和优化的高级建模系统。它由一个语言编译器和一个稳定的集成各种高性能的求解器组成。GAMS适用于复杂的、大规模的建模应用,并允许您创建大的维护模型以很快...
  • Q-Automation ATX 自动化测试解决方案

    Q-Automation ATX 自动化测试解决方案
    教育装备采购网12-24
    基于ATX的自动化测试管理软件,用于测试电子控制单元(ECU)。ASAMAutomotiveTestExchange(ATX)是一种标准化的XML格式的描述语言,用于在不同的测试系统...
  • GAMS支持的模型类型

    GAMS支持的模型类型
    教育装备采购网08-16
    GAMS支持的模型类型GAMS能够以多种不同的问题分类类型来公式化模型。这意味着从一个模型类型跳转到另一个将毫不费力。您甚至能够同时在不同的模型类型...

版权与免责声明:

① 凡本网注明"来源:教育装备采购网"的所有作品,版权均属于教育装备采购网,未经本网授权不得转载、摘编或利用其它方式使用。已获本网授权的作品,应在授权范围内使用,并注明"来源:教育装备采购网"。违者本网将追究相关法律责任。

② 本网凡注明"来源:XXX(非本网)"的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,且不承担此类作品侵权行为的直接责任及连带责任。如其他媒体、网站或个人从本网下载使用,必须保留本网注明的"稿件来源",并自负版权等法律责任。

③ 如涉及作品内容、版权等问题,请在作品发表之日起两周内与本网联系,否则视为放弃相关权利。

校体购产品