По какой-то причине Lua говорит мне, что эта строка делает ошибку:Lua Таблица равна нулю
for i=1, #set do
Где множество является 2-мерная таблицы параметров функции я сделал. Это дает мне ошибку:
Attempt to get length of a nil value (local set)
Странная вещь, что я бегу эту функцию более чем в 1000 раз, но ошибка появляется только один раз. Я не совсем уверен, почему. Любая помощь будет оценена по достоинству. А также я могу печатать значения из набора, и они появятся, я думаю, что это возможная ошибка.
Edit: это функция: (или важная часть его)
function GeneticTrainer:evaluate(id,correct,set)
local returny=0
local net=self.Networks[id]
for i=1, #set do
-- print(i..k[i])
net:Update(set[i])
local error= math.abs(correct[i]-net.output[1])
returny = returny + (1-(error/10))
end
И это, где я это называю:
function GeneticTrainer:Evolve(Problem,Set)
local A=math.random(1,self.Population)
local B=math.random(1,self.Population)
if A==B then
B=math.random(1,self.Population)
end
local AFitness = self:evaluate(A,Problem,Set)
local BFitness = self:evaluate(B,Problem,Set)
И это где я называю это:
BinarySet={{0,0},{1,0},{0,1},{1,1}}
for i=1, iterations do GATrainer:Evolve(Target,BinarySet) end
По-видимому, 'set' был' nil'. Невозможно узнать, почему это произошло, если вы не публикуете соответствующий код, желательно как [MCVE]. – interjay
Ваш 'net: Update' модифицирует' set' в любом случае или изменяет количество элементов, пока он все еще выполняет итерацию через цикл? – greatwolf