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

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

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

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

  • Модель не может использовать переопределение типа данных, чтобы установить базовое поведение.

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

  • Формат регистрации данных модели должен быть установлен в Dataset.

    Чтобы сконфигурировать эту установку, в Параметрах конфигурации, в панели Data Import/Export, устанавливают Format на Dataset.

  • Модель должна иметь конечное время остановки симуляции.

Во время процесса оптимизации программное обеспечение делает следующие изменения конфигурации модели:

  • В Параметрах конфигурации, в Diagnostics> панель Data Validity, устанавливает параметр Simulation range checking на error.

    Если какие-либо области значений симуляции нарушают указанные диапазоны проекта, остановки оптимизации.

  • В Параметрах конфигурации, в Diagnostics> панель Data Validity, устанавливает Detect precision loss, Detect underflow и параметры Detect overflow к none.

    Чтобы оптимизировать типы данных системы, оптимизация понижает точность базовой модели. Поэтому некоторое переполнение, потери значимости и потеря точности ожидаются. Можно установить допустимый уровень квантования с помощью addTolerance метод.

Можно восстановить эту диагностику после оптимизации в диалоговом окне Configuration Parameters.

Лучшые практики для оптимизации типов данных

Задайте ограничения

Чтобы определить, приемлемо ли поведение новой реализации фиксированной точки, оптимизация требует четко определенных поведенческих ограничений. Чтобы задать ограничение, используйте addTolerance метод fxpOptimizationOptions объект, или использующий один или несколько Model Verification (Simulink) блоки.

Минимизируйте заблокированные типы данных

Когда установка Lock data types against changes by the fixed-point tools блока в системе, которую вы хотите оптимизировать, включена, это минимизирует свободу процесса оптимизации найти новые решения.

Управление модели и исследование

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, запустить Инспектора Данных моделирования и исследовать проект, содержащий самое маленькое общее количество битов при поддержании числовых допусков, заданных в opt объект.

 explore(result);

Можно вернуться модель назад к ее исходному состоянию с помощью revert метод OptimizationResult объект.

 revert(result);

Смотрите также

Функции

Классы

Похожие темы