Closed mattijsstam closed 1 year ago
Braindump met @TAVMWB
Stel 4 casussen, iedere run op 1 minuut. 14 cores beschikbaar voor runs (AL). Stel je neemt 14 uur (de nacht tussen twee werkdagen) dan heb je 3.5 uur per casus en kan je grofweg 1.7k parameters nemen. Doe je er maar twee per nacht dan heb je het dubbele aantal parameters beschikbaar (3.4k), wat representatief is voor 5 sliders in stapjes van 5 verdeeld.
Stel 1 casus per nacht, 11.7k mogelijke runs dan krijg je 1 slider van 5 opties erbij.
Dit schaalt dus niet heel lekker. Mogelijk moeten we dan een trucje doen om de dimensionality te doorbreken zoals PCE of uberhaupt surrogate modelling.
Dedicated server (engine.holontool) upscalen naar de AMD Ryzen™ 9 7950X3D, 20% hogere threadscore.
Scenario runner
Cache (vrij basic) memoization
Cache invalidatie
Logging
Aanvulling op (5.) ipv een scenario hashen op de interactieve elementen en hun waardes, kunnen we ook altijd de interactieve elementen toepassen op het geclonede scenario, en dan de cache indexen op een hash van de scenario json die anylogic ingaat. Het nadeel hier van is dat je de rekentijd van de interactieve elementen toepassen altijd krijgt, maar het voordeel is dat het indexeren en opzoeken van cache records simpeler wordt.
EDIT: minder makkelijk dan het lijkt, omdat door het clonen van scenarios de id's constant veranderen
Verder kan het aantal combinaties van configuraties verminderd worden als we het alleen genereren op een per-sectie basis ipv op een pagina niveau
Tasks:
Cache example: https://testdriven.io/blog/django-low-level-cache/
For slider discretization: Given a number of steps in the slider, calculate interval size. Special case: if nothing is filled in or 0, ignore interval altogether (go for continuous range)
Frontend is completed:
Because input type range can't handle fractions such as 1/3, I needed to refactor the ImageSlider a bit: It keeps track of two values:
Pleas keep in mind: if you use a config with steps, make sure the defaultvalue is one the values is the steps, otherwise, the result looks like the screenshot below (used with config 2, with default value 50)
Config 1
Config 2