Algoritmo

Assim como você otimiza as suas atividades diárias o tempo todo, sem nem sequer se dar conta disso (veja o verbete otimizar), você também é dotado de algoritmos que, mesmo inconscientemente, desenvolve e usa para realizar as suas tarefas.

Estamos falando de lógica e também da receita que você usa para as coisas mais triviais como, por exemplo, tomar um banho ou consertar alguma coisa quebrada. Mas, como falamos em receita, vamos pensar em um bolo. Para começar, você tem uma série de instruções, que se iniciam pelo levantamento de todos os ingredientes. Há depois definições sobre outras etapas, que incluem misturas em determinadas quantidades, objetivos (desfazer pelotas de farinha, alcançar o ponto certo de “neve” para as claras de ovos, etc.), tempos, limpeza da sujeira feita. E fim.

Lógica tem que ver com raciocínio, com a forma coerente de conduzir o pensamento para realizar ações. A receita é a expressão desse raciocínio na forma de passo-a-passo. É o conjunto de instruções que levam a uma solução. O algoritmo é a receita.

O algoritmo não se preocupa com "o que fazer", mas sim com o passo seguinte de "como fazer".

Uma definição? Ok. Por extensão seria, de acordo com o dicionário Caldas Aulete, uma "série fixa de tarefas, ações, raciocínios etc. que, realizados passo a passo, levam a determinado resultado pretendido". Numa definição mais técnica, aplicada ao campo da informática, também do mesmo dicionário, é a "sequência finita e não ambígua de instruções computáveis que, aplicados a um conjunto de dados, conduzem à solução de um problema ou permitem realizar certa tarefa".

Se fôssemos imprimir as instruções contidas no Corte Certo, digamos, em Arial corpo 12, precisaríamos, sem dúvida, de algumas centenas de milhares de folhas de sulfite A4. Ocorre que, para um software, os passos de cada tarefa devem ser muito esmiuçados.

Na nossa receita de bolo, um dos itens pode ser: “Bata as claras em ponto de neve”. Já no passo-a-passo, o nosso algoritmo intuitivo, incluiria:

  • Vá até a geladeira
  • Abra a porta
  • Localize a fileira de ovos na parte interna da porta
  • Leve a mão direita até o último ovo da fila
  • Retire o primeiro ovo
  • Passe-o para a mão esquerda
  • Localize a fileira de ovos na parte interna da porta
  • Leve a mão direita até o último ovo da fila
  • Retire o segundo ovo
  • Passe-o para a mão esquerda
  • Localize a fileira de ovos na parte interna da porta
  • Leve a mão direita até o último ovo da fila
  • Retire o terceiro ovo
  • Feche a porta com a mão que contém o último ovo
  • Leve os ovos até a ilha central
  • Coloque-os sobre o seu tampo
  •  Vá até o armário de louças
  • Localize uma tigela

Isso sem contar a definição do que seria ponto de neve.

Essa é uma descrição narrativa, raramente utilizada na programação de computadores porque pode dar margem à ambiguidade, termo que diferencia a definição mais informal da mais técnica para algoritmo. “Neve” já é um termo de duplo sentido e tão impreciso como deixar o bolo no forno por “aproximadamente” tantos minutos.

Para minimizar essa imprecisão foram desenvolvidas diversas outras formas mais específicas de representação dos algoritmos, como a do Fluxograma e a do Pseudocódigo (também chamada de Portugol ou, ainda, português estruturado, linguagem estruturada ou pseudolinguagem).

Outra das características que definem o algoritmo é a sua finitude. Significa que o número de passos deve ser finito. Um algoritmo sempre termina.

Então como fica a ideia de que um software com as características do Corte Certo nunca fica pronto, que está em permanente evolução?

A verdade é que o problema de otimização combinatória, preocupação central dos desenvolvedores do Corte Certo, tem um domínio finito, mas é um domínio tão astronômico, que só com os recentes avanços da tecnologia, incluindo aí o grande aumento da capacidade de memória dos computadores, muitos dos algoritmos já visualizados estão sendo implementados.

Nesses casos de gigantismo do problema associado a alta complexidade, usam-se os subalgoritmos com limites de variáveis e que podem ser chamados pelo algoritmo principal, quando necessário. E então a finitude é alcançada para cada um dos escopos, separadamente, enquanto o algoritmo principal continua aberto à recepção de soluções para novos escopos.

Observe ainda que há também grande variedade de algoritmos, entre os quais os de métodos exatos, heurísticos e de aproximação.

No Corte Certo

Nem sempre os algoritmos básicos apresentados na literatura científica* levam em conta aspectos importantes para a utilização prática na indústria. Até porque vários desses pré-requisitos estão ainda sendo descobertos no dia-a-dia da produção de cada indústria. Alguns deles surgem atrelados a razões de processos de manufatura, ou seja, novas ideias que demandam novas funcionalidades ou ajustes no Corte Certo; ou por razões inovações no maquinário – máquinas de corte com características diferenciadas em relação às suas concorrentes.

Devido a isto, o Corte Certo utiliza um algoritmo heurístico híbrido desenvolvido pela própria empresa, o qual não apenas posiciona peças em uma chapa, mas também realiza a tarefa respeitando os pré-requisitos levantados diretamente no mercado numa gigantesca lista. Alguns desses pré-requisitos são mais que previsíveis, outros, nem tanto, como se pode observar nesta lista abaixo:

  • Compensa a largura de serra utilizada no corte.
  • Gira as peças ou não (para melhor aproveitamento de área) conforme a textura do material utilizado.
  • Limita o tamanho mínimo de sobras, conforme o material utilizado (Dependendo do material e método de corte, poderá não ser possível na prática cortar retalhos muito pequenos).
  • Limita o número de "fases" do plano de corte gerado, respeitando limites da máquina utilizada no corte.
  • Gera "cortes extras" no final de cada tira a ser cortada, se configurado (necessário para alguns tipos de máquinas de corte automatizadas).
  • Utiliza chapas de tamanhos diferentes (em um mesmo projeto), se necessário.
  • Utiliza retalhos armazenados, se necessário (gerados de cortes antigos).
  • Permite o uso de peças adicionais para automaticamente melhorar o rendimento do corte.
  • Permite distribuir automaticamente as fases de cortes entre mais de uma máquina de corte automatizada, possibilitando assim um melhor fluxo de trabalho (útil para grandes empresas)
  • Além de otimizar a área utilizada, minimiza também a quantidade de planos de corte diferentes gerados, para otimizar o tempo de corte)
  • Direção do primeiro corte (vertical, horizontal ou livre) ajustável (importante para alguns tipos de máquinas de corte e / ou materiais)
Precisa de ajuda?