758 collectifs

NomAds

A propos

On vous aide à faire croitre votre business grâce à la publicité en ligne

Mesh

A propos

Créateur d'expériences digitales

Call to Action - CTA

A propos

Vos projets nous regardent !

Customerz

A propos

Votre partenaire Customer Success

The Phoners

A propos

La tribu d'experts B2B au service de votre prospection commerciale !

O(n) code

A propos

Make it work, make it right, make it fast

Isto

A propos

Votre histoire, du product au motion..

We Are HANABI

A propos

On accélère la transformation des grandes entreprises.

Nakami Strategy

A propos

Il n’y a jamais eu autant de bruit dehors. Faites vous entendre clairement!

Panda Perché 🐼

A propos

Créativité sauvage, stratégie féroce : Bienvenue chez Panda Perché !

Dona & Che

A propos

A deux .. c'est toujours mieux.

GrowthPerf

A propos

La puissance de la tech au service de votre business

Ads for Growth

A propos

Google Ads, Social Ads, Native Ads & LinkedIn Ads🚀

WiredFlow

A propos

Notre maître mot ? La complémentarité ! Du Front-End au Back-End en passant par tous les processus d'intégration continue pour des déploiements instantanés sur vos serveurs, rien ne nous échappe !

Open Product

A propos

Les compétences Produit au service du business

Matilde & Cie

A propos

Rendons la communication digitale accessible à tous

NEIA development

A propos

From strategy to development to communications, in a one-stop-shop

Shinrai

A propos

Plume créative

Optimisation algorithmique en Python

Conception et optimisation d'un algorithme de shape nesting (2D bin packing) pour l'industrie.

Decisive in delivering a high performance and production-ready algorithm in a short time frame.

Sam Karpov portrait

Sam Karpov

CEO chez Any-cut.pro


Le shape nesting est un problème d'optimisation combinatoire complexe que l'on retrouve couramment dans l'industrie manufacturière. Cela consiste à trouver l'agencement optimal de formes 2D quelconques lors d'usinage, pour rentabiliser chaque centimètre carré de matière brute.

L'espace des solutions possibles est souvent trop grand pour être explorer en un temps raisonnable. La rapidité de l'algorithme et du code ainsi que la stratégie d'exploration sont donc deux critères essentiels de réussite.

Réalisations :

  • développement d'un algorithme comparable aux solutions commerciales disponibles

  • Optimisation du code d'un facteur 100 entre la première itération et la dernière. Aujourd'hui des étapes aussi simple qu'une condition "if x > n" ont un impact significatif sur la vitesse d'exécution

Optimisations mises en place avec succès :

  • caching de résultats intermédiaires

  • utilisation d'integer plutôt que de float (+ rapide, + stable numériquement)

  • utilisation de librairies externes uniquement codées en C et réputées stables et rapides

  • profiling du code ligne à ligne

  • refactoring permanent pour garder le code minimal et éviter les opérations superflues et/ou redondantes.

  • emploi des types et fonctions built-in pour éviter des conversions vers et depuis des types de données externes

  • comparaison de plusieurs approches, notamment pour la stratégie d'exploration (Algo génétique, heuristiques, Monte carlo tree search, ...)