В этом примере показано, как задать сценарии моделирования и использовать Fixed-Point Tool для сбора областей значений путем выполнения симуляций с использованием этих сценариев. Затем можно использовать Инструмент с фиксированной точкой (Fixed-Point Tool), чтобы оптимизировать типы данных с фиксированной точкой системы.
Во время оптимизации программное обеспечение устанавливает базовую линию путем симуляции исходной модели. Затем он создает различные версии вашей модели с фиксированной точкой и запускает симуляции, чтобы определить поведение с помощью новых типов данных. Оптимизация выбирает модель, которая минимизирует целевую функцию, одновременно удовлетворяя заданным поведенческим ограничениям. Включая Simulink.SimulationInput
объект в настройке позволяет вам задать дополнительные сценарии симуляции, которые будут учитываться во время оптимизации. Полный набор входных сигналов может помочь гарантировать, что полная рабочая область значений вашего проекта будет реализовываема в процессе оптимизации.
Откройте модель. В этом примере вы оптимизируете типы данных Подсистемы Контроллера. Модель настроена, чтобы использовать или наклонный вход, или случайный вход.
model = 'ex_controllerHarness';
open_system(model)
Создайте Simulink.SimulationInput
объект, который содержит различные сценарии. Используйте оба входа, а также четыре различных начальных значения для случайного входов.
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 из библиотеки Верификации модели, чтобы проверить численное поведение системы во время оптимизации, установка допусков сигнала является необязательной. Дополнительные сведения см. в разделе «Задание поведенческих ограничений».
На панели инструментов нажмите кнопку 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 применяет выбранное решение, которое содержит оптимизированные типы данных с фиксированной точкой, к модели и открывает Данные моделирования Inspector.
В этом примере выберите Solution 1, а затем нажмите Apply and Compare.
В Подсистеме Контроллера можно увидеть примененные, оптимизированные типы данных с фиксированной точкой.
Совет
Этот Fixed-Point Tool использует возможности графического изображения инструмента Данных моделирования Inspector, которые позволяют вам построить график записанных сигналов для графического анализа. Поскольку эта модель не содержит никаких зарегистрированных сигналов, кнопка Compare остается отключенной в этом примере. Чтобы сравнить результаты оптимизации типа данных с помощью Данные Моделирования Inspector, логгируйте один или несколько сигналов в вашей модели.
После оптимизации типов данных в 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);
The Simulink.SimulationInput
объект, si
, используемый во время оптимизации, экспортируется в MAT-файл с именем fxpOptimizationScript.mat
.