
Neste artigo, vamos explicar como resolvemos o problema da falta de espaços vagos no armazém e o desenvolvimento de um algoritmo de otimização discreta para resolver essa tarefa. Vamos falar sobre como "construímos" o modelo matemático do problema de otimização e sobre as dificuldades inesperadas que encontramos ao processar os dados de entrada para o algoritmo.
Se você está interessado nas aplicações da matemática nos negócios e não tem medo de transformações de fórmulas a nível de 5ª série, sinta-se à vontade para continuar!
Este artigo será útil para aqueles que implementam sistemas WMS, trabalham na indústria de logística de armazém ou produção, além de programadores que se interessam pelas aplicações da matemática nos negócios e otimização de processos na empresa.-системы, работает в отрасли складской или производственной логистики, а также программистам, которые интересуются приложениями математики в бизнесе и оптимизацией процессов на предприятии.
Parte introdutória
Esta publicação dá continuidade a uma série de artigos onde compartilhamos nossa experiência bem-sucedida na implementação de algoritmos de otimização nos processos de armazém.
Em descreve as especificidades do armazém onde implementamos sistemas WMS, trabalham na indústria de logística de armazém ou produção, além de programadores que se interessam pelas aplicações da matemática nos negócios e otimização de processos na empresa.o sistema, e também conta por que precisávamos resolver o problema de clusterização de lotes de produtos remanescentes durante a implementação sistemas WMS, trabalham na indústria de logística de armazém ou produção, além de programadores que se interessam pelas aplicações da matemática nos negócios e otimização de processos na empresa.do sistema, e como realocamos esse processo.
Quando terminamos de escrever o artigo sobre algoritmos de otimização, ele ficou muito extenso, então decidimos dividir o material acumulado em duas partes:
- Na primeira parte (este artigo), falaremos sobre como "construímos" o modelo matemático da tarefa e as grandes dificuldades que encontramos inesperadamente ao processar e transformar os dados de entrada para o algoritmo.
- Na segunda parte, examinaremos detalhadamente a implementação do algoritmo na linguagem C++, realizaremos um experimento computacional e resumiremos a experiência que obtivemos durante a implementação dessas "tecnologias inteligentes" nos processos de negócios do cliente.
Como ler o artigo. Se você leu o artigo anterior, pode ir direto para a seção "Revisão das soluções existentes"; caso contrário, a descrição do problema a ser resolvido está no spoiler abaixo.
Descrição do problema a ser resolvido no armazém do cliente
O ponto crítico nos processos
Em 2018, realizamos um projeto de implementação do sistemas WMS, trabalham na indústria de logística de armazém ou produção, além de programadores que se interessam pelas aplicações da matemática nos negócios e otimização de processos na empresa.sistema no armazém "Casa Comercial LD" na cidade de Chelyabinsk. Implantamos o produto "1C-Logística: Gestão de Armazém 3" em 20 estações de trabalho: operadores sistemas WMS, trabalham na indústria de logística de armazém ou produção, além de programadores que se interessam pelas aplicações da matemática nos negócios e otimização de processos na empresa., armazenistas, motoristas de empilhadeiras. O armazém tem uma área média de cerca de 4 mil m², com 5000 células e 4500 SKUs. No armazém, são armazenadas válvulas de esfera de fabricação própria em diversos tamanhos, de 1 kg a 400 kg. Os estoques são mantidos por lotes, uma vez que é necessário selecionar os produtos pelo FIFO.
Durante o projeto dos esquemas de automação dos processos de armazenagem, nos deparamos com o problema existente do armazenamento ineficiente dos estoques. A especificidade do armazenamento e empilhamento das válvulas é tal que em uma célula de armazenamento unitário pode estar somente a nomenclatura de um lote (veja a figura 1). Os produtos chegam ao armazém diariamente e cada entrega é um lote separado. Assim, ao final de um mês de operação do armazém, são criados 30 lotes distintos, sendo que cada um deve ser armazenado em uma célula separada. Os itens são frequentemente retirados não em paletes inteiros, mas unidade por unidade, e como resultado, na área de seleção unitária, muitas células apresentam a seguinte situação: em uma célula com volume superior a 1m3, estão armazenadas várias válvulas que ocupam menos de 5-10% do volume da célula.

Figura 1. Foto de várias unidades em uma célula
Há um claro uso não otimizado da capacidade do armazém. Para ilustrar a gravidade da situação, posso fornecer números: em média, existem de 100 a 300 dessas células com volume superior a 1m3 contendo "restos mínimos" em diferentes períodos de operação do armazém. Como o armazém é relativamente pequeno, durante as temporadas de carga, esse fator se torna um "gargalo" que atrasa significativamente os processos de recebimento e expedição.
Ideia para resolver o problema
A ideia surgiu: reunir os lotes com datas mais próximas em um único lote e armazenar esses restos com um lote unificado compactamente juntos em uma célula, ou em várias, se houver falta de espaço em uma para acomodar toda a quantidade de restos. Um exemplo dessa "compactação" é ilustrado na figura 2.

Figura 2. Diagrama de compactação de restos nas células
Isso permite reduzir significativamente o espaço de armazenamento utilizado, que será destinado a novos produtos. Em situações de sobrecarga das capacidades de armazenamento, essa medida é extremamente necessária, pois, caso contrário, pode simplesmente não haver espaço livre para a colocação de novos produtos, o que levará a um impasse nos processos de armazenamento e alimentação e, consequentemente, a um bloqueio na aceitação e expedição. Antes da implementação do sistema WMS, essa operação era realizada manualmente, o que era ineficiente, já que o processo de busca por estoques adequados nas células era bastante demorado. Agora, com a implementação do sistema WMS, decidimos automatizar, acelerar e tornar o processo mais inteligente.
O processo de resolução dessa tarefa é dividido em 2 etapas:
- na primeira etapa, encontramos grupos de partidas próximos em data para compactação (essa tarefa é dedicada );
- na segunda etapa, calculamos o arranjo mais compacto possível dos estoques de produtos nas células para cada grupo de partidas.
Neste artigo, focaremos na segunda etapa do algoritmo.
Análise das soluções existentes
Antes de passar à descrição dos algoritmos que desenvolvemos, é importante fazer uma breve análise dos sistemas que já existem no mercado sistemas WMS, trabalham na indústria de logística de armazém ou produção, além de programadores que se interessam pelas aplicações da matemática nos negócios e otimização de processos na empresa., nos quais esse tipo de funcionalidade de compressão ideal foi implementado.
Em primeiro lugar, é necessário destacar o produto '1C: Enterprise 8. WMS Logística. Gestão de Armazém 4', que pertence e é distribuído pela empresa 1C e está relacionado à quarta geração sistemas WMS, trabalham na indústria de logística de armazém ou produção, além de programadores que se interessam pelas aplicações da matemática nos negócios e otimização de processos na empresa.- sistemas, desenvolvidos pela empresa AXELOT. Este sistema possui a funcionalidade de compressão, que visa unir estoques dispersos de produtos em uma única célula comum. Vale ressaltar que a funcionalidade de compressão nesse sistema inclui também outras capacidades, como a correção do posicionamento dos produtos nas células de acordo com suas classes ABC, mas não abordaremos esses pontos.
Ao analisar o código do sistema "1C: Empresa 8. WMS Logística. Gestão de Armazém 4" (que nesta parte da funcionalidade é aberto), pode-se concluir o seguinte. O algoritmo de compressão de resíduos implementa uma lógica linear bastante primitiva e não há como falar de uma compressão "otimizada". Evidentemente, ele não prevê a clusterização de lotes. Vários clientes que tiveram esse sistema implementado reclamaram dos resultados do planejamento de compressão. Por exemplo, frequentemente na prática, ao realizar a compressão, surgia a situação em que 100 unidades de estoque de um determinado item eram planejadas para serem movidas para outro local onde havia 1 unidade, embora o ideal em termos de economia de tempo fosse fazer o contrário.
Da mesma forma, a funcionalidade de compressão de resíduos de produtos nas posições é anunciada em muitos sistemas estrangeiros, sistemas WMS, trabalham na indústria de logística de armazém ou produção, além de programadores que se interessam pelas aplicações da matemática nos negócios e otimização de processos na empresa.-mas, infelizmente, não temos nem avaliações reais sobre a eficácia do funcionamento dos algoritmos (isso é um segredo comercial), nem uma ideia da profundidade de sua lógica (software proprietário com código fechado), portanto, não podemos julgar.
Busca de um modelo matemático para o problema
Para projetar algoritmos de qualidade para a resolução do problema, é necessário primeiro formular esse problema de maneira clara e matemática, o que faremos.
Existem muitas posições
, nas quais estão os resíduos de um determinado produto. Daqui em diante, chamaremos essas posições de posições-doadoras. Denotemos
o volume do produto que está na posição
$.
É importante mencionar que, no procedimento de compressão, pode participar apenas um produto de um único lote, ou de vários lotes, previamente agrupados em um cluster (leia-se ), o que é devido à particularidade de armazenamento e arrumação dos produtos. Para produtos diferentes ou diferentes clusters de lotes, deve ser iniciada uma sua própria e separada procedimento de compressão.
Existem muitas posições
, nos quais os resíduos das posições-doadoras podem ser potencialmente colocados. Chamaremos essas posições de posições-conteiner. Podem ser tanto posições livres no armazém quanto posições-doadoras de um conjunto
. Sempre um conjunto
é um subconjunto
.
Para cada posição
do conjunto
foram estabelecidas restrições de capacidade
, medidos em dm³. Um dm³ representa um cubo com lados de 10 cm. A produção armazenada no armazém é suficientemente grande, portanto, neste caso, essa discretização é mais do que adequada.
Dada uma matriz das menores distâncias
em metros entre cada par de células
, onde
e
pertencem a conjuntos
e
respectivamente.
Denotemos
os 'custos' de movimentação de produtos da célula
para a célula
. Denotemos
os 'custos' de selecionar um contêiner
para mover os restos de outras células. Como e em quais unidades de medida os valores serão calculados
e
veremos adiante (veja a seção preparação dos dados de entrada), por enquanto, é suficiente dizer que tais grandezas serão diretamente proporcionais às quantidades
e
respectivamente.
Denotemos através de
uma variável que assume o valor 1, se os restos da célula
são movidos para o contêiner
, e 0 caso contrário. Denotemos através de
uma variável que assume o valor 1, se o contêiner
contém restos do produto, e 0 caso contrário.
A tarefa é formulada da seguinte maneira: é necessário encontrar um conjunto de contêineres
e assim 'anexar' as células doadoras aos contêineres, de modo a minimizar a função

sob restrições

Assim, durante o cálculo da solução do problema, buscamos:
- em primeiro lugar, economizar espaço de armazenamento;
- em segundo lugar, economizar o tempo dos estoquistas.
A última restrição significa que não podemos mover produtos para um contêiner que não foi escolhido, e, consequentemente, não 'incorremos em custos' pela sua escolha. Essa restrição também significa que o volume de produtos movidos das células para o contêiner não deve exceder a capacidade do contêiner. Consideraremos a solução do problema como um conjunto de contêineres
e métodos de anexação das células doadoras aos contêineres.
Essa formulação do problema de otimização não é nova e foi estudada por muitos matemáticos desde o início dos anos 80 do século passado. Na literatura estrangeira, existem 2 problemas de otimização com um modelo matemático apropriado: e (sobre as diferenças das tarefas, falaremos mais adiante). Vale ressaltar que, na literatura matemática, a formulação dessas duas tarefas de otimização é feita em termos de localização de empresas no território, daí o nome 'Localização de Instalações'. Em grande parte, isso é uma questão de tradição, pois a necessidade de resolver tais problemas combinatórios surgiu da área de logística, principalmente da indústria militar nos anos 50 do século passado. Em termos de localização de empresas, esses problemas são formulados assim:
- Há um conjunto finito de cidades onde é potencialmente possível localizar empresas de produção (daqui em diante chamadas de cidades-producers). Para cada cidade-producer, são especificados os custos de abertura de uma empresa nela, assim como a limitação em relação à capacidade de produção da empresa que será aberta.
- Há um conjunto finito de cidades onde, de fato, estão os clientes (daqui em diante chamadas de cidades-clientes). Para cada cidade-cliente, é especificado o volume de demanda pelo produto. Para simplificar, vamos considerar que o produto que é produzido pelas empresas e consumido pelos clientes é o mesmo.
- Para cada par de cidade-producer e cidade-cliente, é especificado o valor dos custos de transporte para entregar o volume necessário de produto do produtor para o cliente.
É necessário encontrar em quais cidades abrir empresas e como vincular os clientes a essas empresas, de modo que:
- Os custos totais de abertura das empresas e os custos de transporte sejam mínimos;
- O volume de demanda dos clientes vinculados a alguma empresa aberta não exédia a capacidade de produção dessa empresa.
Agora vale a pena mencionar a única diferença entre essas duas tarefas clássicas:
- Single-Source Capacitated Facility Location Problem – o cliente é atendido apenas por uma única empresa aberta;
- Multi-Source Capacitated Facility Location Problem – o cliente pode ser atendido por várias empresas abertas ao mesmo tempo.
Essa distinção entre as duas tarefas, à primeira vista, parece insignificante, mas, na verdade, leva a uma estrutura combinatória completamente diferente dessas tarefas e, como consequência, a algoritmos de solução também completamente diferentes. A diferença entre as tarefas é demonstrada na figura abaixo.

Fig.3. a) Multi-Source Capacitated Facility Location Problem

Fig.3. b) Single-Source Capacitated Facility Location Problem
Ambas as tarefas
-são difíceis, ou seja, não existe um algoritmo exato que resolva tal problema em tempo polinomial em relação ao tamanho dos dados de entrada. Em termos mais simples, todos os algoritmos exatos para resolver o problema funcionarão em tempo exponencial, embora possam ser mais rápidos do que uma busca exaustiva. Dado que o problema
-é difícil, vamos considerar apenas heurísticas aproximadas, ou seja, algoritmos que calcularão soluções que são consistentemente muito próximas das ótimas e que funcionarão de forma suficientemente rápida. Se houver interesse em tais problemas, você pode encontrar uma boa visão geral em russo aqui.
Se traduzirmos isso para a terminologia do nosso problema de compressão ótima de produtos em células, temos:
- cidades-clientes – são células-doadoras
com os estoques remanescentes, - cidades-produtoras – são células-conteineres
, nas quais se propõe colocar os restos de outras células, - custos de transporte – custos de tempo
do operador de armazém para mover o volume de produto da célula-doadora
para a célula-conteiner
; - custos de abertura de empresa – custos de escolha do container
, iguais ao volume da célula-conteiner
, multiplicado por um certo coeficiente de economia de volumes livres (o valor do coeficiente é sempre > 1) (ver seção preparação dos dados de entrada).
Depois que a analogia com os clássicos problemas de entrega foi traçada, é importante responder a uma pergunta crucial, que condiciona a escolha da arquitetura do algoritmo de solução: a movimentação de restos da célula-doadora é possível em apenas um único contêiner (Single-Source) ou é possível a movimentação de restos para várias células-conteineres (Multi-Source)?
Vale a pena notar que, na prática, ambas as formulações do problema são válidas. Vamos apresentar todos os "prós" e "contras" para cada uma dessas formulações abaixo:
| Opção do problema | Prós da opção | Contras da opção |
|---|---|---|
| Single-Source | Operações de movimentação de produtos calculadas por esta opção do problema:
| |
| Multi-Source | As compressores calculadas para esta variante de tarefa são geralmente mais compactas em 10-15% em comparação com as compressores calculadas para a variante "Single-Source". Mas também notamos que quanto menor a quantidade de estoques nas células doadoras, menor é essa diferença de compactação. | Operações de movimentação de produtos calculadas por esta opção do problema:
|
Tabela 1. Prós e contras das variantes Single-Source e Multi-Source.
Uma vez que a quantidade de prós da variante Single-Source é maior, além do fato de que quanto menor a quantidade de restos nas células doadoras, menor é a diferença na compactação entre as duas variantes de tarefa, nossa escolha recaiu sobre a variante Single-Source.
Vale a pena mencionar que a solução da variante Multi-Source também é válida. Existem muitos algoritmos eficazes para sua solução, a maioria dos quais se resume a resolver uma série de problemas de transporte. Há também algoritmos não apenas eficazes, mas elegantes, como
Preparação dos dados de entrada
Antes de começarmos a análise e o desenvolvimento do algoritmo para resolver a tarefa, é necessário decidir quais dados e de que forma iremos fornecê-los como entrada. Não há problemas com os volumes de estoques de produtos nas células-doadoras e a capacidade das células-conteineres, uma vez que isso é trivial - esses valores serão medidos em m3, mas os custos de uso da célula-conteiner e a matriz de custos de movimentação são mais complicados!
Primeiro, vamos considerar o cálculo custo de movimentação de mercadorias da célula-doadora para a célula-conteiner. Primeiro, é necessário decidir em quais unidades de medida iremos calcular os custos de movimentação. As duas opções mais óbvias são metros e segundos. Contar os custos de movimentação em "metros limpos" é sem sentido. Vamos mostrar isso com um exemplo. Suponha que a célula
está situada no primeiro nível, a célula
está a 30 metros de distância e está localizada no segundo nível:
- Mover de
em
é mais caro do que mover de
em
, pois descer do segundo nível (1,5-2 metros do chão) é mais fácil do que subir para o segundo, mesmo que a distância percorrida seja a mesma; - Mover 1 unidade de mercadoria da célula
em
será mais fácil do que mover 10 unidades da mesma mercadoria, embora a distância percorrida seja a mesma.
Os custos de movimentação devem ser melhor considerados em segundos, pois isso permite levar em conta tanto a diferença nos níveis quanto a diferença na quantidade de mercadorias movidas. Para contabilizar os custos de movimentação em segundos, devemos dividir a operação de movimentação em componentes elementares e medir o tempo gasto em cada uma dessas componentes.
Suponha que da célula
movem-se
unidades de mercadoria para o recipiente
. Suponha que
é a velocidade média de movimentação do trabalhador no armazém, medida em m/s. Suponha que
e
são as velocidades médias para a execução das operações de pegar e colocar, respectivamente, para um volume de mercadoria igual a 4 dm3 (volume médio que o funcionário pega de uma só vez ao realizar as operações no armazém). Suponha que
e
são as alturas das células das quais as operações de pegar e colocar são realizadas, respectivamente. Por exemplo, a altura média do primeiro nível (chão) é de 1 m, o segundo nível 2 m e assim por diante. Então, a fórmula para calcular o tempo total para realizar a operação de movimentação
é a seguinte:

Na Tabela 2, estão estatísticas sobre o tempo de execução de cada operação elementar, coletadas pelos funcionários do armazém, considerando a especificidade das mercadorias armazenadas.
| Nome da operação | Símbolo | Valor médio |
|---|---|---|
| Velocidade média de movimentação do trabalhador no armazém | ![]() | 1,5 m/s |
| Velocidade média para a execução de uma operação de colocar (para um volume de mercadoria 4 dm3) | ![]() | 2,4 seg |
Tabela 2. Tempo médio para a execução das operações de armazém
Com a forma de cálculo dos custos de movimentação definida, agora precisamos entender como calcular os custos para a escolha da célula-conteinerAqui tudo é muito mais complicado do que os custos de movimentação, pois:
- em primeiro lugar, os custos devem estar diretamente relacionados ao volume da célula - o mesmo volume de itens a serem movidos de células doadoras é melhor colocado em um contêiner menor do que em um grande, desde que esse volume se encaixe totalmente em ambos os contêineres. Assim, minimizando os custos totais na escolha dos contêineres, buscamos economizar a capacidade de armazém "deficitária" na área de seleção, para realizar as operações subsequentes de colocação dos produtos nas células. Na figura 4 são demonstradas as opções de movimentação de itens em contêineres grandes e pequenos e as consequências dessas opções de movimentação durante a execução das operações de armazém subsequentes.
- Em segundo lugar, como precisamos minimizar os custos totais na solução do problema original, que é a soma tanto dos custos de movimentação quanto dos custos de escolha dos contêineres, os volumes das células em metros cúbicos precisam de alguma forma estar alinhados com segundos, o que não é trivial.

Fig. 4. Opções de movimentação de itens para contêineres de diferentes capacidades.
Na figura 4, a quantidade de itens que já não cabe mais no contêiner na segunda etapa da colocação dos produtos é mostrada em vermelho.
Os seguintes requisitos para as soluções computacionais da tarefa ajudarão a correlacionar metros cúbicos de custos na escolha do contêiner com segundos de custos de movimentação:
- É necessário que os itens da célula doadora sejam movidos para a célula contêiner em todos os casos, se isso reduzir o número total de células-contêiner onde o produto está localizado.
- É necessário manter um equilíbrio entre os volumes dos contêineres e os custos de tempo de movimentação: por exemplo, se na nova opção de solução do problema em comparação com a opção anterior houver um grande ganho de volume, enquanto a perda de tempo for pequena, deve-se escolher a nova opção.
Começaremos pelo último requisito. Para concretizar a palavra ambígua "equilíbrio", fizemos uma pesquisa com os funcionários do armazém a fim de descobrir o seguinte. Suponha que haja uma célula contêiner de volume
, para a qual está programada a movimentação dos itens das células doadoras, e o tempo total dessa movimentação é igual a
. Suponha que existem várias opções alternativas para alocar a mesma quantidade de produtos das mesmas células doadoras em outros contêineres, onde cada alocação possui suas próprias avaliações.
, onde
<
e
, onde
>
.
A questão que se coloca é: qual é o ganho mínimo em volume
aceitável, dado um valor de perda de tempo.
? Поясним на примере. Изначально остатки полагалось размещать в контейнер объема 1000 дм3 (1 м3) и время на перемещение составило 70 секунд. Есть вариант размещения остатков в другой контейнер объема 500 дм3 и временем 130 секунд. Вопрос: готовы ли мы тратить еще дополнительные 60 секунд времени кладовщика на выполнение перемещения для того, чтобы сэкономить 500 дм3 свободного объема? По результатам опроса сотрудников склада была составлена следующая диаграмма.

Fig. 5. Diagrama da relação entre a economia mínima de volume aceitável e o aumento da diferença no tempo de execução da operação.
Ou seja, se os custos adicionais de tempo totalizam 40 segundos, estamos dispostos a gastá-los apenas quando o ganho em volume for de pelo menos 500 dm³. Apesar de haver uma leve não linearidade na relação, para simplificar os cálculos subsequentes, vamos assumir que a relação entre as quantidades é linear e é descrita pela desigualdade.

Na figura abaixo, consideraremos as seguintes formas de alocar produtos em contêineres.

Fig. 6. Opção (a): 2 contêineres, volume total de 400 dm³, tempo total de 150 seg.

Fig. 6. Opção (b): 2 contêineres, volume total de 600 dm³, tempo total de 190 seg.

Fig. 6. Opção (c): 1 contêiner, volume total de 400 dm³, tempo total de 200 seg.
A opção (a) de escolha dos contêineres é mais preferível do que a opção inicial, pois a desigualdade se mantém: (800-400)/10 >= 150-120, o que resulta em 40 >= 30. A opção (b) é menos preferível do que a opção inicial, pois a desigualdade não se mantém: (800-600)/10 >= 190-150, resultando em 20 >= 40. Mas a opção (c) não se encaixa nessa lógica! Vamos examinar essa opção mais de perto. Por um lado, a desigualdade (800-400)/10 >= 200-120 se aplica, portanto, a desigualdade 40 >= 80 não se mantém, o que indica que o ganho em volume não vale a grande perda de tempo.
Mas, por outro lado, nessa opção (c) não apenas reduzimos o volume total ocupado, mas também diminuímos o número de células ocupadas, o que é o primeiro de dois requisitos importantes para as soluções computacionais dos problemas citados acima. Obviamente, para que esse requisito comece a ser atendido, é necessário adicionar uma constante positiva ao lado esquerdo da desigualdade.
, sendo que essa constante deve ser adicionada apenas quando o número de contêineres diminui. Lembremos que
— é uma variável igual a 1 quando o contêiner
é escolhido, e 0 quando não é.
não selecionado. Vamos denote,
– múltiplos contêineres na solução original e
– múltiplos contêineres na nova solução. De maneira geral, a nova desigualdade será:

Transformando a desigualdade acima, obtemos

A partir disso, temos a fórmula para calcular o custo total
de alguma variante da solução do problema:

Mas agora surge a questão: qual valor deve ter essa constante
? Очевидно, что ее значение должно быть достаточно большим, для того, чтобы всегда выполнялось первое требование к решениям задачи. Можно конечно взять значение константы равное 103 или 106, но хотелось бы избежать таких «magic numbers». Если будем рассматривать специфику выполнения складских операций, мы можем вычислить несколько вполне обоснованных числовых оценок величины такой константы.
Seja
– a distância máxima entre as células do armazém de uma zona ABC, que é, neste caso, igual a 100 m. Seja
– o volume máximo de uma célula-conteiner no armazém, que é, neste caso, igual a 1000 dm3.
O primeiro método para calcular a magnitude
. Vamos considerar a situação em que há 2 contêineres no primeiro andar, nos quais já está fisicamente localizado o produto, ou seja, eles próprios são células-doadoras, e os custos de mover o produto para essas mesmas células, naturalmente, são iguais a 0. Precisamos encontrar tal valor para a constante
, para o qual seria sempre vantajoso mover os restos do contêiner 1 para o contêiner 2. Substituindo os valores
e
na desigualdade mencionada acima, obtemos:

o que implica

Substituindo os valores do tempo médio de execução das operações elementares na fórmula acima, obtemos

O segundo método para calcular a magnitude
. Vamos considerar a situação em que existem
células-doadoras de onde se planeja mover o produto para o contêiner 1. Definimos
– a distância da célula-doadora
até o contêiner 1. Também existe o contêiner 2, que já contém produtos e cujo volume permite acomodar os restos de todas
as células. Para simplificar, vamos supor que o volume do produto movido das células-doadoras para os contêineres é igual a
. É necessário encontrar tal valor para a constante
, para que a alocação de todos os restos das
células no contêiner 2 seja sempre mais vantajosa do que a alocação em diferentes contêineres:

Transformando a desigualdade, obtemos

Para "intensificar" o valor da magnitude
, tomamos que
= 0. O número médio de células que normalmente participam do procedimento de compactação de restos no armazém é igual a 10. Substituindo os valores conhecidos das magnitudes, temos o seguinte valor da constante

Pegamos o maior valor calculado para cada variante, esse será o valor da magnitude
para os parâmetros dados do armazém. Agora, para completar, escrevamos a fórmula para calcular os custos totais
para alguma solução aceitável
:

Agora, após todos os esforços titânicos para a transformação dos dados de entrada, podemos afirmar que todos os dados foram transformados para a forma necessária e estão prontos para uso no algoritmo de otimização.
Conclusão
Como a prática mostra, a complexidade e a importância da etapa de preparação e transformação dos dados de entrada para o algoritmo muitas vezes são subestimadas. Neste artigo, dedicamos muita atenção a essa etapa para mostrar que apenas dados de entrada preparados de maneira competente e de alta qualidade podem tornar as decisões calculadas pelo algoritmo verdadeiramente valiosas para o cliente. Sim, houve muitas deduções de fórmulas, mas nós o avisamos antes do corte 🙂
No próximo artigo, finalmente chegaremos ao que era o objetivo das duas publicações anteriores – o algoritmo de otimização discreta.
O artigo foi preparado por
Roman Shanguin, programador do departamento de projetos,
empresa Primeiro Bit, cidade de Chelyabinsk
Fonte: habr.com

com os estoques remanescentes,
, nas quais se propõe colocar os restos de outras células,
do operador de armazém para mover o volume de produto da célula-doadora
para a célula-conteiner
;
, iguais ao volume da célula-conteiner
, multiplicado por um certo coeficiente de economia de volumes livres (o valor do coeficiente é sempre > 1) (ver seção preparação dos dados de entrada).
em
é mais caro do que mover de
em
, pois descer do segundo nível (1,5-2 metros do chão) é mais fácil do que subir para o segundo, mesmo que a distância percorrida seja a mesma;
em
será mais fácil do que mover 10 unidades da mesma mercadoria, embora a distância percorrida seja a mesma.
