我在R中使用GA包(使用遗传算法进行优化的R包),需要优化适应度函数F( x1,x2,A_dataframe,b_const),其中x1-用于优化的变量,min=0,max=1。x2 -用于优化的变量,min=2,max=3。A_dataframe -一个数据帧,它不是优化变量,而是适应度函数计算所需的已知数据帧。b_const -一个常量变量,它也不是用于优化的,但已知是适应度函数计算所需的变量。所以健身function=F。
我尝试使用下一段代码。
TotalFunction <- function(A_dataframe, b_const) {
F <- function(x1, x2, A_dataframe, b_const) {
#code of fitness function
}
GA <- ga(type="real-valued", fitness=function(x) F(x[1], x[2], A_dataframe, b_const),
A_dataframe, b_const, min=c(0, 2), max=(1, 3), popSize=50, maxiter=100)
return(GA)
} 你能帮我创建正确的ga-function吗?可以通过ga函数将已知数据帧传递到适应度函数中吗?非常感谢。
发布于 2017-08-28 22:25:47
我建议将您的适应性函数移到TotalFunction之外,以提高可读性并避免名称冲突/混淆。
F <- function( x1, x2, A_dataframe, b_const ) {
#code of fitness function
}根据上面的F定义,您可以使用预先指定的A_dataframe和b_const值调用ga函数,如下所示:
## A <- ... define your data frame
## B <- ... define your constant
result <- ga(type="real-valued", fitness=function(x) F(x[1], x[2], A, b),
min=c(0, 2), max=(1, 3), popSize=50, maxiter=100)这将使用参数A_dataframe和b_const的预定义值正确地利用您的适应度函数F。要使其动态依赖于A和B,我们可以将其封装到一个函数中:
ga_Ab <- function( A, b )
{
ga(type="real-valued", fitness=function(x) F(x[1], x[2], A, b),
min=c(0, 2), max=(1, 3), popSize=50, maxiter=100)
}https://stackoverflow.com/questions/45920796
复制相似问题