В этом документе перечислены решения проблем, которые наиболее
часто встречались пользователям AnyLogic.
Если Вы столкнулись с какой-то проблемой или ошибкой, и не нашли ее
решения ни в Справке AnyLogic, ни в разделе Часто задаваемые вопросы,
то Вы можете обратиться за помощью к Службе технической поддержки
(воспользовавшись командой
Обратиться за помощью...).
Основная библиотека
Пешеходная библиотека
Диаграммы состояний
Эта
ошибка
свидетельствует о том, что Вашей модели не хватает памяти для хранения
данных или для вычислений. Она может произойти как при запуске модели,
так и во время ее работы. Зачастую она дополняется уточнением
“Java heap space”.
Такая ошибка не говорит о том, что Вы исчерпали ресурсы Вашего
компьютера, и в большинстве случаев она может быть исправлена.
Наиболее
очевидным
способом устранения такой ошибки является увеличение объема
выделенной Java
памяти. По умолчанию объем памяти, выделенной для модели, ограничен 64
мегабайтами, что даже близко не приближается к обычным объемам
физической памяти современных компьютеров.
Поэтому Вы можете легко позволить себе выделить больший объем памяти
для Вашей модели. Для этого нужно будет перейти к странице свойств
Дополнительные
Вашего эксперимента и ввести необходимое число в поле Максимальный размер памяти.
(Пожалуйста, обратите внимание, что данная опция не применяется к Java
апплетам – в случае апплетов это может быть сделано из
браузера.)
Другим
способом
является определение источника потребления памяти в Вашей модели и
устранение его путем небольшой переработки или оптимизации кода или
структуры модели. Ниже мы перечислим наиболее часто встречающиеся
причины чрезмерного потребления памяти:
Эта ошибка связана с тем, что используемая в AnyLogic виртуальная машина Java не может использовать заданный в установках программы объем Java памяти.
Чтобы устранить ее, нужно перейти в каталог, в котором установлена программа AnyLogic (например, С:/Program Files/AnyLogic 6), открыть файл AnyLogic.ini в текстовом редакторе и заменить в третьей строке -Xmx1024M на -Xmx512M.
После этого запустите AnyLogic снова - больше ошибка воспроизводиться не должна.
При выполнении переименования с заменой ссылок на заменяемое имя по команде Ctrl+Enter, появилось диалоговое окно, информирующее о возникновении фатальной ошибки:

Не стоит пугаться такой ошибки, это не ошибка AnyLogic или Вашей модели. Как Вы можете увидеть из приведенного в диалоговом окне описания, "This refactoring cannot be performed correctly due to syntax errors in compilation unit", то есть переименование не было выполнено вследствие того, что в данном элементе (чаще всего - классе активного объекта) есть ошибки компиляции. Это означает, что Вы пытались произвести переименование с заменой ссылок на меняемое имя в тот момент, когда в классе были критические ошибки. Эти ошибки сделали класс некомпилируемым, и поэтому AnyLogic не смог произвести переименование и перекомпилировать код класса заново.
Поэтому мы рекомендуем Вам вначале
скомпилировать модель с помощью команды Построить модель
,
исправить все критические ошибки, а уже затем произвести переименование
с заменой всех ссылок на меняемое имя.
Если Вы хотите продлить срок действия лицензии, чтобы и в дальнейшем иметь возможность работать с последними обновленияим AnyLogic и обращаться за консультациями в службу технической поддержки, Вам нужно бужет продлить срок дейстивя лицензии на Сервис тех.поддержки. Для этого, пожалуйста, свяжитесь с нами адресу support@xjtek.com. Информация о стоимости данной услуги приведена на сайте XJ technologies: http://www.xjtek.com/purchase/prices/.
И стартовая станица и справочная документация используют для отображения настройки браузера, используемого в Вашей системе по умолчанию. Поэтому причина проблемы заключается в том, что Ваш браузер настроен таким образом, что рисунки не отображаются.
Чтобы устранить это, нужно изменить настройки Вашего браузера:
Все, что я вижу - это лишь следующее сообщение об ошибке: 'java' is not recognized as an internal or external command, operable program or batch file.
Simulation Applications (модели, созданные с помощью опции AnyLogic Экспорт -> Отдельное Java приложение) являются Java приложениями и требуют установки Java на той машине, на которой Вы хотите запустить Ваше приложение. Вы можете скачать дистрибутив Java с веб сайта Sun Developer Network: http://java.sun.com.
Чтобы прогоны стохастической модели были уникальными, нужно установить случайное начальное число у генератора случайных чисел. В этом случае прогоны модели не смогут быть воспроизведены в силу того, что при каждом новом запуске модели генератор случайных чисел будет инициализироваться другим числом. По умолчанию при создании простого эксперимента ему приписывается фиксированное начальное число, поэтому генератор случайных чисел всегда инициализируется одним и тем же начальным числом, и все запуски модели идентичны.
Задание случайного начального числа генератора случайных чисел более подробно описано здесь.
Вероятно, Вы используете в Вашей модели функцию random(). Именно она и может быть источником стохастики.
Опция Фиксированное начальное число задает свойства генератора случайных чисел, который используется функциями вероятностных распределений AnyLogic. Полный список этих функци можно найти здесь.
Функция же random() принадлежит классу java.lang.Mathи обладает своим собственным генератором случайных чисел. Поэтому при каждом новом прогоне модели эта функция будет возвращать новые случайные числа. И если Вы хотите, чтобы результаты прогонов Вашей модели были воспроизводимыми, выберите опцию Фиксированное начальное число и используйте только функции вероятностных распределений AnyLogic.
Файл журнала выполнения моделей находится в одном из следующих
каталогов (в зависимости от Вашей операционной системы):
Windows:
MacOS:
Linux:
где UserName - имя Вашей учетной записи в Windows, а EditionName может быть Advanced, Professional или University, в зависимости от того, с какой версией AnyLogic Вы работаете.
Начиная с версии 6.5.1 единицы модельного времени задаются не на странице свойств эксперимента Модельное время, а на странице основных свойств модели, так как это свойство имеет отношение именно к модели.
Когда я экспортирую свою библиотеку, создается только .jar файл. Я не могу увидеть файлы документации Javadoc, хотя и выбираю при экспорте опцию Создать Javadoc.
Причина может быть одной из следующих:
Но обратите, пожалуйста, внимание, что эта Java Doc документация не будет отображаться помощником подстановки кода для объектов Вашей библиотеки - эта возможность пока еще не реализована.
Вероятно, это произошло в результате непреднамеренного изменения расположения элементов пользовательского интерфейса AnyLogic.
Если произошла данная или подобная ситуация, когда Вы расположили панели AnyLogic неудобным образом, и хотите вернуться к первоначальным настройкам расположения, то Вы можете воспользоваться командой Восстановить расположение панелей, доступной из меню Инструменты.
Эта команда восстанавливает принятые по умолчанию настройки расположения панелей, редактора и панелей инструментов (когда панель Проекты прикреплена к левому края окна AnyLogic, панель Свойства - к нижнему, Палитра - к правому и т.д.), и в том числе и располагает панель инструментов на ее первоначальном месте под меню AnyLogic.
Возможно, у Вас не установлена JRE (Java Runtime Environment) на компьютере. Скачать необходимый дистрибутив Вы можете с официального сайта Java: http://www.java.com/ru/download/index.jsp.
После установки попробуйте запустить апплет еще раз.

Эта ошибка не является ошибкой AnyLogic, а свидетельствует скорее о логической ошибке в Вашей диаграмме процесса или "узком месте" в моделируемой Вами системе. Причина ее в том, что заявки заявки не могут покинуть выходной порт, отмеченный красным кружком на анимированной диаграмме процесса, и войти во входной порт последующего объекта.
Выходные порты объектов Основной библиотеки могут быть двух типов: OutPort и OutPortPush.
Первый используется в объектах, которые могут ждать, пока принимающий объект не будет готов принять заявку, таких как Queue и Conveyor.
Большинство же объектов просто вытолкнут заявку и не будут ждать - в таких объектах используются порты типа OutPortPush. Если заявка не сможет покинуть порт OutPortPush в течение нулевого модельного времени, то возникнет ошибка. Поэтому Вы всегда будете знать о произошедшем в Вашей модели переполнении и сможете найти это "узкое место" модели.
Чтобы решить эту проблему, нужно будет либо добавить объект-буфер (например, Queue) после объекта с выделенным портом, либо увеличить вместимость очереди, если ошибка сама по себе произошла в порте объекта-буфера (Queue, Service и т.д.)
Пожалуйста, откройте панель Консоль. Если Вы увидите там информацию, подобную следующей:
java.lang.NullPointerException
at model.Main$1.update(Main.java:446)
at
com.xj.anylogic.engine.analysis.Chart.updateData(Chart.java:396)
то причина возникновения этой ошибки заключается в том, что Вы пытались отобразить на графике или диаграмме статистику использования объекта Основной библиотеки, забыв включить сбор статистики у этого объекта.
Пожалуйста, просмотрите свойства Значение Ваших диаграммы на предмет отображения ими строк статистики, подобных delay.statsUtilization.mean(). Если Вы ссылаетесь на набор данных statsUtilization какого-то объекта Основной библиотеки (например, Delay), то Вы должны вначале установить у этого объекта флажок Включить сбор статистики на странице его свойств.
Данный флажок не выбран по умолчанию в целях повышения производительности дискретно-событийных моделей.
Вы пытаетесь присоединить ресурс(ы) к заявке с помощью объекта NetworkAttach, но заявка и ресурс находятся в этот момент в разных точках сети. Поэтому Вам вначале нужно сделать так, чтобы они находились в одном узле сети (переместив либо заявку, либо ресурс), а уже потом соединять их вместе.
Либо же заявка предварительно не заняла этот ресурс, а это условие является обязательным при соединении заявки с ресурсом - прежде, чем соединять заявку с ресурсом, нужно его занять с помощью объекта NetworkSeize.
Если Вы динамически измените соединения портов
объектов Основной библиотеки с помощью методов connect()/disconnect()
или map()/unmap(),
то конечные порты не узнают о новом соединении и будут продолжать
функционировать согласно устаревшей информации о топологии соединений,
установленной при запуске модели.
Чтобы обновить информацию о соединениях портов, нужно вызвать метод refreshConnections()у
тех портов, которые были динамически соединены или отсоединены от
других портов. Например, если программно был соединен порт out
объекта myService, то
после этого Вам нужно будет выполнить следующий код:
myService.release.out.refreshConnections();
Демо модель: Connecting Enterprise Library Objects Dynamically
Эта демо модель показывает пример динамического соединения объектов Основной библиотеки. Она содержит два отдельных участка диаграммы процесса, которые Вы можете соединить щелчком по расположенной между ними кнопке. Чтобы понять реализацию подхода, Вы можете посмотреть на поле Действие этой кнопки.
В моей диаграмме процесса есть комбинация объектов Batch - Unbatch, но объект Unbatch не извлекает заявки из поступающих на его вход партий заявок, собранных ранее объектом Batch.
Чтобы разрешить объекту Unbatch извлекать заявки из поступающих на его вход заявок-партий, Вы должны сбросить флажок Постоянная партия на странице свойств предшествующего объекта Batch.
Попробуйте использовать объект PedGoTo вместо объекта PedCmdGoTo.
Объект PedGoTo моделирует движение пешеходов к месту назначения с учетом присутствующих в моделируемой среде стен. Пешеходы при этом будут, как и в реальной жизни, двигаться по коридорам и переходить из одного помещения в другое через двери.
Объект же PedCmdGoTo заставляет пешеходов двигаться прямо к точке назначения, т.e. пешеход при этом движении будет стараться пересечь стены, и не будет искать никакой другой путь, который мог бы привести его к цели, обойди он возникшее на его пути препятствие.
Проверьте, нет ли в вашей модели объектов PedServices. Возможно, причина в том, что начальная точка ломаной, задающей очередь к какому-то из сервисов, заданных с помощью объекта PedServices, находится далеко от линии, задающей сервис. А этот объект реализован таким образом, что после того, как пешеходы отстоят в очереди, они направляются к сервису, не обращая внимания на стены и препятствия (подразумевается, что начало очереди находится близко к сервису, и препятствий между ними нет).

Каждый элемент диаграммы состояний (состояние, переход и т.д.) должен принадлежать какой-то диаграмме состояний, т.e. переход должен соединять какие-то состояния или псевдосостояния, а состояние должно быть соединено с диаграммой состояний. В тех случаях, когда конечные точки Ваших переходов будут просто "висеть в воздухе" или же состояния не будут соединены с другими элементами корректно объявленной диаграммы состояний, возникнут упомянутые выше ошибки.
Поэтому первым делом Вам нужно будет проверить, все ли элементы соединены с диаграммой состояний. Сделайте двойной щелчок по ошибке в панели Ошибки. Вы увидите, что некорректно нарисованный элемент будет выделен в графическом редакторе.

Или, возможно, Вы перепутали индикатор начального состояния с началом диаграммы состояний, как показано на приведенном ниже рисунке:

Как Вы можете видеть, пользователь использовал здесь указатель начального состояния вместо начала диаграммы состояний. В таком слычае нужно удалить указатель и заменить его злементом Начало диаграммы состояний, как показано на рисунке ниже:

Причина может быть одной из следующих:
Причина этого, скорее всего, в том, что Ваш набор данных обновляется несколько раз в одни и те же моменты времени. Дело в том, что в AnyLogic обновление набора данных новыми значениями задается сразу в двух разных местах:
Скорее всего, у Вас есть диаграмма, отображающая значения этого набора данных (а может, и несколько таких диаграмм или графиков). И опция автоматического обновления выбрана как у диаграммы, так и у самого набора данных. Чтобы решить эту проблему, можно, например, перейти к свойствам диаграммы и выбрать опцию Не обновлять автоматически.
Причина того, что на гистограмме не отображается функция распределения, состоит в том, что эта функция не вычисляется соответствующим элементом Данные гистограммы, значения которого отображаются на этой гистограмме.
Пожалуйста, перейдите на страницу свойств этого элемента сбора данных и выберите там опцию Cчитать CDF.