Un algorithme d'apprentissage en profondeur pour optimiser le résultat

10

Je suis assez nouveau dans l'apprentissage en profondeur, mais je pense avoir trouvé la bonne situation dans le monde réel pour commencer à l'utiliser. Le problème est que je n'ai utilisé que de tels algorithmes pour prédire les résultats. Pour mon nouveau projet, j'ai besoin d'informations pour alimenter une machine afin d' optimiser les résultats. Quelqu'un pourrait-il expliquer brièvement comment je dois procéder? Je suis coincé.

Voici la situation:

J'ai une machine qui prend des planches de bois avec différentes qualités de bois disponibles sur toute sa longueur et doit le couper en blocs fournis dans une liste de coupe. Cette machine choisira toujours le score le plus élevé qu'elle peut obtenir d'une planche donnée. Le score est obtenu en multipliant l' aire de chaque bloc par son multiplicateur . L'algorithme que je veux construire doit donner à cette machine un multiplicateur pour chaque bloc répertorié dans une liste de coupe. Toutes les sorties physiques de cette machine seront stockées sur des étagères par un robot jusqu'à ce qu'elles soient nécessaires. La machine de découpe est autorisée à déclasser des parties d'une planche si elle l'aide à atteindre un score plus élevé.

La valeur doit inciter la machine à me donner le bloc dont j'ai le plus besoin sans déclasser trop de bois.

OBJECTIFS D'OPTIMISATION

  • Assurez-vous que chaque bloc est en stock au moment où il est nécessaire, mais pas trop tôt sans raison
  • Rétrograder le moins de bois possible (certaines espèces sont très chères)

NOEUDS D'ENTRÉE

  • Délai avant que ce bloc ne soit nécessaire
  • Qualité du bois pour ce bloc
  • Montant de ce bloc nécessaire
  • Zone du bloc (peut-être?)

RÉTROACTION FOURNIE À L'ALGORITHME

  • Temps à l'avance pour que le bloc soit prêt (doit être le plus bas possible)
  • Surface de bois déclassée * nombre de grades sautés

DONNÉES DE RETOUR ATTENDUES

  • Un multiplicateur qui donnera à ce bloc une priorité optimale par rapport aux autres

INFORMATIONS QUE JE N'AI PAS MAIS POURRAIENT RECUEILLIR

  • Rapport moyen de chaque grade pour chaque essence de bois

Ce que j'ai compris jusqu'à présent, c'est que j'ai peut-être besoin que mes commentaires soient brisés en une seule valeur afin d'en faire le nœud de sortie. Le problème est que je ne comprends pas comment faire cet algorithme pour déterminer un multiplicateur . Ai-je tort d'essayer de résoudre ce problème par l'apprentissage profond?

Frank Malenfant
la source
C'est une question vraiment intéressante! Bienvenue sur AI.
DukeZhou
J'ai pris la liberté de modifier la question pour plus de clarté. Vous ne savez pas quoi faire avec: "Valeur par cm² qui donnera à ce bloc une priorité optimale par rapport aux autres" Voulez-vous dire donner à un bloc une valeur optimale par rapport à sa priorité par rapport aux autres blocs?
DukeZhou
@DukeZhou L'algorithme de la machine multiplie la valeur que j'essaie d'optimiser par la surface 2D totale du bloc (largeur x longueur) afin de créer un "score" et de couper chaque planche pour obtenir le score maximum. Si j'assigne la zone du bloc dans l'algorithme, je pourrais alors déterminer le score et ensuite le diviser par la zone. Dans l'ensemble, l'objectif principal est de s'assurer que le score le plus élevé correspond au besoin le plus élevé afin que l'objectif de la machine soit le même que le nôtre.
Frank Malenfant
@DukeZhou Désolé si ce n'est pas aussi clair que possible, l'anglais est ma deuxième langue.
Frank Malenfant
1
@DukeZhou Ici. Je l'ai remplacé par le terme multiplicateur et ai donné quelques informations supplémentaires sur son utilisation.
Frank Malenfant

Réponses:

2

Les modèles d'apprentissage profond pour les tâches de régression sont assez difficiles à former, donc je suggère de ne pas commencer par eux. Au lieu de cela, je commencerais par l'une des approches ci-dessous et j'essaierais peut-être ensuite d'utiliser l'apprentissage en profondeur.

Une approche classique du problème pourrait être d'analyser votre logiciel d'optimisation et cela vous conduirait probablement à un algorithme déterministe.

Différentes approches peuvent consister à traiter votre logiciel d'optimisation comme une boîte noire - donnez-lui une grande variété d'entrées, notez les variables qui vous intéressent (temps d'exécution, résultats de coupe, etc.) et essayez de lui attribuer un tri ou un régresseur. .

Une option consiste à suivre l'idée de Kourosh et à la formuler comme un problème d'optimisation classique.

Si vous préférez utiliser des outils d'apprentissage automatique, je vous suggère de commencer avec un modèle simple comme la régression linéaire juste pour vérifier qu'il y a un signal dans les données que vous pouvez utiliser. Ensuite, vous pouvez regarder des algorithmes plus puissants comme xgboost, des arbres de régression, etc.

gingembre
la source