
Mais cedo ou mais tarde, na vida da maioria das equipes, ele vem - em movimento. Você é levado a uma sala limpa e vazia, que se tornará um lugar onde você passará a maior parte de sua vida. Se você é um designer, a primeira coisa que você pensa é em como pendurar as fotos e colocar as flores para fazer o quarto brilhar com novas cores. Se você é um samurai experiente no escritório, então, com um olho treinado, determine o melhor local e primeiro o reivindique. Se você é o chefe do departamento, provavelmente terá uma dor de cabeça em relação ao assento de todos os funcionários. Mas se, ao mesmo tempo, você estiver liderando uma equipe de cientistas de dados, a
moeda Python o ajudará.
Obviamente, tudo determina o seu estilo de gerenciamento. Se você preferir decisões autoritárias, basta apontar com um dedo imperioso para onde todos devem ir. E não importa se alguém resiste a ficar sentado de frente para a parede ou um para o outro. No entanto, desde a abolição da servidão em 1861, esse estilo perdeu popularidade em nosso país. E se você ainda está preocupado com o conforto dos funcionários, vale a pena coletar e, de alguma forma, levar em consideração as preferências deles. Mas aqui o diabo se arrasta, quem está nos detalhes: como coletar, como levar em conta, quem dar preferência etc.
Tendo em vista os muitos anos de experiência na organização de competições para crianças em idade escolar, onde a igualdade de condições é uma das principais prioridades, decidi criar mecanismos transparentes e compreensíveis nos quais funcionários mais experientes ou mais rápidos não obtêm vantagens.
Você não vai agradar a todos, ou ainda ...?
Assumimos a premissa de que os funcionários podem ter preferências de assentos e desejam minimizar o descontentamento em potencial. Ou seja, é necessário organizar um sistema de distribuição de assentos para que alguns funcionários, agindo de maneira ideal por si mesmos, não entrem em conflito claro com outros. A estratégia de "quem primeiro se levantou e chinelos" obviamente não leva a esse objetivo. Se alguém determina uma certa ordem de escolha (por exemplo, com base no mérito), a tarefa ainda não está resolvida - uma pessoa que escolhe antes, mas que é relativamente indiferente, pode acidentalmente tomar o lugar escolhido por outras pessoas. Sem mencionar que essa ordem é uma coisa controversa em si mesma.
Escolhemos o tipo de votação, no qual o voto de todos depende de como os outros votaram: se uma pessoa mais ou menos não se importa com qual dos dois lugares se sentar, a melhor estratégia é fingir onde há menos concorrentes.
Nosso caminho para assentos perfeitos
O primeiro passo foi determinar onde você geralmente pode se sentar. Aqui a tarefa era para todos, porque todos estavam interessados em criar o maior número possível de lugares convenientes - afinal, neste caso, a concorrência está diminuindo. Fizemos um mapa e realizamos um trabalho explicativo “entre a população”, promovendo cada local como ideal.

Em um mundo ideal, seria necessário que todos dessem pontos de preferência a cada um dos lugares, mas é difícil para uma pessoa avaliar até centésimos como um lugar difere do outro.
Portanto, todos foram convidados a escolher listas de prioridades, cujo número não é limitado: quais lugares ele gostaria de ocupar em primeiro lugar, quais no segundo e quais no terceiro.
Deve-se notar que a lógica das preferências entre os funcionários era muito diferente: alguém queria estar mais perto da janela, alguém queria olhar pela janela, alguém era importante por sua proximidade com o ar condicionado e até pela cor das paredes. É difícil levar em conta as preferências, aqui você só pode dar às pessoas a oportunidade de escolher um lugar.
Em seguida, foi necessário determinar a métrica do sucesso do acordo. Quanto mais desconfortável uma pessoa se senta, mais esse modelo deve ser multado. Eu decidi fazer uma penalidade quadrada para evitar inconvenientes flagrantes.
Aconteceu assim: se uma pessoa foi colocada em seu lugar na lista TOP-1, então uma multa de 2; se na lista de TOP-2 - uma multa de 4, TOP-3 - 8, TOP-4 - 16 e assim por diante. Não afirmo que essa métrica seja ótima, mas parece razoável.
Eu escrevi um
programa simples em Python - as prioridades dos colegas são introduzidas nele e calcula as opções de posicionamento com uma penalidade mínima. O algoritmo foi anunciado aos colegas com antecedência (quão ingênuo eu era!). Todas as listas foram publicadas abertamente, para poder concordar, se desejado.
No entanto, depois de ver os cálculos, alguns funcionários perceberam que você pode tentar pegar seu "aplicativo" para obter o local desejado. Os especialistas em dados são esses especialistas em dados! :)
Como resultado, foi organizado um segundo turno de eleições, quando foi possível fazer alterações em suas prioridades. Assim, todos estavam novamente em condições iguais - todos podiam selecionar e fazer alterações.
Depois de coletar os pedidos da segunda rodada, executei o programa já pela última vez. Fufh! Parece que todo mundo está feliz.
Em vez de PS
Vale ressaltar que não foram levados em consideração os desejos em relação à proximidade dos funcionários. Mas, nesse paradigma, também é bastante simples implementá-las criando listas de desejos (quem quer sentar ao lado de quem e que lugares estão próximos, de acordo com esses funcionários) e, depois, multar o modelo para não atender a esses desejos.
Obviamente, a opção sempre é possível quando dois arranjos têm a mesma penalidade.
Neste caso, eu já decidi confiar em uma moeda - a otimização é impotente ainda mais :).
Nikolay Knyazev, chefe do grupo de aprendizado de máquina da Jet InfosystemsCódigo do Github