我想在数字上最大化R中的表达式。为了保持简单,假设我想要最大化的表达式是
,其中
y(x)= \ int_0 ^ 1 y(x,t)dt
并且我在函数集y上最大化:[0,1] ^ 2 - > {0,1}。
我想在R中以数字方式最大化这个表达式,这就是我认为我会这样做的方式:
由于我想要最大化的函数只取{0,1}中的值,我想到使用一个矩阵取值0/1来近似函数,然后估计该网格上其余的被积函数。这是代码:
Value <- function(grid){
# The argument grid is the matrix taking values 0 or 1
# For now, consider a 10-times-10 matrix
Value <- 2*seq(1/20, 19/20, 1/10) %*% apply(grid, 1, sum)/10
return(Value)
}
我现在如何创建所有0/1矩阵的列表,然后将上述函数应用于所有矩阵,以查看哪个网格,即函数y的近似值达到最大值?或者是否有一种完全不同且更好的方法来进行这种数值优化?
答案 0 :(得分:0)
您的枚举所有可能的2 ^(10 * 10)离散函数的搜索算法非常差。您最好尝试使用Nelder-Mead之类的局部优化来最大化该功能。