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

При решении оптимизации портфеля для объекта PortfolioCVaR поддерживаются все изменения fmincon от Optimization Toolbox™. Также вы можете use'cuttingplane', решатель, который реализует метод плоскости сокращения Келли (см. Келли [45] при Оптимизации Портфеля).

В отличие от Optimization Toolbox, который использует алгоритм interior-point в качестве алгоритма по умолчанию для fmincon, оптимизация портфеля для объекта PortfolioCVaR использует алгоритм sqp. Для получения дополнительной информации о fmincon и ограниченных нелинейных алгоритмах оптимизации и опциях, см. Ограниченные Нелинейные Алгоритмы Оптимизации (Optimization Toolbox).

Чтобы изменить опции fmincon для оптимизации портфеля CVaR, используйте setSolver, чтобы установить скрытые свойства solverType и solverOptions задать и управлять решателем. (Обратите внимание на то, что вы видите опции по умолчанию путем создания объекта dummyPortfolioCVaR, использования p = PortfolioCVaR и затем вводите p.solverOptions.), Поскольку эти свойства решателя скрыты, вы не можете установить их использующий объект PortfolioCVaR. Решатель по умолчанию является fmincon с целевой функцией алгоритма sqp, градиенты, включенные, и не отобразил вывод, таким образом, вы не должны использовать setSolver, чтобы задать это.

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

p = PortfolioCVaR;
p = setSolver(p, 'fmincon', 'Algorithm', 'trust-region-reflective', 'Display', 'on');
display(p.solverOptions.Algorithm);
display(p.solverOptions.Display);
trust-region-reflective
on

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

p = PortfolioCVaR;
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

Решатель 'cuttingplane' имеет опции, чтобы управлять итерациями номера и останавливающимися допусками. Кроме того, этот решатель использует linprog в качестве основного решателя, и все опции linprog поддерживаются с помощью структур optimoptions. Все эти опции установлены с помощью setSolver.

Например, можно использовать setSolver, чтобы увеличить число итераций для 'cuttingplane':

p = PortfolioCVaR;
p = setSolver(p, 'cuttingplane', 'MaxIter', 2000);
display(p.solverType);
display(p.solverOptions);
cuttingplane
                MaxIter: 2000
                 AbsTol: 1.0000e-06
                 RelTol: 1.0000e-05
    MasterSolverOptions: [1x1 optim.options.Linprog]

Чтобы изменить основной алгоритм решателя, to'interior-point', без отображения, используют setSolver, чтобы изменить 'MasterSolverOptions':

p = PortfolioCVaR;
options = optimoptions('linprog','Algorithm','interior-point','Display','off');
p = setSolver(p,'cuttingplane','MasterSolverOptions',options);
display(p.solverType)
display(p.solverOptions)
display(p.solverOptions.MasterSolverOptions.Algorithm)
display(p.solverOptions.MasterSolverOptions.Display)
cuttingplane
                MaxIter: 1000
                 AbsTol: 1.0000e-06
                 RelTol: 1.0000e-05
    MasterSolverOptions: [1x1 optim.options.Linprog]

interior-point
off

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

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

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

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

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

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

estimateFrontierByReturnНелинейная цель с линейными ограничениями'fmincon' или ' 'cuttingplane' с помощью setSolver

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

estimateFrontierLimits

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

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

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

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

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

| | | | | | | | |

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

Больше о

Внешние веб-сайты