R 遗传算法包中如何将非优化参数传递到适应度函数
我在R中使用GA包(使用遗传算法进行优化的R包),需要优化适应度函数F(x1,x2,A_数据帧,b_常数),其中 x1-优化变量,最小值=0,最大值=1。 x2-优化变量,最小值=2,最大值=3。 A_数据帧-不是优化变量的数据帧,但适应度函数计算所需的已知数据帧。 b_const-一个常数变量,也不是用于优化,而是适应度函数计算所需的已知变量。 所以适应度函数=F 我尝试使用下一个代码R 遗传算法包中如何将非优化参数传递到适应度函数,r,R,我在R中使用GA包(使用遗传算法进行优化的R包),需要优化适应度函数F(x1,x2,A_数据帧,b_常数),其中 x1-优化变量,最小值=0,最大值=1。 x2-优化变量,最小值=2,最大值=3。 A_数据帧-不是优化变量的数据帧,但适应度函数计算所需的已知数据帧。 b_const-一个常数变量,也不是用于优化,而是适应度函数计算所需的已知变量。 所以适应度函数=F 我尝试使用下一个代码 TotalFunction <- function(A_dataframe, b_const) {
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)
}
TotalFunction我建议将您的健身功能移到TotalFunction
之外,以提高可读性并避免名称冲突/混淆
F <- function( x1, x2, A_dataframe, b_const ) {
#code of fitness function
}
这将使用参数的预定义值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)
}
ga_Ab澄清:您希望TotalFunction
返回ga
的结果,还是调用ga
的函数?Artem,非常感谢(spasibo)。我的错误是在定义函数后重复了预定义变量的名称。我应该使用结果
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)
}