回调
| 不要将本文中描述的回调与库回调混淆。 DiffEqCallbacks.jl。 阅读更多关于与他们合作的信息 Event Handling and Callback Functions. |
*模型回调* —这些是响应模型中的某些事件而自动调用的函数。 回调 *AnyMath*用编程语言创建 朱莉娅。
要打开回调,请转到设置窗口
并点击 *编辑源代码*
:

所有回调都在打开的菜单中可用。 *AnyMath*. 它们默认为空,不包含任何代码。:

所有回调 *AnyMath*大致可分为4组:
|
|
|
|
回调的描述
打开模型
它们用于调整模型在打开前后的行为。
了解有关模型打开回调的更多信息
*使用的回调*: [医]预发基金 (开幕)及 邮递员 (关闭)。
*描述*:
* [医]预发基金 -加载模型之前运行。
+
| 在此模型的回调中不能使用软件控制方法,因为模型尚未加载。 |
* 邮递员 -加载模型后执行。 您可以在其中使用模型参数,因为它们已经加载。
|
基于模型打开条件的回调允许: *准备工作区 *AnyMath*或者在使用以下方法加载模型之前执行初始化任务 *使用以下方法配置模型参数或执行依赖于上载数据的操作 |
模型执行
它们在仿真过程中使用。
了解有关模型执行回调的更多信息
*使用的回调*: InitFunc (初始化), 启动基金 (推出), [医]暂停 (停顿), ContinueFunc (执行), 权宜之计 (停止)。
当您启动模型并至少停止一次仿真过程时,所有这些功能都将起作用。
*描述*:
* InitFunc -在模型的编译阶段之后执行;
* 启动基金 -运行到模拟的第一步;
* [医]暂停 -在模拟过程中暂停时调用;
* ContinueFunc -在暂停后启动模型时一步运行;
* 权宜之计 -它在仿真过程的关闭期间执行。
保存模型
保存模型时使用。
了解有关模型保存回调的更多信息
*使用的回调*: [医]前 (保存前), 储蓄后 (保存后)
*描述*:
* [医]前 -在保存模型之前执行;
* 储蓄后 -保存模型后执行。
关闭模型
闭模型时使用。
了解更多关于模型闭包回调的信息
*使用的回调*: 关闭,关闭 (闭幕)
*描述*:
* 关闭,关闭 -在模型关闭后执行。
|
基于模型闭包条件的回调允许: *释放模型运行期间使用的资源(内存或文件描述符; *执行模型关闭前需要完成的任何最终任务; *在关闭之前保存模型(或其数据)的状态。 |
诊断窗口中的消息
在模型的回调代码中,您可以将消息发送到 模型诊断窗口
使用函数:
* engee.info(味精) --资讯讯息;
* 恩吉。警告(味精) --警告信息;
这些函数只在回调(掩码和模型)中工作。 通过插值收集文本("价值=$(x)")或 字符串(…).
|
回调组的_examples_
打开模型([医]预发基金, 邮递员):
PreLoadFunc() = begin
engee.info("Открываю модель")
end
PostLoadFunc() = begin
engee.info("Модель загружена")
end
模型执行(InitFunc, 启动基金, [医]暂停, ContinueFunc, 权宜之计):
InitFunc() = engee.info("Инициализация завершена")
StartFunc() = engee.info("Симуляция запущена")
PauseFunc() = engee.warning("Симуляция на паузе")
ContinueFunc() = engee.info("Продолжаю после паузы")
StopFunc() = engee.info("Симуляция остановлена")
保存模型(PreSave臓臓, 储蓄后):
PreSave() = engee.info("Сохраняю модель…")
PostSave() = engee.info("Модель сохранена")
关闭模型(关闭,关闭):
CloseFunc() = begin
try
# освобождение временных ресурсов
engee.info("Ресурсы освобождены, модель закрыта")
catch e
engee.warning("Не удалось корректно закрыть модель: $(e)")
end
end
| 另请参阅有关块掩码中的消息的部分。: 诊断窗口中的消息。 |
工作示例
要查看回调如何工作的示例,请转到 链接。
对于每个回调在 *AnyMath*您可以分配一个变量。 这是方便跟踪触发取决于模拟条件,例如,在模型开放调用。 [医]预发基金 您可以使用代码:
#переменные открытия модели
PreL = 1 #выполняется до загрузки модели
PostL = 0 #выполняется после загрузки модели
# переменные выполнения модели
Init = 0 #выполняется после компиляции модели
Start = 0 #выполняется до первого шага симуляции
Pause = 0 #вызывается в случае паузы симуляции
Continue = 0 #выполняется на одном шаге при запуске модели после паузы
Stop = 0 #выполняется во время остановки симуляции
#переменные сохранения модели
PreS = 0 #выполняется перед сохранением модели
PostS = 0 #выполняется после сохранения модели
#переменные закрытия модели
Close = 0 #выполняется после закрытия модели
此代码使用null值初始化变量。 变量 预处理/预处理,与打开模型相关联,等于一,因为它的参数在加载模型之前和之后加载(它们总是被执行)。 例如,在模型执行回调中 启动基金 你可以设置一个变量 开始=1. 如果此回调成功,则变量的值将从 0 (未完成)上 1 (完成)。 您可以使用"变量"窗口监视回调的执行。:

每次触发回调时,都会更新变量,然后输出它们的值,用于仿真过程的分析和调试。