quadprog ФонГенерация кода - это преобразование кода MATLAB ® в код C/C + + с помощью Coder™ MATLAB. Для создания кода требуется лицензия MATLAB Coder.
Как правило, генерация кода используется для развертывания кода на оборудовании, на котором не работает MATLAB.
Пример см. в разделе Создание кода для квадрограммы. Сведения о создании кода в других решателях оптимизации см. в разделах Генерация кода для fmincon, Генерация кода для fsolve или Генерация кода для lsqcurvefit или lsqnonlin.
quadprog поддерживает генерацию кода с помощью codegen (Кодер MATLAB) или приложение Кодер MATLAB. Для создания кода необходимо иметь лицензию кодера MATLAB.
Целевое оборудование должно поддерживать стандартные вычисления с плавающей запятой с двойной точностью. Невозможно создать код для вычислений с одной точностью или фиксированной точкой.
Цели создания кода не используют те же библиотеки математических ядер, что и решатели MATLAB. Поэтому решения для генерации кода могут отличаться от решений для решающих устройств, особенно для плохо оговоренных задач.
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).
optimoptions | quadprog | codegen (кодер MATLAB)