Régression de spline en utilisant un algorithme génétique couplé à la méthode des moindres carrés (vba excel)

Description

J'avais besoin d'un procédé (quasi)reproductible/automatique et simple
pour lisser des données bruitées et réussir à en extraire certains paramètres.

Une régression polynomiale classique n'est pas envisageable car la répartition des données brute n'est pas si simple,
d'autant plus que les résultats devaient être contraints dans un intervalle donné...

D'où le choix des splines...!
Ce programme vous offre la possibilité de contrôler jusqu'à 10 noeuds de spline à la souris (position XY + dérivée).
Il est également possible de définir des contraintes, et de déterminer automatiquement les meilleurs paramètres grâce à la méthode des moindres carrés.

Pour simplifier l'utilisation, une barre d'outils personnalisée permet d'accéder aux différentes fonctionnalités offertes par le programme.
Vous pourrez ainsi travailler sur la spline ou sur les masses de chacun de vos points expérimentaux.

Pour contrôler la position d'un noeud :
- passez en mode "spline"
- sélectionnez le noeud désiré
- appuyez sur CTRL : le noeud se déplace sous votre pointeur et la spline se redessine en temps réel
- appuyez sur MAJ : vous contrôlez la dérivée

Source / Exemple :


Vous trouverez les sources dans le fichier joint.
J'ai essayé d'éclaircir au maximum et de commenter les sources.

Voici les principaux thèmes abordés :

Spline cubique,
Opération sur des matrices 4x4,
Stockage de matrices sous forme profil,
Décomposition LU pour la résolution de grands systèmes linéaires,
Boite à outils dynamique,
Récupération des coordonnées de la souris sur un graphique,
Algorithme génétique,
Recuit simulé.

Conclusion :


C'est la version définitive.
Il existe encore quelques configurations où le programme galère un peu mais ça marche dans la plupart des cas.

Merci pour vos commentaires.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.