本文分享了由Guilherme Coelho编写的关于AnyLogic的使用实践技巧,希望能为正在学习或使用AnyLogic的用户提供帮助。
原文:https://www.theanylogicmodeler.com/post/template-how-to-write-a-tips-blog-postpost/template-how-to-write-a-tips-blog-post
作者:Guilherme Coelho
更新:Mar 9, 2022
阅读时间:6 min
本文是Guilherme Coelho的一篇特邀博客,主要关于如何设置Maven以管理和准备与Anylogic一起使用的外部依赖项的教程。
先决条件:本文介绍了Java编程、AnyLogic及其依赖管理的一些高级方面。在这之前,请确保您了解如何向AnyLogic添加和导入外部依赖项。
尽管AnyLogic提供了一系列工具来构建仿真模型,但您可能需要使用一些非常特定的库来进行矩阵计算、优化车辆路线,甚至需要连接一些外部求解器才可以在仿真期间执行决策。
如果涉及到这一点,人们可能只想下载JAR文件并将其放置到模型根文件夹中,之后按照 AnyLogic帮助中的说明将其添加到AnyLogic模型依赖项列表中。尽管它对于非常小的项目来说效果很好,但随着项目规模和复杂性的增加,这会变得非常麻烦。
在没有这些工具的情况下,最坏的情况是我们可能需要手动下载项目的所有依赖项以及依赖项的依赖项,其中不必要的文件将占用项目存储库。
由于AnyLogic使用Java作为编程语言,我将介绍如何设置Maven来进行依赖关系管理。Maven是Java世界中最受欢迎的依赖关系管理工具之一。
此外,我们将使用AnyLogic中提供的“External JAR files”模型。您可以在这里找到它:Example Models > Models from 'The Big Book of Simulation' > Java for Anylogic users.。
该模型的目的是教我们如何将Jama线性代数包添加到模型中并执行矩阵乘法。
在我们真正开始之前,请确保您已经安装好所有内容并准备就绪。因此,请遵循以下步骤:
1、 下载并安装Java Development Kit(JDK),并确保对应地设置JAVA_HOME和 PATH 环境变量。
打开系统属性(Win+Pause),选择“高级(Advanced)”选项卡和“环境变量(Environment Variables)”按钮。在顶部,您将看到与用户相关的所有环境变量。添加一个名为JAVA_HOME的新变量,并将其指向JDK安装路径。最后,确保PATH变量也指向JDK的bin文件夹。
可参考下方页面配置Mac的环境。
2、下载并安装Maven。要安装它,请将其内容解压缩到计算机上,并以与之前相同的方式将bin文件夹添加到PATH变量。
一切就绪后,我们可以继续创建一个新的Maven。接下来的步骤可以在任何支持Java和Maven的IDE上完成,例如VScode或IntelliJ。
在本文中,我们将使用VScode,因此请确保您已经安装了它。从VScode Extensions选项卡中搜索并安装“Maven for Java”扩展。
接下来,打开命令选项板并查找“Maven:Create Maven Project”命令。这将提示一些用户输入:
用VScode打开创建的文件夹。里面有一个“src”文件夹和“pom.xml”文件。
我们不需要“src”文件夹,因为我们没有在AnyLogic之外构建任何东西,所以只需删除它。
在POM文件中,找到
<dependency>
<groupId>gov.nist.math</groupId>
<artifactId>jama</artifactId>
<version>1.0.2</version>
</dependency>
实际上,截至2022年3月,该软件包已更新。如果您想更新到最新版本,只需在
maven-dependency-plugin
install
copy-dependencies
${basedir}/libs
...
这样,所有依赖项都将被放置在一个名为“libs”的新文件夹中,该文件夹将位于项目根目录中。您还可以通过更改
注意:如果您选择保留“src”文件夹,请确保不要从
一切就绪后,剩下要做的就是命令Maven拉取依赖项并将它们放在正确的位置。为此,只需在CLI上运行命令:
mvn clean install
此命令将确保在新的安装过程之前删除所有以前的构建目录。下载所有内容可能需要一些时间,只需等待几秒钟,传递即可完成。
如果一切正常,您应该会看到下面这样的消息,以及在项目目录中创建的名为“libs”的新文件夹,其中包含名称为“jama-1.0.2.jar”的文件。
每次添加新的依赖项或者希望使用某些依赖项的较新版本时,都需要运行此程序。最棒的是,您不需要担心您使用的某个库的最新版本是否依赖于其他库。Maven通过自动包含可传递的依赖项,避免了发现和指定您自己的依赖项所需的库的需要。这是专业和高级软件开发人员(和仿真建模人员)使用它的关键原因。
回到AnyLogic“External JAR files”模型,我们需要用刚刚下载的依赖项替换Jama依赖项。为此,首先删除前一个依赖项,之后在“libs”文件夹中添加一个指向JAR文件的新依赖项。浏览文件位置,检查所需选项以从其原始位置访问它,并选择“使用相对路径”选项。
单击“构建模型”按钮检查是否一切正常。此时,您将能够运行您的模型,而不会出现任何问题。
祝贺!
总结
请记住,此解决方案不一定适合您的项目。如果您正处于模型开发的开始阶段,您可能会跳过所有这些步骤而不会产生任何影响。然而,如果您的模型扩展,或者您必须通过自动化方式运行它,则需要用到这个方法。
对于同一个问题,总有其他解决方案。您只需要平衡每种方法的利弊。
最后,为了让每个人都更轻松,我准备了一个Github 存储库,其中包含本文所涵盖的所有内容。