主要内容

均值-方差组合优化求解器的选择与控制

均值-方差组合优化的默认解算器是lcprog,实现了线性互补规划(LCP)算法。虽然lcprog适用于大多数问题,你可以调整参数来控制算法。或者,均值-方差投资组合优化工具允许您使用的任何变量quadprog从优化工具箱™软件。比如优化工具箱,它使用interior-point-convex算法作为默认算法quadprog,组合优化工具也使用interior-point-convex算法为默认值。有关详情quadprog和二次规划算法和选项,见二次规划算法

使用“lcprog”而且“quadprog”

修改任一项lcprog或者具体来说quadprog作为求解器,使用setSolver函数设置隐藏属性solverType而且solverOptions指定和控制求解器。方法设置这些选项,因为解算器属性是隐藏的投资组合对象。默认的解算器是lcprog所以你不需要使用setSolver指定这个求解器。使用quadprog,可设置默认值interior-point-convex算法的quadprog使用以下代码:

p =投资组合;p = setSolver(p,“quadprog”);显示器(p.solverType)显示器(p.solverOptions)
quadprog options:当前算法(' internal -point-convex')使用的选项:(其他可用算法:'active-set', 'trust- zone -reflective')设置属性:Algorithm: ' internal -point-convex' Display: 'off' OptimalityTolerance: 1.0000 -12默认属性:ConstraintTolerance: 1.0000 -08线性解算法:'auto' MaxIterations: 200 StepTolerance: 1.0000 -12
你可以切换回lcprog下面的代码:
p = setSolver(p,“lcprog”);显示(p.solverType);显示器(p.solverOptions)
lcprog MaxIter: [] TieBreak: [] TolPiv: 5.0000 -08
在这两种情况下,setSolver设置与任一求解器关联的默认选项。如果您想指定与给定求解器关联的其他选项,setSolver在函数调用中接受带有名称-值参数的这些选项。例如,如果你打算使用quadprog并且想要使用“trust-region-reflective”算法,称之为setSolver下面的代码:
p =投资组合;p = setSolver(p,“quadprog”“算法”“trust-region-reflective”);显示器(p.solverOptions)
quadprog options:当前算法('trust-region-reflective')使用的选项:(其他可用算法:'active-set', ' internal -point-convex')设置属性:算法:'trust-region-reflective'默认属性:显示:'final' FunctionTolerance: '默认依赖于问题' HessianMultiplyFcn: [] MaxIterations: '默认依赖于问题' OptimalityTolerance: '默认依赖于问题' StepTolerance: 2.2204e-14 SubproblemAlgorithm: 'cg' TypicalX: 'ones(numberOfVariables,1)'

此外,如果要指定的任何选项quadprog这是你通常设置的optimoptions从优化工具箱,setSolver接受一个optimoptions对象作为第二个参数。例如,可以从的默认选项开始quadprog设定的setSolver然后把算法改成“trust-region-reflective”没有显示输出:

p =投资组合;选项= optimoptions(“quadprog”“算法”“trust-region-reflective”“显示”“关闭”);p = setSolver(p,“quadprog”、选择);显示器(p.solverOptions.Algorithm)显示器(p.solverOptions.Display)
trust-region-reflective掉

使用混合整数非线性规划(MINLP)求解器

混合整数非线性规划(MINLP)求解器,配置使用setSolverMINLP,使您可以指定用于组合优化的关联求解器选项投资组合对象。当任意一个或任意组合时,使用MINLP求解器“条件”BoundTypeMinNumAssets,或MaxNumAssets约束是活动的。在这种情况下,您通过添加来制定投资组合问题NumAssets二进制变量,其中0表示未投资,和1是投资。有关使用的更多信息“条件”BoundType,请参阅setBounds.有关指定的更多信息MinNumAssets而且MaxNumAssets,请参阅setMinMaxNumAssets

当使用估计函数具有投资组合对象“条件”BoundTypeMinNumAssets,或MaxNumAssets约束是主动的,自动使用混合整数非线性规划(MINLP)求解器。

组合对象的求解指南

下表提供了使用指南setSolver而且setSolverMINLP

投资组合问题 组合功能 优化问题的类型 主要解决 帮助解决者
没有跟踪错误约束的投资组合 estimateFrontierByRisk 针对特定风险水平优化投资组合引入了非线性约束。因此,该问题具有线性目标和线性和非线性约束。 “fmincon”使用setSolver

“最小值”:二次目标,“quadprog”“lcprog”使用setSolver

“马克斯”:线性目标,“linprog”“lcprog”使用setSolver

没有跟踪错误约束的投资组合 estimateFrontierByReturn 带有线性约束的二次目标 “quadprog”“lcprog”使用setSolver

“最小值”:二次目标,“quadprog”“lcprog”使用setSolver

“马克斯”:线性目标,“linprog”“lcprog”使用setSolver

没有跟踪错误约束的投资组合 estimateFrontierLimits

带有线性约束的二次或线性目标

“最小值”:二次目标,“quadprog”“lcprog”使用setSolver

“马克斯”:线性目标,“linprog”“lcprog”使用setSolver

不适用
没有跟踪错误约束的投资组合 estimateMaxSharpeRatio 带有线性约束的二次目标 “quadprog”使用setSolver

因为estimateMaxSharpeRatio在内部调用estimateFrontierLimits的所有解算器estimateFrontierLimits辅助解算器是求解器吗

带有跟踪误差约束的投资组合 estimateFrontierByRisk 线性目标与线性和非线性约束 “fmincon”使用setSolver 不适用
带有跟踪误差约束的投资组合 estimateFrontierByReturn 线性目标与线性和非线性约束 “fmincon”使用setSolver 不适用
带有跟踪误差约束的投资组合 estimateFrontierLimits 具有线性和非线性约束的二次(最小风险问题)或线性(最大收益问题)目标 “fmincon”使用setSolver 不适用
带有跟踪误差约束的投资组合 estimateMaxSharpeRatio 带有线性和非线性约束的二次目标 “fmincon”使用setSolver 不适用
活跃的投资组合“条件”BoundTypeMinNumAssets,MaxNumAssets estimateFrontierByRisk 这个问题是通过引入来表述的NumAssets二元变量,表示是否投资相应的资产。因此,它需要一个混合整数非线性规划求解器。提供了三种类型的MINLP求解器,请参见setSolverMINLP 混合整数非线性规划求解器(MINLP)setSolverMINLP “quadprog”“fmincon”时使用。估计函数将问题简化为NLP。这两个求解器可以通过setSolver
活跃的投资组合“条件”BoundTypeMinNumAssets,MaxNumAssets estimateFrontierByReturn 这个问题是通过引入来表述的NumAssets二元变量,表示是否投资相应的资产。因此,它需要一个混合整数非线性规划求解器。提供了三种类型的MINLP求解器,请参见setSolverMINLP 混合整数非线性规划求解器(MINLP)setSolverMINLP “quadprog”“fmincon”时使用。估计函数将问题简化为NLP。这两个求解器可以通过setSolver
活跃的投资组合“条件”BoundTypeMinNumAssets,MaxNumAssets estimateFrontierLimits 这个问题是通过引入来表述的NumAssets二元变量,表示是否投资相应的资产。因此,它需要一个混合整数非线性规划求解器。提供了三种类型的MINLP求解器,请参见setSolverMINLP 混合整数非线性规划求解器(MINLP)setSolverMINLP “quadprog”“fmincon”时使用。估计函数将问题简化为NLP。这两个求解器可以通过setSolver
活跃的投资组合“条件”BoundTypeMinNumAssets,MaxNumAssets estimateMaxSharpeRatio 这个问题是通过引入来表述的NumAssets二元变量,表示是否投资相应的资产。因此,它需要一个混合整数非线性规划求解器。提供了三种类型的MINLP求解器,请参见setSolverMINLP 混合整数非线性规划求解器(MINLP)setSolverMINLP “quadprog”“fmincon”时使用。估计函数将问题简化为NLP。这两个求解器可以通过setSolver

使用投资组合对象的自定义目标问题求解指南

下表提供了使用指南setSolver而且setSolverMINLP当使用estimateCustomObjectivePortfolio

投资组合问题 组合功能 优化问题的类型 主要解决 帮助解决者
投资组合与自定义线性目标没有跟踪误差约束 estimateCustomObjectivePortfolio 带有线性约束的线性目标 “linprog”使用setSolver 不适用
投资组合与自定义二次目标没有跟踪误差约束 estimateCustomObjectivePortfolio 带有线性约束的二次目标 “quadprog”使用setSolver 不适用
投资组合与自定义非线性目标没有跟踪误差约束 estimateCustomObjectivePortfolio

带线性约束的非线性目标

“fmincon”使用setSolver 不适用
带有跟踪误差约束的自定义线性目标的投资组合 estimateCustomObjectivePortfolio 线性目标与线性和非线性约束 “fmincon”使用setSolver 不适用
带有跟踪误差约束的自定义二次目标的投资组合 estimateCustomObjectivePortfolio 带有线性和非线性约束的二次目标 “fmincon”使用setSolver 不适用
带有跟踪误差约束的自定义非线性目标组合 estimateCustomObjectivePortfolio 带有线性和非线性约束的非线性目标 “fmincon”使用setSolver 不适用
活跃的投资组合“条件”BoundTypeMinNumAssets,或MaxNumAssets无跟踪误差约束 estimateCustomObjectivePortfolio 这个问题是通过引入来表述的NumAssets二元变量,表示是否投资相应的资产。因此,它需要一个混合整数非线性规划求解器。提供了三种类型的MINLP求解器,请参见setSolverMINLP 混合整数非线性规划求解器(MINLP)setSolverMINLP “intlinprog”当问题简化为混合整数线性问题时使用。此求解器可以使用setSolverMINLP和它的名称-值参数IntMasterSolverOptions

另请参阅

|||

相关的例子

更多关于

外部网站

Baidu
map