Ошибка в x [i, j]: неправильное количество измерений: проблема транспортировки с использованием генетического алгоритма в R (пакет GA)

#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. Даже после этого исправления я все равно получаю ошибку.