La machine de Goldberg dans la vraie vie. L'algorithme d'action est-il compliqué pour un mécanisme complexe?

Attention! Cet article concerne la machine mécanique / électrique de Goldberg et ses algorithmes de fonctionnement.



J'ai commencé à écrire cet article sous forme de notes afin de rationaliser en quelque sorte le processus d'un «brainstorming» long mais intermittent et, par conséquent, l'article sera une sorte de présentation cohérente des idées et des améliorations qui ont été inventées lors de la construction de l'algorithme. De plus, ce n'est que le premier, on peut dire «théorique», faisant partie du cycle de développement général de la machine Goldberg elle-même (un dispositif qui effectue une action simple de manière non triviale), et sera donc poursuivi par les articles suivants.
J'espère que cet article sera intéressant et peut-être utile pour tout le monde. Commençons.

Entrée


Je voudrais commencer par une brève description de la façon dont l'idée est née et pourquoi il est nécessaire d'utiliser la machine Goldberg et, en fait, l'algorithme de son action. Ce n'est qu'une digression lyrique, et par conséquent, elle peut être sautée avec la transition suivante immédiatement vers la section «Début du développement».

Journée d'hiver de novembre à la Faculté de physique de KNU. Taras Shevchenko, un ami et moi avons décidé "pourquoi ne faisons-nous pas quelque chose d’utile nous-mêmes? Nous sommes des physiciens, ce n'est pas un problème pour nous de trouver quelque chose d'incroyablement cool et de le faire. Seulement deux jours et vous avez terminé. " Le reste de cette théorie de groupe a été consacré à essayer de comprendre ce que nous ferions.

«Citant les grands», nous pouvons dire: «De là, évidemment, il s'ensuit ...» que tout n'est pas si simple même avec la définition de ce que nous voulons faire. Finalement, la réponse a été trouvée. Nous voulons allumer la lumière. Mais non seulement allumez-le, mais allumez-le uniquement lorsqu'il commence à faire sombre. Cela semble être une tâche simple - il n'est pas nécessaire de réfléchir ici. Il suffit de rechercher sur Google le guide pratique de deux pages et de partir. Mais cela ne nous intéresse pas. Nous voulons allumer la lumière mécaniquement. Autrement dit, nous avons besoin d'un coup de main pour l'ISS, comme Howard Wolowitz.

Progressivement, la tâche s'est élargie et a changé, évoluant lentement vers «314 façons d'allumer la lumière». Les options que nous avons envisagées ont été progressivement écartées en raison de la complexité de la mise en œuvre et simplement de l'impossibilité d'un accord entre elles.

Rappelant soudain mon enfance passée à jouer diverses variations de The Incredible Machine, j'ai décidé que ce serait génial de faire exactement cela. Créez un mécanisme efficace, non seulement utile et complexe. Bienvenue donc dans le monde des machines Goldberg!

PS: Ci-après, j'appellerai notre création un robot, pas une machine Goldberg pour sauvegarder la ressource de la touche Shift.

Machine Goldberg et options de mise en œuvre


La machine Goldberg est un appareil qui effectue une action simple avec une méthode complexe et complètement non triviale. Plus d'informations sur ces mécanismes peuvent être trouvées sur Wikipedia, et donc je ne me concentrerai pas sur les informations historiques.

Ces machines peuvent être divisées en deux classes principales: jetables et permanentes. Dans le premier cas, comme son nom l'indique, une action ne peut être effectuée qu'une seule fois, et la poursuite du travail du mécanisme nécessite une intervention extérieure. Dans le second cas, seule une usure mécanique est possible, ce qui affecte les performances de l'action de manière insignifiante et uniquement à l'avenir. Cette dernière option est évidemment beaucoup plus utile dans la vie, en particulier avec un cycle de travail assez régulier, et comme il fait nuit à l'extérieur de la fenêtre et dans la pièce tous les jours, il serait bien de ne pas "allumer" l'interrupteur si souvent.

La tâche d'éclairage


Supposons qu'une source éclaire un espace clos de forme parallélépipédique de la taille d'un petit laboratoire à travers une ouverture dans l'une des faces déguisée en fenêtre. Déterminez la dépendance de l'éclairage moyen par rapport au temps, en tenant compte du fait que le temps est éclairé cycliquement .

Pour résoudre ce problème , nous construisons un algorithme A. Fig. 1. Un algorithme simple pour déterminer l'illumination Ainsi, nous n'avons besoin que de 2 étapes pour passer aux étapes suivantes: 1. Obtenez les informations 2. Vérifiez-les Mais, si tout est si simple, pourquoi vous embêter? Par conséquent, l'algorithme peut facilement être compliqué. Pour commencer, nous utiliserons une complication extrêmement utile. Par exemple, une augmentation de la précision (algorithme B).












Fig. 2. Un algorithme sophistiqué pour déterminer l'éclairage

1. Obtenir des informations
2. Vérification
3. Demander des données supplémentaires, si 2 est terminé
4. Obtenir des données supplémentaires
5. Vérifier des données supplémentaires
6. Poursuite des travaux

En raison de la complexité de l'algorithme et de l'obtention de données supplémentaires, nous pouvons augmenter la précision. Par exemple, puisque nous allumons la lumière, l'éclairage augmentera, donc la lumière doit être éteinte? Je crains que nous ne soyons si accrochés, et les passants ne comprendront pas le code Morse provenant de la fenêtre.

Maintenant, il ne reste plus qu'à comprendre comment tout compliquer mécaniquement. Qu'est-ce qui vous vient à l'esprit lorsque nous pensons à la lumière? Pas sur la lumière blanche, mais sur cette composante utile de notre vie qui la rend un peu plus agréable.

Je ne sais pas comment ça se passe avec vous, mais dans ma tête immédiatement un schéma très compliqué de miroirs, de lentilles, de filtres et de polariseurs se pose, nous en avons donc besoin. Mais non, nous ne brûlerons rien. Ou le ferons-nous? Cette question est toujours à l’examen, Notre robot devrait être assez autonome.

Néanmoins, vous devez commencer par le simple, sinon le complexe ne réussira jamais comme vous le souhaitez et vivra votre vie. Donc, 3 exemples de mise en œuvre d'un algorithme simple pour déterminer l'illumination. Fig. 3. Schémas de différentes implémentations d'un algorithme simple I. Électricité et photocellule





L'une des implémentations les plus simples. Prenons par exemple une photorésistance (diode, transistor, etc.) dont les caractéristiques électriques changent en fonction de l'éclairage et se connectent au circuit électrique. En raison des changements d'éclairage, la chute de tension aux bornes d'une telle résistance va changer.

II. Échelles, pression, lentille et eau (algorithme impossible)
Déjà une implémentation moins banale, qui nécessite également une grande précision. Une petite quantité d'eau est versée dans le réservoir sur une échelle précise. La lentille collectrice est positionnée de manière à ce que la surface de l'eau soit nette. Avec un flux lumineux suffisant, l'eau s'évapore un peu plus vite qu'en son absence, ce qui devrait mesurer l'équilibre. Malheureusement, tout cela est bon en théorie, mais en pratique, ce n'est pas possible. En outre, l'approvisionnement en eau devra être régulièrement réapprovisionné à l'aide d'un mécanisme supplémentaire ou manuellement.

III. Objectif, fil, poids et minuterie (difficile à répéter)
Le schéma est nettement plus efficace que le précédent. Avec une augmentation du flux lumineux, le fil situé au centre de l'objectif sera brûlé plus rapidement, qui sera fixé par la minuterie. Malheureusement, cet algorithme nécessite un mécanisme supplémentaire qui ferait un travail utile - lever la charge et tirer un nouveau thread (plusieurs fois par jour).

Il est clair qu'un grand nombre de ces algorithmes peuvent être inventés, mais il est peu probable que la précision de chacun des éléments suivants augmente, ce dont nous n'avons absolument pas besoin. Notre tâche consiste maintenant à compliquer le plus précis des algorithmes avec le système de vérification afin que le mécanisme se rapproche un peu du robot "idéalement complexe". Pour ma part, j'ai personnellement choisi l'algorithme I. Néanmoins, je ne prétends pas qu'il est le meilleur de tous. Passons aux modifications.

Notre algorithme sophistiqué implique l'utilisation de la vérification du résultat. Et puisque nous développons la machine Goldberg, il n'est ni logique ni intéressant de vérifier de la même manière que la collecte habituelle d'informations est effectuée. Essayons quelques modifications mécaniques.

I.1. Rails et capteur de remarques en mouvement
. Pour simplifier le schéma de mouvement, nous supposons que dans un sens les mouvements se produisent toujours sous l'influence de la gravité, et dans le sens opposé à l'aide d'une force extérieure (trains, qui dans l'enfance ne rêvaient pas d'un chemin de fer?).

Après chaque vérification réussie, nous déplacerons le capteur vers un autre point et y vérifierons l'éclairage. Naturellement, après exécution, le capteur doit être remis dans sa position d'origine.

I.2. Rails et boule de verre
La deuxième utilisation du rail. Après le premier contrôle, une boule de verre roule vers le capteur, modifiant ainsi l'éclairage du capteur en raison de la diffusion ou de la focalisation de la lumière (en fonction de la position relative du capteur et de la balle)

I.3. Filtre polarisant ou de fréquence (filtre de couleur)
En fermant le capteur avec un filtre, vous pouvez déterminer la source de lumière (solaire diffusée ou lumière provenant d'une lampe déjà allumée). Nécessite une bonne connaissance des caractéristiques spectrales ou de polarisation de la source lumineuse (lampe). Le filtre peut être fermé par différentes méthodes. Par exemple, en tournant le filtre autour d'un certain axe perpendiculaire à celui-ci, ou en abaissant le filtre plus près du capteur.

"Où est le mécanisme complexe ici?" - demandez-vous. Je peux facilement répondre à cette question. Notre algorithme ne limite pas le circuit physiquement ou philosophiquement, c'est-à-dire qu'il ne le limite pas du tout. Par conséquent, qu'est-ce qui nous empêche de considérer que chaque élément du diagramme est un circuit entièrement séparé?

Par conséquent, nous passons à la tâche suivante.

La tâche du bouton mécanique qui s'enfuit


Supposons que l'on vous donne un bouton qui se déplace constamment dans un espace unidimensionnel (se déplace le long d'une ligne arbitraire, dans le cas général, donnée). Comment cliquer dessus?

Pourquoi en avons-nous besoin? Quoi de plus efficace. Que faire si le bouton d'éclairage ne reste pas immobile? Par exemple, il peut se déplacer le long d'une trajectoire circulaire. Considérons le schéma en utilisant un levier spécial pour appuyer sur un bouton. Fig. 4. Schéma de fonctionnement du levier Fig. 5. Schéma avec le bouton se déplaçant autour du levier Ou nous pouvons utiliser non pas un mais plusieurs boutons. Ensuite, nous devons cliquer sur celui souhaité. Une variante de l'opposé - le levier se déplace, et nous devons réussir à appuyer sur le bouton nécessaire au bon moment. Fig. 6. Schémas avec boutons mobiles et avec levier mobile












Cependant, ces dernières options peuvent également être utilisées pour la mise en œuvre simple de diverses fonctions du mécanisme.

L'algorithme réalisé dans le cas simple est identique à l'algorithme simple de détermination de l'éclairage. Dans le cas compliqué: Fig. 7. Un algorithme compliqué pour effectuer une tâche mécanique On peut noter que dans ce cas il ne sera pas possible de compliquer l'algorithme pour de tels «muscles» du robot. Nous ne pouvons qu'augmenter le nombre d'étapes. Avons-nous besoin de branchement dans l'algorithme? Serait-il utile d'implémenter la machine Goldberg? Si seulement je le savais. Cependant, une implémentation mécanique limite considérablement le nombre de branchements possibles d'algorithmes, tout en introduisant simultanément une telle efficacité dans l'exécution de cet algorithme.








Conclusion


De toute évidence, aucun algorithme complexe n'est nécessaire pour implémenter la machine mécanique Goldberg. Cependant, cela n'affecte pas les performances elles-mêmes. Ainsi, la machine Goldberg est un représentant idéal de la logique algorithmique linéaire et, par conséquent, la plus simple.

PS: Je serai très reconnaissant à tous ceux qui connaissent les options de mise en œuvre de la machine Goldberg complexe sur le plan algorithmique.

Merci de votre attention!

Source: https://habr.com/ru/post/fr387805/


All Articles