exponenta event banner

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

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

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

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

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

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

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

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

Рекомендации по оптимизации типов данных

Определение ограничений

Чтобы определить, приемлемо ли поведение новой реализации с фиксированной точкой, для оптимизации требуются четко определенные поведенческие ограничения. Чтобы определить ограничение, используйте addTolerance способ fxpOptimizationOptions или использовать один или несколько блоков проверки модели в модели. Дополнительные сведения см. в разделе Указание поведенческих ограничений.

Свернуть заблокированные типы данных

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

Управление моделью и разведка

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, чтобы запустить Simulation Data Inspector и изучить конструкцию, содержащую наименьшее общее количество битов при сохранении числовых допусков, указанных в opt объект.

 explore(result);

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

 revert(result);

См. также

Функции

Классы

Связанные темы