Вот мой код, и мне интересно, почему появляются предупреждающие сообщения о том, что «количество заменяемых элементов не кратно длине замены»?
library(GA)
library(readxl)
> data1 <-
read_excel("C:/Users/nadiahalim/OneDrive/CS954/Scheduling/data1.xlsx")
> View(data1)
> data1
вывод для data1
# A tibble: 6 x 4
Jobj Pj Dj Wj
<dbl> <dbl> <dbl> <dbl>
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
Я хочу переставить Jobj так, чтобы это дало минимальное время завершения, обозначенное Cj. Циклы for использовались в моем коде следующим образом:
Cj=0
i<- sample(data1$Jobj)
for(i in 1:i){
fitness <-function(j){
for(j in data1$Jobj){
Cj[j] <- data1$Pj[j]+sum(Cj[j-1])
}
print(Cj)
}
fitness()
Вывод для этого кода
numerical expression has 6 elements: only the first used[1] 25 32 74 110 128 157
[1] 25 32 74 110 128 157
[1] 25 32 74 110 128 157
[1] 25 32 74 110 128 157
[1] 25 32 74 110 128 157
Затем я запускаю код GA:
GA <- ga(type = "permutation", fitness = fitness, lower = 1, upper = 6, maxiter= 5, run = 20, optim = TRUE)
вывод для GA следующим образом, а в предупреждении указано, что количество заменяемых элементов не кратно длине замены
number of items to replace is not a multiple of replacement length[1] 25 32 74 110 128 157
number of items to replace is not a multiple of replacement lengthGA | iter = 3 | Mean = 25 | Best = 25
[1] 25 32 74 110 128 157
number of items to replace is not a multiple of replacement length[1] 25 32 74 110 128 157
number of items to replace is not a multiple of replacement length[1] 25 32 74 110 128 157
, тогда я использую вывод
summary(GA)
для сводной GA
-- Genetic Algorithm -------------------
GA settings:
Type = permutation
Population size = 50
Number of generations = 5
Elitism = 2
Crossover probability = 0.8
Mutation probability = 0.1
GA results:
Iterations = 5
Fitness function value = 25
Solutions =
x1 x2 x3 x4 x5 x6
[1,] 4 1 6 3 5 2
[2,] 6 3 1 5 4 2
[3,] 6 2 3 4 1 5
[4,] 3 6 4 1 5 2
[5,] 4 6 2 1 5 3
[6,] 5 3 4 1 2 6
[7,] 2 1 6 3 5 4
[8,] 4 1 6 3 2 5
[9,] 3 6 1 2 5 4
[10,] 3 6 2 1 5 4
...
[35,] 4 5 6 2 1 3
[36,] 3 4 5 6 2 1
Когда я бегу за сводкой (GA), мне кажется, что это работает, но мне любопытно получить предупреждение. Я был бы признателен, если кто-нибудь мог бы помочь мне по этому поводу. Заранее спасибо.