首页 > 解决方案 > x[i, j] 中的错误:维数不正确:使用 R(GA 包)中的遗传算法的传输问题

问题描述

我收到以下错误:

x[i, j] 中的错误:维数不正确

在执行以下代码时:

library(GA)
library(readxl)

path <- "GAMS data & 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 & g2 >= 0 & 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) 

我正在尝试使用 R 的 GA 包解决以下问题:

这是我的数据的样子。

在此处输入图像描述

标签: rreadxl

解决方案


推荐阅读