В этом примере показано, как задать сценарии симуляции и использовать Fixed-Point Tool, чтобы собрать области значений рабочими симуляциями с помощью этих сценариев. Можно затем использовать Fixed-Point Tool, чтобы оптимизировать типы данных с фиксированной точкой системы.
Во время оптимизации программное обеспечение устанавливает базовую линию путем симуляции исходной модели. Это затем создает различные версии фиксированной точки вашей модели и запускает симуляции, чтобы определить поведение с помощью новых типов данных. Оптимизация выбирает модель, которая минимизирует целевую функцию, также соответствуя заданным поведенческим ограничениям. Включая Simulink.SimulationInput
объект в настройке позволяет вам задавать сценарии дополнительной симуляции, чтобы рассмотреть во время оптимизации. Исчерпывающий набор входных сигналов может помочь гарантировать, что полный рабочий диапазон вашего проекта осуществлен во время процесса оптимизации.
Откройте модель. В этом примере вы оптимизируете типы данных Подсистемы контроллера. Модель настраивается, чтобы использовать или вход пандуса или случайный вход.
model = 'ex_controllerHarness';
open_system(model)
Создайте Simulink.SimulationInput
объект, который содержит различные сценарии. Используйте обоих вход пандуса, а также четыре различных seed для случайного входа.
si = Simulink.SimulationInput.empty(5, 0); % scan through 4 different seeds for the random input rng(1); seeds = randi(1e6, [1 4]); for sIndex = 1:length(seeds) si(sIndex) = Simulink.SimulationInput(model); si(sIndex) = si(sIndex).setVariable('SOURCE', 2); % SOURCE == 2 corresponds to the random input si(sIndex) = si(sIndex).setBlockParameter([model '/Random/uniformRandom'], 'Seed', num2str(seeds(sIndex))); % scan through the seeds si(sIndex) = si(sIndex).setUserString(sprintf('random_%i', seeds(sIndex))); end % setting SOURCE == 1 corresponds to the ramp input si(5) = Simulink.SimulationInput(model); si(5) = si(5).setVariable('SOURCE', 1); si(5) = si(5).setUserString('Ramp');
Чтобы оптимизировать типы данных в режиме, используйте Fixed-Point Tool.
В галерее Apps ex_controllerHarness
модель, выберите Fixed-Point Tool.
В Fixed-Point Tool, под рабочим процессом New, выбирают Optimized Fixed-Point Conversion
.
Под System Under Design (SUD) выберите подсистему, для которой вы хотите оптимизировать типы данных. В этом примере выберите Controller
.
Под Range Collection Mode выберите Simulation Ranges как метод сбора области значений.
Под Simulation Inputs можно задать Simulink.SimulationInput
объекты осуществить ваш проект в его полном рабочем диапазоне. В этом примере используйте сценарии симуляции, которые вы задали. Установите Simulation Inputs на si
.
Можно задать допуски к любому сигналу в модели с логгированием сигнала, включенным в таблице под Signal Tolerances. В этом примере раздел Signal Tolerances указывает, что модель не содержит регистрируемых сигналов. Поскольку эта модель использует блок Assertion из библиотеки Model Verification, чтобы проверить числовое поведение системы во время оптимизации, определения, что допуски сигнала являются дополнительными. Для получения дополнительной информации смотрите, Задают Поведенческие Ограничения.
В панели инструментов нажмите Prepare. Fixed-Point Tool проверяет систему в соответствии с проектом для совместимости с процессом преобразования и сообщает о любых проблемах, найденных в модели. Когда возможно, Fixed-Point Tool автоматически изменяет настройки, которые не совместимы. Для получения дополнительной информации смотрите Использование Fixed-Point Tool, чтобы Подготовить Систему к Преобразованию.
Чтобы задать настройки, чтобы использовать во время оптимизации, в панели инструментов, нажимают Settings.
В этом примере используйте следующие настройки.
Установите Allowable Word Lengths на [2:32]
.
Эта установка задает размеры слова, которые могут использоваться в вашей оптимизированной системе. Используйте эту установку, чтобы предназначаться для поиска окружения процесса оптимизации. Конечный результат оптимизации использует размеры слова в пересечении этой установки и размеры слова, совместимые с аппаратными ограничениями, заданными в панели Hardware Implementation вашей модели.
Установите Max Iterations на 3e2
.
Эта установка задает максимальное количество итераций, чтобы выполнить в оптимизации. Процесс оптимизации выполняет итерации через различные решения, пока он не находит идеальное решение, достигает максимального количества итераций или достигает другого критерий остановки.
Установите Patience на 50
.
Эта установка задает максимальное количество итераций, где никакое новое лучшее решение не найдено. Оптимизация продолжается, пока алгоритм продолжает находить новые лучшие решения.
Установите Objective Function на Bit Width Sum. Используя эту установку дает оптимизации команду минимизировать общую битную ширину итогового проекта при встрече заданных ограничений.
Для получения дополнительной информации о настройках оптимизации, смотрите fxpOptimizationOptions
.
Чтобы оптимизировать типы данных в модели согласно заданным настройкам, нажмите Optimize Data Types.
Во время процесса оптимизации программное обеспечение анализирует области значений объектов в вашей системе в соответствии с проектом и ограничениями, заданными в настройках, чтобы применить типы гетерогенных данных к вашей системе при минимизации целевой функции. Детали о процессе оптимизации распечатаны к панели Optimization Details в Fixed-Point Tool.
Можно остановить решатель оптимизации, прежде чем поиск оптимизации будет завершен путем нажатия на Stop в панели инструментов Fixed-Point Tool.
Когда оптимизация завершается, Fixed-Point Tool отображает таблицу, которая содержит все решения, найденные во время процесса оптимизации. Первое решение в таблице соответствует решению с самой низкой ценой (наименьшая общая битная ширина).
Чтобы смотреть области значений, которые были собраны для объектов в вашей модели во время процесса оптимизации в панели Workflow Browser, выбирают BaselineRun.
Fixed-Point Tool отображает сводные данные областей значений объектов в вашей модели и гистограммах битов, используемых каждым объектом. Каждый столбец в панели Visualization of Simulation Data представляет гистограмму для одного объекта в вашей модели. Каждый интервал в гистограмме соответствует немного в двоичном слове.
Выбор столбца подсвечивает соответствующий объект модели в электронной таблице Results Fixed-Point Tool и заполняет панель Result Details с более подробной информацией о выбранном результате.
Можно использовать визуализацию типа данных, чтобы видеть сводные данные областей значений объектов в модели и определить источники переполнения, потерь значимости и неэффективных типов данных. Используя вкладку Explore Fixed-Point Tool, можно отсортировать и отфильтровать результаты в инструменте на основе дополнительных критериев.
Чтобы применить оптимизированные типы данных к модели, в таблице решений, выбирают решение, которое вы хотите применить. В разделе Explore панели инструментов нажмите Apply and Compare. Fixed-Point Tool применяет выбранное решение, которое содержит оптимизированные типы данных с фиксированной точкой к модели и открывает Инспектора Данных моделирования.
В этом примере выберите Solution 1, затем нажмите Apply and Compare.
В Подсистеме контроллера вы видите прикладные, оптимизированные типы данных с фиксированной точкой.
Совет
Fixed-Point Tool использует возможности графического вывода инструмента Simulation Data Inspector, которые позволяют вам построить регистрируемые сигналы для графического анализа. Поскольку эта модель не содержит регистрируемых сигналов, кнопка Compare остается отключенной в этом примере. Чтобы сравнить результаты оптимизации типа данных с помощью Инспектора Данных моделирования, регистрируйте один или несколько сигналов в модели.
После оптимизации типов данных в Fixed-Point Tool можно принять решение экспортировать шаги рабочего процесса оптимизации в скрипт MATLAB®. Это позволяет вам сохранять текущие шаги рабочего процесса оптимизации и продолжать использование оптимизации типа данных fxpopt
в командной строке.
В панели инструментов нажмите Export Script. Fixed-Point Tool экспортирует скрипт под названием fxpOptimizationScript.m
к текущей рабочей директории:
model = 'ex_controllerHarness'; sud = 'ex_controllerHarness/Controller'; options = fxpOptimizationOptions(); options.MaxIterations = 300; % Maximum number of iterations to perform. options.Patience = 50; % Maximum number of iterations where no new best solution is found. options.AllowableWordLengths = 2:32; % Word lengths that can be used in your optimized system under design. savedOptions = load('fxpOptimizationScript'); options.AdvancedOptions.SimulationScenarios = savedOptions.simulationScenarios; result = fxpopt(model, sud, options); explore(result);
Simulink.SimulationInput
объект, si
, используемый во время оптимизации экспортируется в MAT-файл под названием fxpOptimizationScript.mat
.