我有一个函数需要最大化,它包含3个参数,其中一个是整数。
如何让optim函数知道最大化(而不是默认的最小化(。我如何让它知道一个整数中的一个参数?
如果其中一个参数是二进制或分类的,它会起作用吗?
最大值与最小值比较容易(在control
参数中设置fnscale=-1
(。
整数参数并不容易。这类问题被称为混合整数规划问题,大多数可用的方法只处理线性或二次混合问题。从优化任务视图:
MIP(混合整数编程及其变体MILP用于LP,MIQP用于QP,90C11(:glpkAPI、lpSolve、lpSolveAPI、Rcplex、Rglpk、Rmosek、Rsymphony
(我不太熟悉这些方法。(
在optim
中实现的大多数方法都假设了连续的参数空间。(method="SANN"
会起作用,因为你可以给它明确的更新规则-参见示例-但要让它有效工作很难。(优化任务视图中列出的大多数优化器都是用于连续优化的-全局/随机部分为混合离散/连续问题提供了最多的选项。
如果看似合理的整数范围相当小,您可以使用暴力(即,对固定整数值范围中的每个整数值的两个连续参数进行优化(;您也可以在整数上使用平分搜索。