Генерация кода для quadprog

Что такое генерация кода?

Генерация кода является преобразованием кода MATLAB® к коду C/C++ с помощью MATLAB Coder™. Генерация кода требует лицензии MATLAB Coder.

Как правило, вы используете генерацию кода, чтобы развернуть код по оборудованию, которое не запускает MATLAB. Для примера смотрите, Генерируют Код для quadprog. Для общего нелинейного программирования смотрите Генерацию кода для Основ Оптимизации.

Требования генерации кода

  • quadprog генерация кода поддержек, использующая любого codegen функционируйте или приложение MATLAB Coder. У вас должна быть лицензия MATLAB Coder, чтобы сгенерировать код.

  • Целевой компьютер должен поддержать стандартные расчеты с плавающей точкой с двойной точностью. Вы не можете сгенерировать код для расчетов или фиксированной точки с одинарной точностью.

  • quadprog не поддерживает problem аргумент для генерации кода.

    [x,fval] = quadprog(problem) % Not supported
  • Весь quadprog введите матрицы, такие как A, Aeq, lb, и ub должно быть полным, не разреженным. Можно преобразовать разреженные матрицы в полный при помощи full функция.

  • lb и ub аргументы должны иметь то же количество записей как количество столбцов в H или должен быть пустой [].

  • Для усовершенствованной оптимизации кода, включающей встраиваемые процессоры, вам также нужна лицензия Embedded Coder®.

  • Необходимо включать опции для quadprog и задайте их использующий optimoptions. Опции должны включать Algorithm опция, набор к 'active-set'.

    options = optimoptions('quadprog','Algorithm','active-set');
    [x,fval,exitflag] = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options);
  • Генерация кода поддерживает эти опции:

    • Algorithm — Должен быть 'active-set'

    • ConstraintTolerance

    • MaxIterations

    • ObjectiveLimit

    • OptimalityTolerance

    • StepTolerance

  • Сгенерированный код ограничил проверку ошибок на опции. Рекомендуемый способ обновить опцию состоит в том, чтобы использовать optimoptions, не запись через точку.

    opts = optimoptions('quadprog','Algorithm','active-set');
    opts = optimoptions(opts,'MaxIterations',1e4); % Recommended
    opts.MaxIterations = 1e4; % Not recommended
  • Не загружайте опции из файла. Выполнение так может заставить генерацию кода перестать работать. Вместо этого создайте опции в своем коде.

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

Сгенерированный код, не многопоточный

По умолчанию сгенерированный код для использования вне среды MATLAB пользуется библиотеками линейной алгебры, которые не многопоточны. Поэтому этот код может запуститься значительно медленнее, чем код в среде MATLAB.

Если ваш целевой компьютер имеет несколько ядер, то можно достигнуть лучшей производительности при помощи пользовательских многопоточных библиотек LAPACK и BLAS. Чтобы включить эти библиотеки в ваш сгенерированный код, смотрите, Ускоряют Линейную алгебру в Сгенерированном Автономном Коде при помощи Вызовов LAPACK (MATLAB Coder).

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

| |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте