feat: bedste foder først — lavere foder kun når truget er nødlidende (≥75 % fri); forsynings-traktorer uden noget at hente holder ved Wait (v1.14.0.0)
This commit is contained in:
@@ -191,6 +191,7 @@ function ADSupplyPlanner.rankNeeds(needs, loadCapacity)
|
||||
fits = ADSupplyPlanner.fullLoadFits(freeSpace, loadCapacity),
|
||||
score = need.scoreOverride or ADSupplyPlanner.scoreNeed(need.level, need.capacity, freeSpace, minutesToEmpty),
|
||||
priority = need.priority or 0,
|
||||
trough = need.scoreOverride ~= nil,
|
||||
})
|
||||
end
|
||||
end
|
||||
@@ -209,6 +210,27 @@ function ADSupplyPlanner.rankNeeds(needs, loadCapacity)
|
||||
return ranked
|
||||
end
|
||||
|
||||
-- ---- bedste foder først ----
|
||||
-- Foder i et stald-trug deler plads. Lavere foder (ensilage/hø, vægt 0,8) må kun hentes når der er
|
||||
-- bedre foder (TMR, 1,0) på listen, hvis truget er nødlidende: mindst så stor en andel fri.
|
||||
ADSupplyPlanner.EMERGENCY_TROUGH_FREE = 0.75
|
||||
|
||||
-- need.trough = true for foder i et fælles trug; need.score = trugets fri andel; need.priority = fodervægt.
|
||||
function ADSupplyPlanner.bestFoodPriority(needs)
|
||||
local best = nil
|
||||
for _, need in ipairs(needs or {}) do
|
||||
if need.trough and (best == nil or (need.priority or 0) > best) then best = need.priority or 0 end
|
||||
end
|
||||
return best
|
||||
end
|
||||
|
||||
function ADSupplyPlanner.isFoodAllowed(need, bestPriority)
|
||||
if not need.trough or bestPriority == nil or (need.priority or 0) >= bestPriority then
|
||||
return true
|
||||
end
|
||||
return (need.score or 0) >= ADSupplyPlanner.EMERGENCY_TROUGH_FREE
|
||||
end
|
||||
|
||||
-- state: nil eller {ingredients, narrowedTo} fra forrige tur. selected: AD's aktuelle varevalg.
|
||||
-- >1 valgt = (ny) ingrediensliste. Præcis den vare vi selv indsnævrede til = gemt liste.
|
||||
-- Alt andet = brugeren har valgt noget andet -> nil (behovsstyring fra).
|
||||
|
||||
Reference in New Issue
Block a user