Mesin Goldberg dalam kehidupan nyata. Apakah algoritma tindakan rumit untuk mekanisme yang kompleks?
Perhatian! Artikel ini berkaitan dengan mesin Goldberg mekanik / listrik dan algoritme operasinya.
Saya mulai menulis artikel ini dalam bentuk catatan untuk merampingkan proses "brainstorming" yang panjang, tetapi berselang-seling, dan karena itu artikel tersebut akan menjadi semacam presentasi ide dan perbaikan yang konsisten yang ditemukan selama pembangunan algoritma. Selain itu, ini hanya yang pertama, bisa dikatakan "teoretis", bagian dari siklus pengembangan umum mesin Goldberg itu sendiri (perangkat yang melakukan tindakan sederhana dengan cara yang tidak sepele), dan karenanya akan dilanjutkan dengan artikel berikutnya.Saya harap artikel ini akan menarik dan, mungkin, bermanfaat bagi semua orang. Mari kita mulai.Entri
Saya ingin memulai dengan deskripsi singkat tentang bagaimana ide itu muncul dan mengapa perlu menggunakan mesin Goldberg, dan, pada kenyataannya, algoritma aksinya. Ini hanya penyimpangan liris, dan karena itu dapat dilewati dengan transisi berikutnya segera ke bagian "Awal pembangunan".Musim dingin di bulan November di Fakultas Fisika KNU. Taras Shevchenko, seorang teman dan saya memutuskan “mengapa kita tidak melakukan sesuatu yang bermanfaat bagi diri kita sendiri? Kami adalah fisikawan, tidak masalah bagi kami untuk menghasilkan sesuatu yang sangat keren dan melakukannya. Hanya dua hari dan Anda selesai. " Sisa dari pasangan teori kelompok dihabiskan untuk mencoba mencari tahu apa yang akan kita lakukan."Mengutip yang hebat," kita dapat mengatakan: "Dari sini, jelas, ini terjadi ..." bahwa semuanya tidak begitu sederhana bahkan dengan definisi apa yang ingin kita lakukan. Pada akhirnya, jawabannya ditemukan. Kami ingin menyalakan lampu. Tetapi tidak hanya menyalakannya, tetapi menyalakannya hanya ketika mulai gelap. Tampaknya menjadi tugas yang sederhana - tidak perlu berpikir di sini. Cukup google halaman dua Cara dan pergi. Tapi ini tidak menarik bagi kami. Kami ingin menyalakan lampu secara mekanis. Artinya, kita perlu bantuan untuk ISS, seperti Howard Wolowitz.Secara bertahap, tugas diperluas dan diubah, perlahan-lahan bergerak ke "314 cara untuk menyalakan lampu". Opsi yang kami pertimbangkan secara bertahap dibuang karena kompleksitas implementasi dan semata-mata ketidakmungkinan kesepakatan di antara mereka.Tiba-tiba teringat masa kecil saya dihabiskan bermain berbagai variasi The Incredible Machine, saya memutuskan akan bagus untuk melakukan hal itu. Buat mekanisme yang efektif, tidak hanya bermanfaat dan kompleks. Karena itu, selamat datang di dunia mesin Goldberg!PS: Selanjutnya, saya akan menyebut kreasi kami robot, bukan mesin Goldberg untuk menghemat sumber daya tombol Shift.Mesin Goldberg dan opsi implementasi
Mesin Goldberg adalah perangkat yang melakukan tindakan sederhana dengan metode yang kompleks dan sepenuhnya non-sepele. Informasi lebih lanjut tentang mekanisme tersebut dapat ditemukan di Wikipedia, dan karena itu saya tidak akan fokus pada informasi historis.Mesin tersebut dapat dibagi menjadi dua kelas utama: sekali pakai dan permanen. Dalam kasus pertama, seperti namanya, suatu tindakan dapat dilakukan hanya sekali, dan kerja lebih lanjut dari mekanisme ini memerlukan intervensi eksternal. Dalam kasus kedua, hanya keausan mekanis yang dimungkinkan, yang memengaruhi kinerja aksi secara tidak signifikan dan hanya di masa mendatang. Opsi terakhir jelas jauh lebih berguna dalam kehidupan, terutama dengan siklus kerja yang cukup teratur, dan karena hari menjadi gelap di luar jendela dan di ruangan setiap hari, alangkah baiknya untuk tidak "menyalakan" sakelar begitu sering.Tugas pencahayaan
Misalkan sebuah sumber menerangi ruang paralelepiped berbentuk tertutup ukuran laboratorium kecil melalui lubang di salah satu wajah yang menyamar sebagai jendela. Tentukan ketergantungan pencahayaan rata-rata pada waktu, dengan mempertimbangkan bahwa waktu diterangi secara siklikal .Untuk mengatasi masalah ini kita membangun suatu algoritma A. Gambar. 1. Algoritma sederhana untuk menentukan iluminasi.
Jadi, kita hanya perlu 2 langkah untuk beralih ke langkah selanjutnya: 1. Dapatkan informasi 2. Periksa, tetapi, jika semuanya begitu sederhana, mengapa repot-repot? Karena itu, algoritme dapat dengan mudah menjadi rumit. Untuk memulainya, kita akan menggunakan komplikasi yang sangat berguna. Misalnya, peningkatan akurasi (algoritma B).
Fig. 2. Algoritma canggih untuk menentukan iluminasi1. Mendapatkan informasi2. Verifikasi3. Meminta data tambahan, jika 2 selesai4. Mendapatkan data tambahan5. Memverifikasi data tambahan6. Pekerjaan lanjutanKarena kompleksitas algoritma dan mendapatkan data tambahan, kita dapat meningkatkan akurasi. Misalnya, karena kita menyalakan lampu, iluminasi akan meningkat, jadi cahayanya harus dimatikan? Saya khawatir kita akan sangat menutup telepon, dan orang yang lewat akan kehilangan kode Morse yang datang dari jendela.Sekarang tinggal mencari tahu bagaimana mempersulit segala sesuatu secara mekanis. Apa yang pertama kali terlintas dalam pikiran ketika kita berpikir tentang cahaya? Bukan tentang cahaya putih, tetapi tentang komponen kehidupan kita yang bermanfaat yang membuat hidup sedikit lebih baik.Saya tidak tahu bagaimana dengan Anda, tetapi di kepala saya segera muncul skema cermin, lensa, filter, dan polarisasi yang sangat rumit, jadi kami membutuhkannya. Tapi tidak, kami tidak akan membakar apa pun. Atau akankah kita? Masalah ini masih dalam pertimbangan, karena Robot kami harusnya sangat otonom.Namun demikian, Anda harus mulai dengan yang sederhana, jika tidak, kompleks Anda tidak akan pernah berhasil seperti yang Anda inginkan dan akan menjalani hidup Anda. Jadi, 3 contoh penerapan algoritma sederhana untuk menentukan penerangan. Fig. 3. Skema implementasi yang berbeda dari algoritma sederhana I. Listrik dan fotosel
Salah satu implementasi paling sederhana. Ambil contoh, sebuah photoresistor (dioda, transistor, dll.) Yang mengubah karakteristik kelistrikannya tergantung pada iluminasi dan menghubungkannya ke sirkuit listrik. Sebagai akibat dari perubahan penerangan, jatuh tegangan pada resistor tersebut akan berubah.II Timbangan, tekanan, lensa, dan air (algoritme tidak mungkin)Implementasi yang sudah tidak terlalu sepele, yang juga membutuhkan akurasi tinggi. Sejumlah kecil air dituangkan ke dalam tangki pada skala yang akurat. Lensa pengumpul diposisikan sedemikian rupa sehingga permukaan air dalam fokus. Dengan fluks bercahaya yang cukup, air akan menguap sedikit lebih cepat dari ketiadaan, yang seharusnya mengukur keseimbangan. Sayangnya, ini semua baik secara teori, tetapi dalam praktiknya tidak layak. Selain itu, persediaan air perlu diisi ulang secara teratur menggunakan mekanisme tambahan atau secara manual.III. Lensa, benang, berat, dan timer (sulit untuk diulang)Skema ini secara signifikan lebih efektif daripada yang sebelumnya. Dengan peningkatan fluks bercahaya, benang yang terletak di fokus lensa akan terbakar lebih cepat, yang akan diperbaiki oleh timer. Sayangnya, algoritma ini membutuhkan mekanisme tambahan yang akan melakukan pekerjaan yang bermanfaat - mengangkat beban dan menarik utas baru (berkali-kali sehari).Jelas bahwa banyak algoritme semacam itu dapat ditemukan, tetapi keakuratan masing-masing berikut tidak mungkin meningkat, yang sama sekali tidak kita perlukan. Tugas kami sekarang adalah untuk mempersulit algoritma yang paling akurat dengan sistem verifikasi sehingga mekanismenya menjadi sedikit lebih dekat dengan robot "idealnya kompleks". Untuk saya sendiri, saya pribadi memilih algoritma I. Namun, saya tidak mengklaim bahwa itu adalah yang terbaik dari semua yang mungkin. Mari beralih ke modifikasi.Algoritma canggih kami melibatkan penggunaan memeriksa hasil. Dan karena kami sedang mengembangkan mesin Goldberg, tidak logis dan tidak menarik untuk memeriksa dengan cara yang sama bahwa pengumpulan informasi yang biasa dilakukan. Mari kita coba beberapa modifikasi mekanis.I.1. Sensor rel dan sensor gerak. Untuk menyederhanakan skema gerakan, kita mengasumsikan bahwa dalam satu arah, gerakan selalu terjadi di bawah pengaruh gravitasi, dan dalam arah yang berlawanan dengan bantuan kekuatan eksternal (kereta api, siapa di masa kanak-kanak yang tidak bermimpi tentang kereta api?).Setelah setiap pemeriksaan berhasil, kami akan memindahkan sensor ke titik lain dan memeriksa iluminasi di sana. Secara alami, setelah eksekusi, sensor harus dikembalikan ke posisi semula.I.2. Rel dan bola kacaPenggunaan kedua rel. Setelah pemeriksaan pertama, bola kaca berguling ke arah sensor, sehingga mengubah penerangan sensor karena hamburan atau pemfokusan cahaya (tergantung pada posisi relatif sensor dan bola)I.3. Filter polarisasi atau frekuensi (filter warna)Dengan menutup sensor dengan filter, Anda dapat menentukan sumber cahaya (cahaya matahari atau cahaya dari lampu yang sudah dinyalakan). Membutuhkan pengetahuan yang tepat tentang karakteristik spektral atau polarisasi dari sumber cahaya (lampu). Filter dapat ditutup dengan berbagai metode. Misalnya, dengan memutar filter di sekitar sumbu tertentu yang tegak lurus terhadapnya, atau menurunkan filter lebih dekat ke sensor."Di mana mekanisme kompleks di sini?" - kamu bertanya. Saya dapat dengan mudah menjawab pertanyaan ini. Algoritme kami tidak membatasi rangkaian secara fisik atau filosofis, yaitu tidak membatasi sama sekali. Dengan demikian, apa yang mencegah kita untuk mempertimbangkan bahwa setiap elemen dalam diagram blok adalah seluruh rangkaian yang terpisah?Karena itu, kami beralih ke tugas berikutnya.Tugas tombol mekanis yang lari
Misalkan Anda diberi tombol yang terus bergerak dalam ruang satu dimensi (bergerak di sepanjang garis arbitrer, dalam kasus umum, diberikan). Bagaimana cara mengkliknya?Mengapa kita membutuhkan ini? Apa yang akan lebih efektif. Bagaimana jika tombol lampu tidak diam? Misalnya, ia dapat bergerak di sepanjang jalur melingkar. Mari pertimbangkan skema menggunakan tuas khusus untuk menekan tombol. Fig. 4. Skema operasi tuas Gambar. 5. Skema dengan tombol yang bergerak di sekitar tuas
Atau kita bisa menggunakan tidak hanya satu tapi beberapa tombol. Maka kita perlu mengklik yang diinginkan. Varian dari sebaliknya - tuas bergerak, dan kita harus mengatur untuk menekan tombol yang diperlukan pada waktu yang tepat. Fig. 6. Skema dengan tombol bergerak dan dengan tuas bergerak

Namun, opsi yang terakhir dapat digunakan untuk implementasi sederhana dari berbagai fungsi mekanisme.Algoritma yang dilakukan dalam kasus sederhana identik dengan algoritma sederhana untuk menentukan pencahayaan. Dalam kasus yang rumit: Gbr. 7. Algoritma yang rumit untuk melakukan tugas mekanis.
Dapat dicatat bahwa dalam kasus ini tidak akan mungkin untuk mempersulit algoritma untuk "otot" robot tersebut. Kami hanya dapat meningkatkan jumlah langkah. Apakah kita perlu bercabang dalam algoritma? Apakah akan bermanfaat untuk mengimplementasikan mesin Goldberg? Kalau saja saya tahu. Namun, implementasi mekanis secara signifikan membatasi jumlah kemungkinan percabangan algoritma, sementara secara bersamaan memperkenalkan efisiensi tersebut ke dalam pelaksanaan algoritma ini.
Kesimpulan
Jelas, tidak perlu algoritma yang kompleks untuk mengimplementasikan mesin mekanik Goldberg. Namun, ini tidak mempengaruhi kinerja itu sendiri. Dengan demikian, mesin Goldberg adalah perwakilan ideal linear, dan, karenanya, logika algoritmik paling sederhana.PS: Saya akan sangat berterima kasih kepada semua orang yang tahu opsi implementasi untuk mesin Goldberg yang secara algoritmik kompleks.Terima kasih atas perhatian anda! Source: https://habr.com/ru/post/id387805/
All Articles