
Cepat atau lambat dalam kehidupan kebanyakan tim ia datang - bergerak. Anda dituntun ke ruangan yang bersih dan kosong, yang akan menjadi tempat di mana Anda akan menghabiskan sebagian besar hidup Anda. Jika Anda seorang desainer, maka hal pertama yang akan Anda pikirkan adalah bagaimana cara menggantungkan gambar dan meletakkan bunga untuk membuat ruangan berkilau dengan warna baru. Jika Anda adalah seorang samurai kantor yang berpengalaman, maka dengan mata terlatih, tentukan tempat terbaik dan klaim terlebih dahulu. Jika Anda adalah kepala departemen, maka Anda mungkin akan pusing tentang tempat duduk semua karyawan. Tetapi jika pada saat yang sama Anda memimpin tim ilmuwan data, maka
koin Python akan membantu Anda.
Tentu saja, semuanya menentukan gaya manajemen Anda. Jika Anda lebih suka keputusan otoriter, Anda bisa menunjukkan dengan jari angkuh ke mana semua orang harus pergi. Dan tidak masalah jika seseorang menolak untuk duduk menghadap tembok atau ke satu sama lain. Namun, sejak penghapusan perbudakan pada tahun 1861, gaya seperti itu terus-menerus kehilangan popularitas di negara kita. Dan jika Anda masih khawatir tentang kenyamanan karyawan, maka ada baiknya mengumpulkan dan entah bagaimana mempertimbangkan preferensi mereka. Tetapi di sini iblis merayap, orang yang ada dalam perincian: bagaimana mengumpulkan, bagaimana memperhitungkan, siapa yang harus disukai, dll.
Mengingat pengalaman bertahun-tahun dalam mengorganisasi kompetisi untuk anak sekolah, di mana kesetaraan kondisi adalah salah satu prioritas utama, saya bertekad untuk menciptakan mekanisme yang transparan dan dapat dipahami di mana karyawan yang lebih berpengalaman atau lebih cepat tidak mendapatkan keuntungan.
Anda tidak akan menyenangkan semua orang, atau masih ...?
Kami membuat premis bahwa karyawan mungkin memiliki preferensi tempat duduk dan ingin meminimalkan potensi ketidakpuasan. Artinya, perlu untuk mengatur sistem distribusi kursi sehingga beberapa karyawan, bertindak secara optimal untuk diri mereka sendiri, tidak masuk ke dalam konflik yang jelas dengan yang lain. Strategi "siapa yang pertama kali bangun dan sandal" jelas tidak mengarah ke tujuan ini. Jika seseorang menentukan urutan pilihan tertentu (misalnya, berdasarkan prestasi), maka tugas tersebut masih belum terpecahkan - seseorang yang memilih sebelumnya, tetapi yang relatif acuh tak acuh, dapat secara tidak sengaja mengambil tempat yang dipilih oleh orang lain. Belum lagi bahwa perintah semacam itu sendiri merupakan hal yang kontroversial.
Kami memilih jenis pemungutan suara, di mana setiap orang memilih tergantung pada bagaimana orang lain memberikan suara: jika seseorang lebih atau kurang tidak peduli di mana dari dua tempat duduk, maka strategi yang optimal adalah berpura-pura di mana ada lebih sedikit pesaing.
Jalan kami menuju tempat duduk yang sempurna
Langkah pertama adalah menentukan di mana Anda biasanya bisa duduk. Di sini tugasnya adalah untuk semua orang, karena semua orang tertarik untuk membuat tempat yang nyaman sebanyak mungkin - setelah semua, dalam hal ini kompetisi semakin berkurang. Kami membuat peta dan melakukan pekerjaan penjelas βdi antara populasiβ, mempromosikan setiap tempat sebagai tempat yang ideal.

Dalam dunia yang ideal, setiap orang perlu memberikan poin preferensi ke masing-masing tempat, tetapi sulit bagi seseorang untuk menilai hingga ratusan bagaimana satu tempat berbeda dari yang lain.
Oleh karena itu, setiap orang diminta untuk memilih daftar prioritas, yang jumlahnya tidak terbatas sama sekali: tempat mana yang ingin dia ambil di tempat pertama, mana yang di tempat kedua, dan yang di tempat ketiga.
Perlu dicatat bahwa logika preferensi di antara karyawan sangat berbeda: seseorang ingin lebih dekat ke jendela, seseorang ingin melihat ke luar jendela, seseorang penting karena kedekatannya dengan AC dan bahkan warna dinding. Sulit untuk mempertimbangkan preferensi akun sendiri, di sini Anda hanya dapat memberi orang kesempatan untuk memilih tempat.
Selanjutnya, perlu untuk menentukan metrik keberhasilan pengaturan. Semakin tidak nyaman seseorang duduk, semakin banyak model seperti itu harus didenda. Saya memutuskan untuk melakukan penalti kuadrat untuk menghindari ketidaknyamanan yang mencolok.
Ternyata seperti ini: jika seseorang ditempatkan pada daftar TOP-1-nya, maka denda 2; jika dari daftar TOP-2 - denda 4, TOP-3 - 8, TOP-4 - 16 dan seterusnya. Saya tidak mengklaim bahwa metrik ini optimal, tetapi terlihat masuk akal.
Saya menulis
program Python sederhana - prioritas dari rekan kerja diperkenalkan ke dalamnya, dan menghitung opsi penempatan dengan hukuman minimum. Algoritma diumumkan kepada rekan kerja sebelumnya (betapa naifnya saya!). Daftar itu semua diterbitkan secara terbuka, agar dapat menyetujui jika diinginkan.
Namun, setelah melihat perhitungan, beberapa karyawan menyadari bahwa Anda dapat mencoba mengambil "aplikasi" Anda untuk mendapatkan tempat yang diinginkan. Datasientists adalah datasientists seperti itu! :)
Akibatnya, pemilihan putaran kedua diselenggarakan, ketika dimungkinkan untuk membuat perubahan pada prioritas mereka ditutup. Dengan demikian, semua lagi dalam kondisi yang sama - setiap orang dapat memilih dan membuat perubahan.
Setelah mengumpulkan aplikasi dari putaran kedua, saya sudah menjalankan program untuk yang terakhir kalinya. Fufh! Sepertinya semua orang senang.
Alih-alih PS
Perlu dicatat bahwa tidak diperhitungkan keinginan mengenai kedekatan karyawan satu sama lain. Tetapi dalam paradigma ini, juga cukup sederhana untuk mengimplementasikannya dengan membuat daftar keinginan (yang ingin duduk di sebelah siapa dan tempat-tempat apa yang dekat, menurut karyawan ini), dan kemudian memperhalus model untuk tidak memenuhi keinginan ini.
Tentu saja, opsi selalu dimungkinkan ketika dua pengaturan memiliki penalti yang sama.
Dalam hal ini, saya telah memutuskan untuk bergantung pada koin - pengoptimalan tidak berdaya lebih lanjut :).
Nikolay Knyazev, kepala kelompok pembelajaran mesin Jet InfosystemsKode Github