首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将非优化参数传递给GA包中的适应度函数

如何将非优化参数传递给GA包中的适应度函数
EN

Stack Overflow用户
提问于 2017-08-28 21:58:20
回答 1查看 599关注 0票数 4

我在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。

我尝试使用下一段代码。

代码语言:javascript
复制
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函数将已知数据帧传递到适应度函数中吗?非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-28 22:25:47

我建议将您的适应性函数移到TotalFunction之外,以提高可读性并避免名称冲突/混淆。

代码语言:javascript
复制
F <- function( x1, x2, A_dataframe, b_const ) {
    #code of fitness function
}

根据上面的F定义,您可以使用预先指定的A_dataframeb_const值调用ga函数,如下所示:

代码语言:javascript
复制
## 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_dataframeb_const的预定义值正确地利用您的适应度函数F。要使其动态依赖于AB,我们可以将其封装到一个函数中:

代码语言:javascript
复制
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)
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45920796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档