Оптимизация типов данных с фиксированной точкой для системы

Оптимизация типа данных стремится минимизировать целевую функцию, такую как общая битовая ширина или предполагаемое количество операторов в сгенерированном коде для заданной системы, при сохранении исходного поведения системы в пределах заданного допуска. Во время оптимизации программное обеспечение устанавливает базовую линию путем симуляции исходной модели. Затем он создает различные версии вашей модели с фиксированной точкой и запускает симуляции, чтобы определить поведение с помощью новых типов данных. Оптимизация выбирает модель, которая минимизирует целевую функцию, одновременно удовлетворяя заданным поведенческим ограничениям.

Модель, содержащая систему, которую вы хотите оптимизировать, должна иметь следующие характеристики:

  • Все блоки в модели должны поддерживать типы данных с фиксированной точкой.

  • Проект областей значений, заданная для блоков в модели, должна соответствовать симуляции областей значений.

  • Если модель содержит блок 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);

См. также

Функции

Классы

Похожие темы