非线性问题优化中的整数约束
若要使用基于问题的方法解决具有整数约束的非线性优化问题,请遵循以下过程之一:
如果你有全局优化工具箱对于基于问题的方法,请像往常一样制定问题。
遗传算法
(全局优化工具箱)是具有整数约束的非线性问题的默认求解器。您还可以指定surrogateopt
(全局优化工具箱)作为求解器解算器
的观点解决
.使用基于求解器的方法
遗传算法
或surrogateopt
解算器。基于求解器的方法要求在这些求解器之间切换时修改目标函数和非线性约束函数。将问题转换为使用的结构
prob2struct
,然后使用外部求解器。有时,你可以迭代逼近非线性整数问题使用
intlinprog
.有关此方法的示例,请参见混合整数二次规划投资组合优化:基于问题.
当您使用外部求解器并调用prob2struct
,您可能需要指定解算器
名称-值参数。
请注意
对于有整数约束的非线性问题,如果没有全局优化工具箱许可证,您必须包括解算器
论点。
即使你有一个全局优化工具箱许可证,您仍然可能需要指定解算器
名称-值参数。外部求解器可以期望问题结构采用与特定求解器相对应的形式。例如,对于一个具有线性和整数约束以及二次目标函数的问题,外部求解器可能要求将目标函数表示为矩阵H而且f在表达½xTHx+fTx.要获得这些矩阵,请指定“quadprog”
方法求解解算器
名称-值参数。
问题= prob2struct(概率,“规划求解”,“quadprog”);
如果不指定quadprog
求解器,得到的问题结构可以包含目标函数的函数句柄,而不是矩阵。的整数变量intcon
字段。
请注意
对于具有整数约束的非线性问题,当指定不处理整数约束的求解器时,prob2struct
发出一个警告,说明求解器无法求解结果结构。如果您试图通过调用问题结构上的求解器来解决问题,求解器将忽略整数约束。在这种情况下,解不是原始问题的解,而是没有整数约束的问题的解。
另请参阅
prob2struct
|解决
|遗传算法
(全局优化工具箱)|surrogateopt
(全局优化工具箱)