Hallo,
das ist mein früher Entwurf eines Autorouters:
https://github.com/TheTesla/z3route/blob/master/routehvd.ipynb
Später soll er noch die automatische Platzierung der Bauelemte übernehmen, und zwar Place&Route als integriertes Problem. Auch gleiche Bauelemente im selben Gehäuse soll er später automatisch zuordnen, z. B. wenn 4 OPVs in einem 14-PIN-IC sind.
Momentan ist er noch etwas langsam. Vielleicht schreibe ich einmal einen Solver, der das SMT-Problem zunächst in ein SAT-Problem umwandelt (wie in der Anfangszeit der SMT-Solver) und dann mit einem Patternmatching-Ansatz evtl. auch mit Neuronalen Netzen die CNF analysiert und günstige Literale rät.
Welche Möglichkeiten gibt es sonst noch den z3 etwas zu beschleunigen? Oder soll ich auf einen anderen Solver zurückgreifen? (Parafrost?) Kann ich den als Backend für z3 verwenden, damit ich nichts am Code ändern muss?