Оптимизация типа данных стремится минимизировать целевую функцию, такую как общая битовая ширина или предполагаемое количество операторов в сгенерированном коде для заданной системы, при сохранении исходного поведения системы в пределах заданного допуска. Во время оптимизации программное обеспечение устанавливает базовую линию путем симуляции исходной модели. Затем он создает различные версии вашей модели с фиксированной точкой и запускает симуляции, чтобы определить поведение с помощью новых типов данных. Оптимизация выбирает модель, которая минимизирует целевую функцию, одновременно удовлетворяя заданным поведенческим ограничениям.
Модель, содержащая систему, которую вы хотите оптимизировать, должна иметь следующие характеристики:
Все блоки в модели должны поддерживать типы данных с фиксированной точкой.
Проект областей значений, заданная для блоков в модели, должна соответствовать симуляции областей значений.
Если модель содержит блок MATLAB Function, она должна использовать MATLAB® языковые функции, поддерживаемые для преобразования с фиксированной точкой. Для получения дополнительной информации смотрите Функции языка MATLAB, поддерживаемые для автоматического преобразования фиксированной точки.
Модель должна иметь конечное время остановки симуляции.
В процессе оптимизации программное обеспечение вносит изменения в несколько настроек и параметров конфигурации модели. Эти цели этих изменений включают подавление диагностики, включение регистрации в Данные моделирования Inspector, сокращение памяти, используемой результатом, обеспечение валидности модели, ускорение процесса оптимизации и отключение переопределения типа данных. Для получения дополнительной информации смотрите Изменения строения модели, сделанные во время оптимизации типа данных. Вы можете восстановить эти диагностики после завершения оптимизации.
Чтобы определить, является ли поведение новой реализации с фиксированной точкой приемлемым, оптимизация требует четко определенных поведенческих ограничений. Чтобы задать ограничение, используйте addTolerance
метод fxpOptimizationOptions
объект, или используйте один или несколько блоков Верификации модели в модели. Дополнительные сведения см. в разделе «Задание поведенческих ограничений».
Когда Lock data types against changes by the fixed-point tools установка блока в системе, которую вы хотите оптимизировать, включена, это минимизирует свободу процесса оптимизации, чтобы найти новые решения.
The fxpopt
функция возвращает OptimizationResult
объект, содержащий ряд реализаций с фиксированной точкой, называемых решениями. Если процесс оптимизации находит реализацию с фиксированной точкой, которая удовлетворяет заданным поведенческим ограничениям, решения сортируются по стоимости, предоставляя лучшее решение с наименьшей стоимостью (бит или количество операторов) в качестве первого элемента массива.
В случаях, когда оптимизация не может найти реализацию с фиксированной точкой, удовлетворяющую поведенческим ограничениям, решения упорядочиваются по максимальному абсолютному различию от базовой модели с наименьшим различием в качестве первого элемента.
Исследуйте лучшее найденное решение с помощью explore
метод OptimizationResult
объект. Таким же образом можно исследовать любые другие найденные решения. Не сохраняйте и не закрывайте модель, пока вы не выберете решение, которое хотите сохранить. Закрытие или сохранение модели препятствует дальнейшему исследованию различных решений.
В этом примере показано, как оптимизировать типы данных, используемые системой, на основе заданных допусков.
Чтобы начать, откройте систему, для которой вы хотите оптимизировать типы данных.
model = 'ex_auto_gain_controller'; sud = 'ex_auto_gain_controller/sud'; open_system(model)
Создайте fxpOptimizationOptions
объект для определения ограничений и допусков в соответствии с целями проекта. Установите UseParallel
свойство fxpOptimizationOptions
объект к true
чтобы запустить итерации оптимизации параллельно. Можно также задать размеры слова, чтобы разрешить в проекте через AllowableWordLengths
свойство.
opt = fxpOptimizationOptions('AllowableWordLengths', 10:24, 'UseParallel', true)
opt = fxpOptimizationOptions with properties: MaxIterations: 50 MaxTime: 600 Patience: 10 Verbosity: High AllowableWordLengths: [10 11 12 13 14 15 16 17 18 19 20 21 22 23 24] UseParallel: 1 Advanced Options AdvancedOptions: [1×1 struct]
Используйте addTolerance
метод для определения допусков для различий между исходным поведением системы и поведением с помощью оптимизированных типов данных с фиксированной точкой.
tol = 10e-2; addTolerance(opt, [model '/output_signal'], 1, 'AbsTol', tol);
Используйте fxpopt
функция для запуска оптимизации. Программа анализирует области значений объектов в вашей системе в процессе проекта и ограничения, указанные в fxpOptimizationOptions
объект для применения гетерогенных типов данных к системе при минимизации общей ширины бит.
result = fxpopt(model, sud, opt);
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 4). + Preprocessing + Modeling the optimization problem - Constructing decision variables + Running the optimization solver Analyzing and transferring files to the workers ...done. - Evaluating new solution: cost 180, does not meet the tolerances. - Evaluating new solution: cost 198, does not meet the tolerances. - Evaluating new solution: cost 216, does not meet the tolerances. - Evaluating new solution: cost 234, does not meet the tolerances. - Evaluating new solution: cost 252, does not meet the tolerances. - Evaluating new solution: cost 270, does not meet the tolerances. - Evaluating new solution: cost 288, does not meet the tolerances. - Evaluating new solution: cost 306, meets the tolerances. - Evaluating new solution: cost 324, meets the tolerances. - Evaluating new solution: cost 342, meets the tolerances. - Evaluating new solution: cost 360, meets the tolerances. - Evaluating new solution: cost 378, meets the tolerances. - Evaluating new solution: cost 396, meets the tolerances. - Evaluating new solution: cost 414, meets the tolerances. - Evaluating new solution: cost 432, meets the tolerances. - Updated best found solution, cost: 306 - Evaluating new solution: cost 304, meets the tolerances. - Evaluating new solution: cost 304, meets the tolerances. - Evaluating new solution: cost 301, meets the tolerances. - Evaluating new solution: cost 305, does not meet the tolerances. - Evaluating new solution: cost 305, meets the tolerances. - Evaluating new solution: cost 301, meets the tolerances. - Evaluating new solution: cost 299, meets the tolerances. - Evaluating new solution: cost 299, meets the tolerances. - Evaluating new solution: cost 296, meets the tolerances. - Evaluating new solution: cost 299, meets the tolerances. - Evaluating new solution: cost 291, meets the tolerances. - Evaluating new solution: cost 296, does not meet the tolerances. - Evaluating new solution: cost 299, meets the tolerances. - Evaluating new solution: cost 300, meets the tolerances. - Evaluating new solution: cost 296, does not meet the tolerances. - Evaluating new solution: cost 301, meets the tolerances. - Evaluating new solution: cost 303, meets the tolerances. - Evaluating new solution: cost 299, meets the tolerances. - Evaluating new solution: cost 304, does not meet the tolerances. - Evaluating new solution: cost 300, meets the tolerances. - Updated best found solution, cost: 304 - Updated best found solution, cost: 301 - Updated best found solution, cost: 299 - Updated best found solution, cost: 296 - Updated best found solution, cost: 291 - Evaluating new solution: cost 280, meets the tolerances. - Evaluating new solution: cost 287, meets the tolerances. - Evaluating new solution: cost 288, does not meet the tolerances. - Evaluating new solution: cost 287, does not meet the tolerances. - Evaluating new solution: cost 283, meets the tolerances. - Evaluating new solution: cost 283, does not meet the tolerances. - Evaluating new solution: cost 262, does not meet the tolerances. - Evaluating new solution: cost 283, does not meet the tolerances. - Evaluating new solution: cost 282, does not meet the tolerances. - Evaluating new solution: cost 288, meets the tolerances. - Evaluating new solution: cost 289, meets the tolerances. - Evaluating new solution: cost 288, meets the tolerances. - Evaluating new solution: cost 290, meets the tolerances. - Evaluating new solution: cost 281, does not meet the tolerances. - Evaluating new solution: cost 286, does not meet the tolerances. - Evaluating new solution: cost 287, meets the tolerances. - Evaluating new solution: cost 284, meets the tolerances. - Evaluating new solution: cost 282, meets the tolerances. - Evaluating new solution: cost 285, does not meet the tolerances. - Evaluating new solution: cost 277, meets the tolerances. - Updated best found solution, cost: 280 - Updated best found solution, cost: 277 - Evaluating new solution: cost 272, meets the tolerances. - Evaluating new solution: cost 266, meets the tolerances. - Evaluating new solution: cost 269, meets the tolerances. - Evaluating new solution: cost 271, does not meet the tolerances. - Evaluating new solution: cost 274, meets the tolerances. - Evaluating new solution: cost 275, meets the tolerances. - Evaluating new solution: cost 274, does not meet the tolerances. - Evaluating new solution: cost 275, meets the tolerances. - Evaluating new solution: cost 276, does not meet the tolerances. - Evaluating new solution: cost 271, meets the tolerances. - Evaluating new solution: cost 267, meets the tolerances. - Evaluating new solution: cost 270, meets the tolerances. - Evaluating new solution: cost 272, meets the tolerances. - Evaluating new solution: cost 264, does not meet the tolerances. - Evaluating new solution: cost 265, does not meet the tolerances. - Evaluating new solution: cost 269, meets the tolerances. - Evaluating new solution: cost 270, meets the tolerances. - Evaluating new solution: cost 269, meets the tolerances. - Evaluating new solution: cost 276, meets the tolerances. - Evaluating new solution: cost 274, meets the tolerances. - Updated best found solution, cost: 272 - Updated best found solution, cost: 266 + Optimization has finished. - Neighborhood search complete. - Maximum number of iterations completed. + Fixed-point implementation that met the tolerances found. - Total cost: 266 - Maximum absolute difference: 0.087035 - Use the explore method of the result to explore the implementation.
Используйте explore
метод OptimizationResult
объект, result
, чтобы запустить Данные моделирования Inspector и исследовать проект, содержащий наименьшее общее количество бит с сохранением числовых допусков, заданных в opt
объект.
explore(result);
Можно вернуть модель обратно в ее исходное состояние, используя revert
метод OptimizationResult
объект.
revert(result);