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

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

Используя 'TrustRegionCP', 'ExtendedCP', и 'cuttingplane' SolverTypes

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

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

p = PortfolioCVaR;
p = setSolver(p, 'TrustRegionCP', 'MaxIterations', 2000);
display(p.solverType);
display(p.solverOptions);
trustregioncp
                MaxIterations: 2000
         AbsoluteGapTolerance: 1.0000e-07
         RelativeGapTolerance: 1.0000e-05
       NonlinearScalingFactor: 1000
       ObjectiveScalingFactor: 1000
          MasterSolverOptions: [1×1 optim.options.Linprog]
                      Display: 'off'
                CutGeneration: 'basic'
     MaxIterationsInactiveCut: 30
           ActiveCutTolerance: 1.0000e-07
                  ShrinkRatio: 0.7500
    TrustRegionStartIteration: 2
                   DeltaLimit: 1

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

p = PortfolioCVaR;
options = optimoptions('linprog','Algorithm','interior-point','Display','off');
p = setSolver(p,'TrustRegionCP','MasterSolverOptions',options);
display(p.solverType)
display(p.solverOptions)
display(p.solverOptions.MasterSolverOptions.Algorithm)
display(p.solverOptions.MasterSolverOptions.Display)
trustregioncp
                MaxIterations: 1000
         AbsoluteGapTolerance: 1.0000e-07
         RelativeGapTolerance: 1.0000e-05
       NonlinearScalingFactor: 1000
       ObjectiveScalingFactor: 1000
          MasterSolverOptions: [1×1 optim.options.Linprog]
                      Display: 'off'
                CutGeneration: 'basic'
     MaxIterationsInactiveCut: 30
           ActiveCutTolerance: 1.0000e-07
                  ShrinkRatio: 0.7500
    TrustRegionStartIteration: 2
                   DeltaLimit: 1

interior-point
off

Используя 'fmincon' SolverType

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

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

p = PortfolioCVaR;
p = setSolver(p, 'fmincon');
display(p.solverOptions);
 fmincon options:

   Options used by current Algorithm ('sqp'):
   (Other available algorithms: 'active-set', 'interior-point', 'sqp-legacy', 'trust-region-reflective')

   Set properties:
                    Algorithm: 'sqp'
          ConstraintTolerance: 1.0000e-08
                      Display: 'off'
          OptimalityTolerance: 1.0000e-08
    SpecifyConstraintGradient: 1
     SpecifyObjectiveGradient: 1
                StepTolerance: 1.0000e-08

   Default properties:
               CheckGradients: 0
     FiniteDifferenceStepSize: 'sqrt(eps)'
         FiniteDifferenceType: 'forward'
       MaxFunctionEvaluations: '100*numberOfVariables'
                MaxIterations: 400
               ObjectiveLimit: -1.0000e+20
                    OutputFcn: []
                      PlotFcn: []
                 ScaleProblem: 0
                     TypicalX: 'ones(numberOfVariables,1)'
                  UseParallel: 0

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

p = PortfolioCVaR;
p = setSolver(p, 'fmincon','Algorithm','active-set','Display','off');
display(p.solverOptions.Algorithm);
display(p.solverOptions.Display);
active-set
off

В качестве альтернативы setSolver принимает optimoptions объект от Optimization Toolbox в качестве второго аргумента. Например, можно изменить алгоритм в '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

Используя смешанное целочисленное нелинейное программирование (MINLP) решатель

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

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

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

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

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

'linprog' использование setSolver

PortfolioCVaR без активного 'Conditional' BoundType, MinNumAssets, и MaxNumAssetsestimateFrontierByReturnНелинейная цель с линейными ограничениями'TrustRegionCP', 'ExtendedCP', 'fmincon', или 'cuttingplane' использование setSolver

'linprog' использование setSolver

PortfolioCVaR без активного 'Conditional' BoundType, MinNumAssets, и MaxNumAssetsestimateFrontierLimits

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

Для ‘min’: нелинейная цель, 'TrustRegionCP', 'ExtendedCP', 'fmincon', или 'cuttingplane' использование setSolver

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

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

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

| | | | | | | | |

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

Больше о

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