#r #readxl
#r #readxl
Вопрос:
Я получаю следующую ошибку :
Ошибка в x [i, j]: неверное количество измерений
при выполнении следующего кода :
library(GA)
library(readxl)
path <- "GAMS data amp; solution.xlsx"
c <- read_excel(path,range = "C3:G7",col_names = F)
f <- read_excel(path,range = "C10:G10",col_names = F)
d <- read_excel(path,range = "C13:G13",col_names = F)
cap <- read_excel(path,range = "C16:G16",col_names = F)
rows <- nrow(c)
cols <- ncol(c)[enter image description here][1]
val2 <-0
val1 <-0
fitness <- function(m){
x<-m[1]
y<-m[2]
# define fitness function
for(i in 1:rows){
for(j in 1:cols){
val <- c[i,j]*x[i,j]
val1 <- val1 val
}
}
for(i in 1:rows){
val0 <- f[i]*y[i]
val2 <- val2 val0
}
fitness_value <- val1 val2
#define constraint
g1 <- x
for(j in 1:cols){
for(i in 1:rows){
sum1 <- x[i,j]
sum2 <- sum2 sum1
}
gtemp <- sum2-d[j]
g2 <- append(g2,gtemp)
}
for(i in 1:rows){
for(j in 1:cols){
sum0 <- x[i,j]
sum3 <- sum3 sum0
}
gtemp1 <- sum3-cap[i]*y[i]
g3 <- append(g3,gtemp)
}
#penalized constraint violation
fitness_value <- ifelse( g1 >= 0 amp; g2 >= 0 amp; g3 <= 0 , fitness_value, fitness_value 1e5 )
return(-fitness_value)
}
ga(type = "real-valued", fitness,lower = c(0,0),upper = c(10000, 1),maxiter = 1000, popSize = 100, monitor = F)
Я пытаюсь решить следующую проблему, используя пакет GA из R:
Вот как выглядят мои данные.
Комментарии:
1. В приведенном выше коде у вас есть
sum2 <- sum2 sum1
, но нет начального значения дляsum2
. То же самое дляsum3
.2. да … забыл инициализировать sum2 и sum3 вне функции, где инициализируются val1 и val2. Даже после этого исправления я все равно получаю ошибку.