perf+fix: rutetjek gemmes 30 s (hak hvert 5. s); kilde der gav lidt hviler 3 min (æg-vognen til samme hønsehus 3x) (v1.27.3.0)
In-game 26/9: hak ca. hvert 5. s efter 1.27.2 = holdende vognes genplanlægning (ADOutbound/ADLoadSwap hvert 5 s) med AD-stifinding + reserve-BFS gennem 13.550 waypoints pr. kandidat. Rutesvar caches pr. mål og 10 m- område i 30 s (max 2000 poster); langsomme rutetjek logges. Æg: 'ingen mere last' markerer nu kilden som hvilende 3 min, så runden roterer mellem hønsehusene.
This commit is contained in:
@@ -345,6 +345,26 @@ check("O13 WARN", lastLog("intet at læsse") ~= nil, true)
|
||||
local choice13b = ADOutbound.choosePickup(adEnv, v13)
|
||||
check("O13 næste plan udelukker den tomme kilde", choice13b.markerIndex, mSugar.markerIndex)
|
||||
|
||||
-- O16: kilden gav LIDT og så intet mere ("ingen mere last") -> kilden hviler, næste tur tager en anden
|
||||
-- (in-game 26/9: æg-vognen kørte til Æg Pickup 4 tre gange i træk; én palle inden for rækkevidde, resten udenfor)
|
||||
local v16 = newVehicle("Thin", 0, 0, 20000)
|
||||
runs[v16] = outboundRun(16, {1, 2}, {{fillType = "SUGAR", policy = "sell"}}, {collectRound = false})
|
||||
ADOutbound.resetEmptySources()
|
||||
local choice16 = ADOutbound.choosePickup(adEnv, v16)
|
||||
local first16 = choice16.markerIndex
|
||||
local task16 = newTask(v16, choice16.markerIndex == mSilo.markerIndex and 2 or 1)
|
||||
v16.atTarget = true
|
||||
v16.trailers.level = 500
|
||||
ADOutbound.beforeLoadUpdate(adEnv, task16, 100)
|
||||
ADOutbound.beforeLoadUpdate(adEnv, task16, 16000)
|
||||
check("O16 kører med det den fik", task16.finishedCalls, 1)
|
||||
check("O16 log", lastLog("ingen mere last") ~= nil, true)
|
||||
v16.trailers.level = 0
|
||||
local choice16b = ADOutbound.choosePickup(adEnv, v16)
|
||||
check("O16 næste tur tager en anden kilde", choice16b ~= nil and choice16b.markerIndex ~= first16, true)
|
||||
ADOutbound.resetEmptySources() -- (senere tests forventer alle kilder ledige)
|
||||
|
||||
|
||||
-- O14 (I6): rutetjek kun for salgssteder over tærsklen, bedste først, stop ved første nåelige
|
||||
local routeChecks = 0
|
||||
local originalGetPathTo = adEnv.ADGraphManager.getPathTo
|
||||
@@ -613,5 +633,6 @@ do
|
||||
ADLoadSwap.findDumpMarker = dumpBefore
|
||||
end
|
||||
|
||||
|
||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||
os.exit(failures == 0 and 0 or 1)
|
||||
|
||||
@@ -107,5 +107,35 @@ do
|
||||
unreachable[903], unreachable[904] = nil, nil
|
||||
end
|
||||
|
||||
-- RC: rutesvar gemmes 30 s pr. mål og 10 m-område (holdende vogne spurgte hvert 5. s -> hak hvert 5. s)
|
||||
do
|
||||
local pathCalls = 0
|
||||
local realGetPathTo = adEnv.ADGraphManager.getPathTo
|
||||
adEnv.ADGraphManager.getPathTo = function(self, vehicle, id) pathCalls = pathCalls + 1; return realGetPathTo(self, vehicle, id) end
|
||||
local clock = 0
|
||||
netGetTime = function() return clock end
|
||||
local positions = {[500] = {100, 100}}
|
||||
getWorldTranslation = function(node) local p = positions[node]; return p[1], 0, p[2] end
|
||||
local parked = {rootNode = 500, getClosestWayPoint = function() return 901, 1 end}
|
||||
ADWaitPool.hasRouteTo(adEnv, parked, 10)
|
||||
ADWaitPool.hasRouteTo(adEnv, parked, 10)
|
||||
check("RC samme svar genbruges", pathCalls, 1)
|
||||
positions[500] = {104, 103}
|
||||
ADWaitPool.hasRouteTo(adEnv, parked, 10)
|
||||
check("RC samme 10 m-område genbruges", pathCalls, 1)
|
||||
positions[500] = {160, 100}
|
||||
ADWaitPool.hasRouteTo(adEnv, parked, 10)
|
||||
check("RC nyt sted -> nyt svar", pathCalls, 2)
|
||||
clock = 31000
|
||||
ADWaitPool.hasRouteTo(adEnv, parked, 10)
|
||||
check("RC efter 30 s -> nyt svar", pathCalls, 3)
|
||||
local first = ADWaitPool.hasRouteTo(adEnv, parked, 11)
|
||||
check("RC andet mål -> nyt svar", pathCalls, 4)
|
||||
check("RC samme svar igen", ADWaitPool.hasRouteTo(adEnv, parked, 11), first)
|
||||
check("RC uden nyt kald", pathCalls, 4)
|
||||
adEnv.ADGraphManager.getPathTo = realGetPathTo
|
||||
netGetTime = nil
|
||||
end
|
||||
|
||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||
os.exit(failures == 0 and 0 or 1)
|
||||
|
||||
Reference in New Issue
Block a user