A máquina de Goldberg na vida real. O algoritmo de ação é complicado para um mecanismo complexo?

Atenção! Este artigo refere-se à máquina Goldberg mecânica / elétrica e seus algoritmos de operação.



Comecei a escrever este artigo na forma de notas para, de alguma forma, otimizar o processo de um longo, mas intermitente, "brainstorming" e, portanto, o artigo será uma espécie de apresentação consistente de idéias e melhorias que foram inventadas durante a construção do algoritmo. Além disso, este é apenas o primeiro, pode-se dizer “teórico”, parte do ciclo geral de desenvolvimento da própria máquina Goldberg (um dispositivo que executa uma ação simples de maneira não trivial) e, portanto, continuará nos artigos subsequentes.
Espero que este artigo seja interessante e, possivelmente, útil para todos. Vamos começar.

Entrada


Gostaria de começar com uma breve descrição de como surgiu a idéia e por que é necessário usar a máquina Goldberg e, de fato, o algoritmo de sua ação. Esta é apenas uma digressão lírica e, portanto, pode ser pulada com a transição subsequente imediatamente para a seção "Início do desenvolvimento".

Dia de inverno novembro na Faculdade de Física da KNU. Taras Shevchenko, um amigo e eu decidimos "por que não fazemos algo útil a nós mesmos? Somos físicos, não é um problema criar algo incrivelmente legal e fazê-lo. Apenas dois dias e pronto. O resto desse par de teoria de grupos foi gasto tentando descobrir o que faríamos.

“Citando os grandes nomes”, podemos dizer: “A partir daqui, obviamente, segue-se ...” que tudo não é tão simples, mesmo com a definição do que queremos fazer. No final, a resposta foi encontrada. Queremos acender a luz. Mas não apenas ligue-o, mas ligue-o apenas quando começar a escurecer. Parece ser uma tarefa simples - não há necessidade de pensar aqui. Basta pesquisar no Google Como fazer duas páginas e pronto. Mas isso não é interessante para nós. Queremos acender a luz mecanicamente. Ou seja, precisamos de uma mão para a ISS, como Howard Wolowitz.

Gradualmente, a tarefa se expandiu e mudou, movendo-se lentamente para "314 maneiras de acender a luz". As opções que consideramos foram gradualmente descartadas devido à complexidade da implementação e simplesmente à impossibilidade de um acordo entre elas.

De repente, relembrando minha infância passada tocando várias variações de The Incredible Machine, eu decidi que seria ótimo fazer exatamente isso. Faça um mecanismo eficaz, não apenas útil e complexo. Portanto, seja bem-vindo ao mundo das máquinas Goldberg!

PS: Daqui em diante, chamarei nossa criação de robô, não de Goldberg, para salvar o recurso da tecla Shift.

Opções de máquina e implementação Goldberg


A máquina Goldberg é um dispositivo que executa uma ação simples com um método complexo e completamente não trivial. Mais informações sobre esses mecanismos podem ser encontradas na Wikipedia e, portanto, não vou me concentrar nas informações históricas.

Essas máquinas podem ser divididas em duas classes principais: descartáveis ​​e permanentes. No primeiro caso, como o nome indica, uma ação pode ser executada apenas uma vez e o trabalho adicional do mecanismo requer intervenção externa. No segundo caso, somente o desgaste mecânico é possível, o que afeta o desempenho da ação de forma insignificante e somente no futuro. A última opção é obviamente muito mais útil na vida, especialmente com um ciclo de trabalho bastante regular, e como fica escuro do lado de fora da janela e da sala todos os dias, seria bom não "ligar" o interruptor com tanta frequência.

A tarefa da iluminação


Suponha que uma fonte ilumine um espaço fechado em forma de paralelepípedo do tamanho de um pequeno laboratório através de uma abertura em uma das faces disfarçadas de janela. Determine a dependência da iluminação média no tempo, levando em consideração que o tempo é ciclicamente iluminado.

Para resolver este problema, construímos um algoritmo A. Fig. 1. Um algoritmo simples para determinar a iluminação Portanto, precisamos de apenas 2 etapas para seguir para as próximas etapas: 1. Obtenha as informações 2. Verifique-as Mas, se tudo é tão simples, por que se preocupar? Portanto, o algoritmo pode ser facilmente complicado. Para começar, usaremos uma complicação extremamente útil. Por exemplo, um aumento na precisão (algoritmo B).












Fig. 2. Um algoritmo sofisticado para determinar a iluminação

1. Obtenção de informações
2. Verificação
3. Solicitação de dados adicionais, se 2 for concluído
4. Obtenção de dados adicionais
5. Verificação de dados adicionais
6. Trabalho contínuo

Devido à complexidade do algoritmo e à obtenção de dados adicionais, podemos aumentar a precisão. Por exemplo, uma vez que acendemos a luz, a iluminação aumentará, então a luz deve ser desligada? Receio que fiquemos tão desligados, e os transeuntes ficarão sem saber o que o código Morse vem da janela.

Agora resta apenas descobrir como complicar tudo mecanicamente. O que primeiro vem à mente quando pensamos sobre a luz? Não sobre a luz branca, mas sobre o componente útil de nossa vida que torna a vida um pouco melhor.

Eu não sei como é com você, mas na minha cabeça imediatamente surge um esquema muito complicado de espelhos, lentes, filtros e polarizadores, por isso precisamos disso. Mas não, não vamos queimar nada. Ou vamos? Esta questão ainda está em consideração, pois Nosso robô deve ser bastante autônomo.

No entanto, você precisa começar com o simples, caso contrário, o complexo que você nunca terá sucesso da maneira que deseja e viverá sua vida. Assim, 3 exemplos da implementação de um algoritmo simples para determinar a iluminação. Fig. 3. Esquemas de diferentes implementações de um algoritmo simples I. Eletricidade e fotocélula





Uma das implementações mais simples. Pegue, por exemplo, um fotorresistor (diodo, transistor, etc.) cujas características elétricas mudem dependendo da iluminação e conecte ao circuito elétrico. Como resultado de mudanças na iluminação, a queda de tensão através desse resistor mudará.

II Escalas, pressão, lente e água (algoritmo impossível)
Já é uma implementação menos trivial, que também exige grande precisão. Uma pequena quantidade de água é derramada no tanque em uma escala precisa. A lente coletora é posicionada de modo que a superfície da água esteja em foco. Com fluxo luminoso suficiente, a água evapora um pouco mais rápido do que na ausência dela, o que deve medir o equilíbrio. Infelizmente, tudo isso é bom em teoria, mas na prática não é viável. Além disso, o suprimento de água precisará ser reabastecido regularmente usando um mecanismo adicional ou manualmente.

III Lente, linha, peso e cronômetro (difícil de repetir)
O esquema é significativamente mais eficaz que o anterior. Com o aumento do fluxo luminoso, o fio localizado no foco da lente será queimado mais rapidamente, o que será fixado pelo temporizador. Infelizmente, esse algoritmo requer um mecanismo adicional que faria um trabalho útil - levantando a carga e puxando um novo thread (muitas e mais vezes por dia).

É claro que muitos desses algoritmos podem ser inventados, mas é improvável que a precisão de cada um dos itens a seguir aumente, o que não precisamos. Nossa tarefa agora é complicar o algoritmo mais preciso do sistema de verificação, para que o mecanismo fique um pouco mais próximo do robô "idealmente complexo". Pessoalmente, escolhi pessoalmente o algoritmo I. No entanto, não afirmo que seja o melhor de todos os possíveis. Vamos seguir para as modificações.

Nosso algoritmo sofisticado envolve o uso de verificar o resultado. E como estamos desenvolvendo a máquina Goldberg, não é lógico nem interessante verificar da mesma maneira que a coleta usual de informações é realizada. Vamos tentar algumas modificações mecânicas.

I.1 Trilhos e sensor de observação em movimento
. Para simplificar o esquema de movimento, assumimos que em uma direção os movimentos sempre ocorrem sob a influência da gravidade e na direção oposta com a ajuda de força externa (trens, quem na infância não sonhava com uma ferrovia?).

Após cada verificação bem-sucedida, moveremos o sensor para outro ponto e verificaremos a iluminação lá. Naturalmente, após a execução, o sensor deve retornar à sua posição original.

I.2 Trilhos e bola de vidro
O segundo uso do trilho. Após a primeira verificação, uma bola de vidro rola em direção ao sensor, alterando assim a iluminação do sensor devido à dispersão ou foco da luz (dependendo da posição relativa do sensor e da bola)

I.3. Filtro de polarização ou frequência (filtro colorido)
Ao fechar o sensor com um filtro, você pode determinar a fonte de luz (luz solar dispersa ou luz de uma lâmpada já ligada). Requer conhecimento adequado das características espectrais ou de polarização da fonte de luz (lâmpada). O filtro pode ser fechado por vários métodos. Por exemplo, girando o filtro em torno de um determinado eixo perpendicular a ele ou abaixando o filtro para mais perto do sensor.

"Onde está o mecanismo complexo aqui?" - você pergunta. Eu posso facilmente responder a esta pergunta. Nosso algoritmo não limita o circuito fisicamente ou filosoficamente, ou seja, não o limita. Consequentemente, o que nos impede de considerar que cada elemento no diagrama de blocos é um circuito totalmente separado?

Portanto, passamos à próxima tarefa.

A tarefa do botão mecânico que foge


Suponha que você receba um botão que se mova constantemente no espaço unidimensional (se move ao longo de uma linha arbitrária, no caso geral, dada). Como clicar nele?

Por que precisamos disso? O que seria mais eficaz. E se o botão de luz não parar? Por exemplo, ele pode se mover ao longo de um caminho circular. Vamos considerar o esquema usando uma alavanca especial para pressionar um botão. Fig. 4. Esquema de operação da alavanca Fig. 5. Esquema com o botão movendo-se ao redor da alavanca Ou podemos usar não um, mas vários botões. Então precisamos clicar no desejado. Uma variante do oposto - a alavanca se move, e devemos conseguir pressionar o botão necessário no momento certo. Fig. 6. Esquemas com botões móveis e com uma alavanca móvel












No entanto, as últimas opções também podem ser usadas para a implementação simples de várias funções do mecanismo.

O algoritmo realizado no caso simples é idêntico ao algoritmo simples para determinar a iluminação. No caso complicado: Fig. 7. Um algoritmo complicado para executar uma tarefa mecânica.Pode -se notar que, neste caso, não será possível complicar o algoritmo para esses "músculos" do robô. Só podemos aumentar o número de etapas. Precisamos de ramificação no algoritmo? Seria útil implementar a máquina Goldberg? Se eu soubesse. No entanto, uma implementação mecânica limita significativamente o número de possíveis ramificações de algoritmos, enquanto introduz simultaneamente essa eficiência na execução desse algoritmo.








Conclusão


Obviamente, não há necessidade de um algoritmo complexo para implementar a máquina mecânica Goldberg. No entanto, isso não afeta o desempenho em si. Assim, a máquina Goldberg é um representante ideal da lógica algorítmica linear e, consequentemente, a mais simples.

PS: Serei muito grato a todos que conhecem as opções de implementação da máquina Goldberg algoritmicamente complexa.

Obrigado pela atenção!

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


All Articles