我可以使用优化实验在 Anylogic 中实现多目标优化问题吗?

     2023-03-25     119

关键词:

【中文标题】我可以使用优化实验在 Anylogic 中实现多目标优化问题吗?【英文标题】:Can I implement a multi objective optimization problem in Anylogic using optimization experiment? 【发布时间】:2021-02-15 17:06:14 【问题描述】:

我正在尝试在 Anylogic 中使用基于 Anylogic 代理的建模和自定义实验功能来实现多目标优化实验,以在每次修改参数的情况下循环运行模型。在每次模拟运行结束时,我检查 3 个目标函数的值,使用遗传算法修改参数并再次运行。 据说优化和参数变化实验可以利用Anylogic中的多核处理。我正在尝试找到一种方法来利用此选项并使我的实验运行得更快。 任何线索都可以提供帮助! 谢谢

【问题讨论】:

嗨,欢迎来到 SOF。你的问题有点误导。您想为自定义实验提供多核支持(如您的文本所述)还是进行多目标优化(如您的标题所述)?请始终保持清晰,请参阅***.com/help/how-to-ask 【参考方案1】:

所以看起来您的问题实际上是关于如何将运行并行化(就像其他 AnyLogic 实验类型可以做的那样)添加到您创建的自定义实验中,以使用遗传算法(GAs)进行您自己的多目标优化)。 (我建议您编辑您的问题标题,因为正如 Ben 在他的评论中所建议的那样,它非常具有误导性。)但我也会稍微覆盖更广的角度。

我正在尝试使用 Anylogic 中的 [...] 自定义实验功能来实现多目标优化实验,以便每次使用修改后的参数循环运行模型。在每次模拟运行结束时,我检查 3 个目标函数的值,使用遗传算法修改参数并再次运行。

是的,如果您想要一种特定的 GA 驱动风格的多目标“优化”(这不是使用 OptQuest 启发式优化的 AnyLogic 意义上的优化,因此是引号),您将需要使用自定义实验,其中您可以设置/与 GA 交互,并根据需要明确控制运行的设置/创建。

据说优化和参数变化实验可以利用Anylogic中的多核处理。我正在尝试找到一种方法来利用此选项并让我的实验运行得更快。

这些实验中的并行化只是意味着运行在单独的 Java 线程中执行,因此这自然会在您拥有的 CPU 内核之间进行并行化。您可以通过 Tools --> Preferences --> Runtime 中的“Number of processor for parallel execution”设置来限制并行度。

因此,在自定义实验中,您需要自己使用 Java 并发显式处理此问题(创建您自己的一组 Thread 对象,这些对象通过模板自定义实验代码中已包含的步骤进行模型设置和执行)。如果您还不了解这些技术,您将需要学习并对它们充满信心。 (Java 8 添加了许多改进的并发处理技术。)没有更高级别的 AnyLogic API 来处理它。

NB:您还必须处理控制运行选择的事物(在您的情况下为 GA)如何处理并行性。例如,如果您要并行启动 4 批运行,它会在决定下一组模型参数之前等待所有 4 次运行完成(因此它拥有所有客观结果的完整信息),还是在每个完成时做出决定? (在开启并行执行的优化实验中,AnyLogic 的 OptQuest 优化器也不得不担心这一点。)

【讨论】:

使用 Anylogic 进行优化

】使用Anylogic进行优化【英文标题】:OptimizationwithAnylogic【发布时间】:2021-07-1701:10:35【问题描述】:AnyLogic在优化实验中使用的优化算法是什么?是否可以将此算法更改为遗传算法甚至Nelder-Mead之类的算法?如果可以,怎么做?... 查看详情

如何设置 Anylogic 优化实验?

】如何设置Anylogic优化实验?【英文标题】:HowtosetupAnylogicOptimizationexperiment?【发布时间】:2015-06-1510:20:45【问题描述】:有人试过用Anylogic进行优化实验吗?我正在尝试通过模拟优化一组参数。Anylogic表示,在每次模拟运行结束... 查看详情

AnyLogic:有没有办法在优化实验中指定决策变量数组?

】AnyLogic:有没有办法在优化实验中指定决策变量数组?【英文标题】:AnyLogic:IsthereawaytospecifyarrayofdecisionvariablesinOptimizationExperiment?【发布时间】:2021-05-1711:28:16【问题描述】:我正在使用AnyLogic开发优化模型。有没有办法在AnyLo... 查看详情

Anylogic - 如何在模拟实验中实现 CRN (Common Random Numbers) 方法?

】Anylogic-如何在模拟实验中实现CRN(CommonRandomNumbers)方法?【英文标题】:Anylogic-HowtoimplementCRN(CommonRandomNumbers)methodinthesimulationexperiment?【发布时间】:2019-06-2707:43:51【问题描述】:想在Anylogic仿真软件中实现CRN方法,但是不知道怎... 查看详情

Anylogic:优化期间截断类错误

】Anylogic:优化期间截断类错误【英文标题】:Anylogic:truncatedclasserrorduringoptimization【发布时间】:2020-04-2707:39:21【问题描述】:我声明我是初学者,这是我的问题。当我使用普通模拟运行它时,我的模型运行良好。现在我正在尝... 查看详情

如何使用 Visual Studio for Mac 在 Xamarin.Forms 中实现多目标?

...的功能。所以,我发现了this堆栈溢出问题——这表明我可以改 查看详情

在 iPad App 中实现多用户聊天

...用程序。我打算给它添加一个群聊功能。这意味着1)用户可以创建或加入群组2)可以向其他登录该应用的用户发送文本或音频片段。我正在寻找有关如何实现这一点的指针。我阅读了许多文章。我已经缩小到1)XMPP(Jabber)和2)网络套... 查看详情

使用消息传递接口在 Python 中实现多处理 [关闭]

】使用消息传递接口在Python中实现多处理[关闭]【英文标题】:ImplementmultiprocessinginPythonwithamessagepassinginterface[closed]【发布时间】:2021-03-1204:49:55【问题描述】:我正在尝试将一些JavaScript代码转换为Python,但是JavaScript以异步方式... 查看详情

我应该如何在角度材料中实现多项选择选项?

...经检查了文档和演示,但是唉!!我还没有找到任何关于使用angular-material实现多选选项(如select2)的参考。谁能告诉我如何使它工作?【问题讨论】:稍微补充一下问题:从0. 查看详情

使用主数据库在 Spring MVC 应用程序中实现多租户?

】使用主数据库在SpringMVC应用程序中实现多租户?【英文标题】:ImplementingmultitenancyinSpringMVCapplicationwithamasterdatabase?【发布时间】:2018-12-0305:39:41【问题描述】:我正在尝试使用基于此代码源demo的SpringMVC、Springsecurity、Hibernate和... 查看详情

如何在 Sonata Media Bundle 中实现多对多关系

...是,当我编辑或创建新产品时,我尝试添加一个按钮,我可以在 查看详情

如何在 C 中实现多分支树结构

...试做一棵多叶树。我正在尝试将C#trie实现转换为C,以便使用CUDA在GPU上运行它。但我一直坚持这一点。你能帮我吗?我的节点实现如下:structNode2char*Key;char*ConsAlterKey;ch 查看详情

在 MFC 中实现多线程以更新外部函数可访问的内部字典

...序将实时从Bloomberg中提取信息。BloombergAPI有一个订阅类,可以“订 查看详情

如何在 Firebase 身份验证中实现多用户帐户登录和切换?

...】:2018-05-0713:08:55【问题描述】:在GmailAndroid应用中,您可以在用户帐户视图上滑动以切换到另一个帐户。我在我的应用程序中使用Firebase身份验证。这样的多登录账 查看详情

如何使用 Java Spring 在 MySql 中实现多租户 [关闭]

】如何使用JavaSpring在MySql中实现多租户[关闭]【英文标题】:HowcanIachievemultitenancyinMySqlbyusingJavaSpring[closed]【发布时间】:2018-02-2605:13:48【问题描述】:如何使用MySqlJavaSpring最佳实践实现多租户,并建议使用任何其他数据库代替MyS... 查看详情

如何在angular js中实现多路由

】如何在angularjs中实现多路由【英文标题】:Howtoachievemultipleroutinginangularjs【发布时间】:2018-11-2223:10:07【问题描述】:我在AngularJS中练习routing。到目前为止,我已经研究了2页路由,但现在我想实现3页路由。(function()\'usestrict\';... 查看详情

如何在 laravel 护照中实现多身份验证

】如何在laravel护照中实现多身份验证【英文标题】:howtoimplementmultiauthinlaravelpassport【发布时间】:2018-09-0120:51:57【问题描述】:我有两个用户admin/user我想验证这两个用户的api,它适用于一个用户,但不适用于管理员看看我尝试... 查看详情

如何从 Main 获取文本数据集并使用 anylogic 在参数变化实验中运行?

】如何从Main获取文本数据集并使用anylogic在参数变化实验中运行?【英文标题】:HowtogetthedatasetfortextfromMainandruninparametervariationexperimentusinganylogic?【发布时间】:2019-11-1323:58:04【问题描述】:我正在从事疏散过程项目,想知道是... 查看详情