Выбор и управление решателем для оптимизации PortfolioMAD

Когда решение оптимизации портфеля для объекта PortfolioMAD, в то время как все изменения fmincon от Optimization Toolbox™ поддерживаются, с помощью 'sqp' и алгоритмов 'active-set' для fmincon, рекомендуется, и использование алгоритма 'interior-point' не рекомендуется для оптимизации портфеля MAD.

В отличие от Optimization Toolbox, который использует алгоритм 'trust-region-reflective' в качестве алгоритма по умолчанию для fmincon, оптимизация портфеля для объекта PortfolioMAD использует алгоритм 'active-set'. Для получения дополнительной информации о fmincon и ограниченных нелинейных алгоритмах оптимизации и опциях, см. Ограниченные Нелинейные Алгоритмы Оптимизации (Optimization Toolbox).

Чтобы изменить опции fmincon для оптимизации портфеля MAD, используйте setSolver, чтобы установить скрытые свойства solverType и solverOptions задать и управлять решателем. Поскольку эти свойства решателя скрыты, вы не можете установить их использующий объект PortfolioMAD. Решатель по умолчанию является fmincon с алгоритмом 'sqb' и не отобразил вывод, таким образом, вы не должны использовать setSolver, чтобы задать это.

Если вы хотите задать дополнительные опции, сопоставленные с решателем fmincon, setSolver принимает эти опции как аргументы пары "имя-значение". Например, если вы хотите использовать fmincon с алгоритмом sqp и с отображенным выводом, используйте setSolver с:

p = PortfolioMAD;
p = setSolver(p, 'fmincon', 'Algorithm', 'sqp', 'Display', 'final');
display(p.solverOptions.Algorithm);
display(p.solverOptions.Display);
sqp
final

Также функция setSolver принимает объект optimoptions как второй аргумент. Например, можно изменить алгоритм на trust-region-reflective без отображенного вывода можно следующим образом:

p = PortfolioMAD;
options = optimoptions('fmincon', 'Algorithm', 'trust-region-reflective', 'Display', 'off');
p = setSolver(p, 'fmincon', options);
display(p.solverOptions.Algorithm);
display(p.solverOptions.Display);
trust-region-reflective
off

Смешанное целочисленное нелинейное программирование (MINLP) решатель, сконфигурированное использование setSolverMINLP, позволяет вам задать сопоставленные опции решателя для оптимизации портфеля для объекта PortfolioMAD. Когда любой или любая комбинация 'Conditional' , BoundType, MinNumAssets или ограничения MaxNumAssets активны, проблема портфеля, формулируется путем добавления двоичных переменных NumAssets, где 0 указывает не инвестированный, и 1 инвестируют. Для получения дополнительной информации об использовании 'Conditional' BoundType смотрите setBounds. Для получения дополнительной информации об определении MinNumAssets и MaxNumAssets, смотрите setMinMaxNumAssets.

При использовании функций estimate с объектом PortfolioMAD, где 'Conditional' BoundType, MinNumAssets или ограничения MaxNumAssets активны, смешанное целочисленное нелинейное программирование (MINLP), автоматически используется решатель.

Инструкции по решателю для объектов PortfolioMAD

Следующая таблица предоставляет инструкции для использования setSolver и setSolverMINLP.

Проблема портфеляФункция PortfolioMADТип задачи оптимизацииОсновной решатель Решатель помощника
Портфель, не отслеживая ошибочные ограниченияestimateFrontierByRiskОптимизация портфеля для уровня определенного риска вводит нелинейное ограничение. Поэтому эта проблема имеет линейную цель с линейными и нелинейными ограничениями.'fmincon' с помощью setSolver

'linprog' с помощью setSolver

Портфель, не отслеживая ошибочные ограниченияestimateFrontierByReturnНелинейная цель с линейными ограничениями'fmincon' с помощью setSolver

'linprog' с помощью setSolver

Портфель, не отслеживая ошибочные ограниченияestimateFrontierLimits

Нелинейная или линейная цель с линейными ограничениями

Для ‘min’: нелинейная цель, 'fmincon' с помощью setSolver

Для ‘max’: линейная цель, 'linprog' с помощью setSolver

Не применяется
PortfolioMAD с активным 'Conditional' BoundType, MinNumAssets и MaxNumAssetsestimateFrontierByRiskПроблема формулируется путем представления двоичных переменных NumAssets, чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP.Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP'fmincon' используется, когда функции estimate уменьшают проблему в NLP. Этот решатель сконфигурирован через setSolver.
PortfolioMAD с активным 'Conditional' BoundType, MinNumAssets и MaxNumAssetsestimateFrontierByReturnПроблема формулируется путем представления двоичных переменных NumAssets, чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP.Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP'fmincon' используется, когда функции estimate уменьшают проблему в NLP. Этот решатель сконфигурирован через setSolver
PortfolioMAD с активным 'Conditional' BoundType, MinNumAssets и MaxNumAssetsestimateFrontierLimitsПроблема формулируется путем представления двоичных переменных NumAssets, чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP.Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP'fmincon' используется, когда функции estimate уменьшают проблему в NLP. Этот решатель сконфигурирован через setSolver

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

| | | | | | | | |

Связанные примеры

Больше о