← Pandrosion 601 product and purchase
Comparaisons appariées, même tolérance 1e-8, mêmes options et budgets, ordre alterné, BLAS limité à un fil. Les données détaillées incluent chaque durée, résidu, statut et compte d’évaluations. Les performances dépendent du matériel et du coût des callbacks.
Campagne principale
Graines 60120261101 (développement) et 60120261102 (réservée après fixation du code). Par graine : 560 problèmes locaux et 600 étapes de suivi, cinq répétitions. Soit **2 320 instances/étapes, 11 600 résolutions par méthode**. Les six variantes obtiennent toutes 11 600 racines sur 11 600 dans cette campagne. Le score résiduel utilise le modèle 600 pour les deux versions.
Chaque version utilise sa propre implémentation de cinématique pour ce test : les gains incluent donc le solveur et les modèles. En suivi, le workspace public RobotSolver est utilisé avec la solution précédente propre à chaque méthode. Les configurations génériques de cette campagne sont sans bornes finies, avec poids et échelles unitaires.
| Méthode | Temps local total | Médiane locale | p95 local | Temps suivi total | Médiane suivi | p95 suivi |
| 600_fused | 1.803 s | 217.2 µs | 888.6 µs | 1.118 s | 112.2 µs | 367.4 µs |
| 601_fused | 1.079 s | 173.4 µs | 431.9 µs | 0.758 s | 96.3 µs | 208.7 µs |
| 600_analytic | 1.880 s | 252.5 µs | 781.7 µs | 0.976 s | 112.8 µs | 336.2 µs |
| 601_analytic | 1.341 s | 202.6 µs | 493.2 µs | 0.753 s | 98.2 µs | 216.8 µs |
| 600_fd | 2.267 s | 296.3 µs | 1019.8 µs | 1.137 s | 123.2 µs | 458.2 µs |
| 601_fd | 1.841 s | 249.3 µs | 721.1 µs | 0.910 s | 109.7 µs | 333.7 µs |
Réduction de temps total face à 600
| Campagne | Variante | Résolution locale | Suivi | Racines 601 |
| benchmark_development | fused | 40.2 % | 32.1 % | 5800/5800 |
| benchmark_development | analytic | 28.7 % | 22.6 % | 5800/5800 |
| benchmark_development | fd | 18.8 % | 19.9 % | 5800/5800 |
| benchmark_holdout | fused | 40.1 % | 32.3 % | 5800/5800 |
| benchmark_holdout | analytic | 28.6 % | 23.1 % | 5800/5800 |
| benchmark_holdout | fd | 18.8 % | 20.0 % | 5800/5800 |
| benchmark_bounded | fused | 36.1 % | 26.6 % | 3471/3480 |
| benchmark_bounded | analytic | 21.7 % | 17.9 % | 3480/3480 |
| benchmark_bounded | fd | 13.5 % | 14.6 % | 3480/3480 |
| benchmark_shared | fused | 7.9 % | 8.0 % | 3480/3480 |
| benchmark_shared | analytic | 10.6 % | 9.0 % | 3480/3480 |
| benchmark_shared | fd | 10.3 % | 7.3 % | 3480/3480 |
Les valeurs sont des réductions de temps, pas des multiplicateurs de vitesse. Aucun meilleur run isolé n’est sélectionné. Un gain total important peut coexister avec un gain médian plus petit lorsque les familles coûteuses sont davantage accélérées.
Détail principal par famille, variante fusionnée
| Famille | Racines 600 / 601 | Temps 600 | Temps 601 | Réduction |
| implicit12 | 800 / 800 | 0.058 s | 0.057 s | 1.4 % |
| mixed_RPRP | 800 / 800 | 0.214 s | 0.154 s | 27.9 % |
| planar2 | 800 / 800 | 0.153 s | 0.124 s | 18.8 % |
| planar7 | 800 / 800 | 0.170 s | 0.137 s | 19.6 % |
| planar7_tracking | 2000 / 2000 | 0.201 s | 0.175 s | 12.5 % |
| range3d | 800 / 800 | 0.109 s | 0.090 s | 17.2 % |
| range3d_tracking | 2000 / 2000 | 0.205 s | 0.178 s | 13.1 % |
| spatial6_pose | 800 / 800 | 0.666 s | 0.326 s | 51.0 % |
| spatial6_tracking | 2000 / 2000 | 0.712 s | 0.404 s | 43.3 % |
| spatial7_position | 800 / 800 | 0.433 s | 0.190 s | 56.1 % |
Le gain est surtout marqué sur la cinématique spatiale. La dynamique implicite, qui utilise un callback matriciel commun, bénéficie peu de ces optimisations géométriques.
Contrôles complémentaires
La campagne bornée (graine 60120261103, trois répétitions) impose [-2.5, 2.5] à chaque variable des deux versions. Les variantes fusionnées obtiennent **3 471/3 480 racines**, avec les mêmes trois cas spatiaux non résolus dans la limite de Jacobiennes pour 600 et 601, répétés trois fois. Les variantes avec Jacobienne séparée ou différences finies obtiennent 3 480/3 480. Il n’y a aucune perte de solution par rapport à 600. Le calcul fusionné consomme une Jacobienne pour chaque essai, y compris rejeté : dans certains cas bornés, une Jacobienne séparée préserve mieux ce budget.
La campagne de callbacks communs (graine 60120261104, trois répétitions) fournit exclusivement les callbacks 600 aux deux solveurs. Elle isole les modifications du solveur de l’amélioration des modèles. Les six variantes obtiennent 3 480/3 480 racines.
Les limites actives, poids et échelles non unitaires, coordonnées fixes, vitesses nulles, budgets et délais sont également couverts par les tests fonctionnels ; les comparaisons temporelles ne constituent pas des garanties pour toutes leurs combinaisons.
Environnement et protocole
Python 3.14.3, NumPy 2.4.4, macOS arm64. Les imports, la création des cas et l’échauffement sont hors chronométrage. Les appels sont mesurés avec perf_counter, avec ordre inversé en alternance entre cas et répétitions. Aucune modification d’options ou de tolérance n’a été faite après consultation du jeu réservé.
Les Jacobiennes géométriques nouvelles sont testées bit à bit contre 600 sur 72 chaînes spatiales aléatoires, y compris articulations prismatiques et outil décalé. Les optimisations de disposition mémoire du solveur peuvent modifier les arrondis intermédiaires ; l’identité de toutes les trajectoires flottantes n’est pas revendiquée.
Il s’agit de modèles synthétiques avec initialisations locales et suivi continu. Ces mesures ne comprennent pas capteurs, transport, collisions, commande des actionneurs ou supervision. Aucun robot physique n’est testé et aucune garantie de temps réel dur n’est déduite des latences mesurées.