R中的错误:as.numeric(xij)中的错误

时间:2018-08-17 05:27:55

标签: r

我正在学习使用GA,并在R中使用if else函数进行循环,并试图解决我的第一个问题。

但是当我运行这段代码时,会出现类似 Error in as.numeric(xij) : cannot coerce type 'closure' to vector of type 'double' 的错误。有人可以告诉我我做错了什么地方吗?我不知道该怎么办。我也编辑了几次编码,但仍然没有获得正确的编码。非常感谢你们!

attach <- data1
schedule <- as.matrix(data1)
schedule

Jobj Processing_time_Jobj Due_date_Jobj Weighted_Jobj
[1,]    1                   25            61             3
[2,]    2                    7           102             7
[3,]    3                   42            86             1
[4,]    4                   36            44             3
[5,]    5                   18           150             1
[6,]    6                   29           134             4

fitness <- function(j){
for(j in Job){
xij <- function (i,j) if(i==j) 1 else 0
y <- as.numeric(xij)
Cj <- sum((Processing_time_Jobj[j]*xij)+c[j-1])
Lj <- sum((Weighted_Jobj[j]*xij)+(cj[j]-Due_date_Jobj[j]))
}}
GA <- ga(type = "permutation", fitness = fitness, lower = 1, upper = 500)
  

as.numeric(xij)中的错误:无法将类型'closure'强制转换为   输入“ double”

2 个答案:

答案 0 :(得分:0)

xij已定义为两个参数的函数

xij <- function (i,j) if(i==j) 1 else 0

下一条语句

y <- as.numeric(xij)

正在导致错误消息。

xij需要使用一些参数来调用,例如

as.numeric(xij(2,3))
[1] 0

答案 1 :(得分:0)

如果打印出logger.debug(...),则会看到它是一个函数,而不是数字。

您应将此行替换为

xij

并摆脱xij <- ifelse(i==j, 1, 0) 变量