feat(foder): parallelt foder (høns: korn 80 %/roesnitter 20 %) — gruppeandele af truget, ingen 'bedste foder først'-spærring (v1.19.7.0)

This commit is contained in:
2026-09-24 21:39:13 +02:00
parent a4c3d6fb91
commit e785439605
7 changed files with 96 additions and 3 deletions
+22
View File
@@ -323,3 +323,25 @@ function ADSupplyPlanner.findTriggerNodes(root, maxDepth)
visit(root, 0)
return nodes
end
-- Parallelt foder (animalFood consumptionType PARALLEL, fx høns): dyrene spiser fra alle grupper samtidig,
-- så hver gruppe skal have sin andel af truget efter eatWeight. Returnerer gruppens niveau og kapacitet
-- (trugets kapacitet × gruppens andel) for gruppen der indeholder fillType; nil hvis varen ikke er foder.
function ADSupplyPlanner.parallelFoodShare(groups, fillLevels, capacity, fillType)
local totalWeight = 0
for _, group in ipairs(groups or {}) do totalWeight = totalWeight + (tonumber(group.eatWeight) or 0) end
if totalWeight <= 0 then return nil end
for _, group in ipairs(groups or {}) do
local isMember = false
for _, member in pairs(group.fillTypes or {}) do
if member == fillType then isMember = true end
end
if isMember then
local level = 0
for _, member in pairs(group.fillTypes or {}) do level = level + ((fillLevels or {})[member] or 0) end
return level, (capacity or 0) * (tonumber(group.eatWeight) or 0) / totalWeight
end
end
return nil
end