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

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

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

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

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

p = PortfolioMAD;
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 = PortfolioMAD;
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, оптимизация портфеля для PortfolioMAD возразите использует 'sqp' алгоритм как значение по умолчанию. Для получения дополнительной информации о fmincon и ограниченные нелинейные алгоритмы оптимизации и опции, см. Ограниченные Нелинейные Алгоритмы Оптимизации (Optimization Toolbox).

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

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

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

p = PortfolioMAD;
p = setSolver(p, 'fmincon', 'Algorithm', 'active-set', 'Display', 'final');
display(p.solverOptions);
fmincon options:

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

   Set properties:
                    Algorithm: 'active-set'
                      Display: 'final'

   Default properties:
               CheckGradients: 0
          ConstraintTolerance: 1.0000e-06
     FiniteDifferenceStepSize: 'sqrt(eps)'
         FiniteDifferenceType: 'forward'
            FunctionTolerance: 1.0000e-06
       MaxFunctionEvaluations: '100*numberOfVariables'
                MaxIterations: 400
          OptimalityTolerance: 1.0000e-06
                    OutputFcn: []
                      PlotFcn: []
    SpecifyConstraintGradient: 0
     SpecifyObjectiveGradient: 0
                StepTolerance: 1.0000e-06
                     TypicalX: 'ones(numberOfVariables,1)'
                  UseParallel: 0

В качестве альтернативы setSolver функция принимает optimoptions возразите в качестве второго аргумента. Например, можно изменить алгоритм в 'active-set' без отображенного вывода можно следующим образом:

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

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

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

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

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

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

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

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

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

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

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

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

Для ‘min’: нелинейная цель, 'TrustRegionCP', 'ExtendedCP', или '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

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

| | | | | | | | |

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

Больше о

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