Química Programada -Adaptação do algoritmo de pesquisa linear para pré-seleção de solventes com múltiplos critérios fisico-químicos em JavaScript

Seções

1. Introdução

Na postagem Pré-seleção de solventes por temperatura de ebulição usando pesquisa linear em JavaScript, foi apresentado na introdução, o algoritmo da pesquisa linear em detalhes. Depois foi apresentada uma versão modificada do algoritmo em sua versão mais elementar, a fim de implementar uma rotina que fizesse a seleção de solventes de um dicionário em função de sua temperatura de ebulição, gerando uma lista com os compostos que seriam adequados para uma dada aplicação em uma temperatura específica.

Agora, nessa postagem, vamos implementar um código que seja capaz de realizar a escolha de solventes em um dicionário em função de mais de uma parâmetro fisico-químico da substância.

2. Apresentação do problema

Imagine que você trabalha em uma empresa que comercializa diferentes solventes orgânicos. Abaixo na Tabela 1 está a lista dos produtos comercializados com seus pontos de ebulição e seu ponto de fulgor. Você recebe com frequência a demanda de selecionar os solventes em função de sua temperatura de ebulição e também, que não sejam inflamáveis ou que não sejam inflamáveis nem combustíveis. Você gostaria de automatizar essa escolha para evitar de ter de fazê-la manualmente na tabela abaixo.

Tabela 1. Temperatura de ebulição e ponto de fulgor de solventes orgânicos
Solvente Temperatura de ebulição (°C) Ponto de fulgor (°C)
Acetona 56,1 -17
Butilglicol 171,2 65,5
Butildiglicol 230,6 105
Etildiglicol 202,7 91
Etilglicol 135,1 43
Etilenoglicol 197,6 116
Dietilenoglicol 245,8 124
Tolueno 110,5 4,4
Xileno 140 31
Hexano 68,7 -35
Acetato de butilglicol 191,6 74
Acetato de isopentila 142 34
Isoforona 215,2 84,4
Acetato de etila 77,2 -3
Diisobutil cetona 169,3 49
Isopentanol 131,4 42,7
Isopropanol 82,4 12
n-Propanol 97,2 15

O critério de classificação de solventes em inflamáveis ou combustíveis que você deve aplicar é a NR-20:

Dessa forma, temos que fazer uma adaptação novamente do algoritmo de pesquisa linear para que faça escolha em função de critérios múltiplos. Esse algoritmo modificado é apresentado na seção a seguir.

3. Adaptação do algoritmo para pré-seleção por múltiplos critérios

Para a implementação do algoritmo, primeiramente teremos que ter uma estrutura de dados que irá descrever o conjunto de solventes apresentado na Tabela 1. Agora não temos apenas um valor associado a cada substância, mas duas propriedades. A estrutura de dados que deve ser utilizada é um dicionário implementado como um objeto JavaScript aninhado. Cada chave do dicionário é uma string que representa o nome de um solvente. O valor associado a cada chave não é um valor simples, mas sim outro objeto, que contém as propriedades físico-químicas do solvente, como a temperatura de ebulição (Teb) e o ponto de fulgor (Tfulgor). Não foi possível apresentar o dicionário completo na Figura 1, mas apenas uma parte devido ao seu tamanho.

Dicionario aninhado
Figura 1: Dicionário aninhado de solventes.

Para resolver o problema, o novo algoritmo deverá realizar as seguintes tarefas : percorrer a estrutura de dados do tipo dicionário aninhado na qual a chave seja o nome dos solventes associada a duas propriedades (temperatura de ebulição e ponto de fulgor), fazer a comparação do tipo " > (maior) " entre a temperatura de ebulição de cada solvente do dicionário e a temperatura da aplicação do cliente, fazer a comparação do tipo " > (maior) " entre o ponto de fulgor e os critérios de classificação de fluido inflamável ou fluido combustível segundo critérios da NR 20, gerar como saída um array de strings dos solventes selecionados segundo os múltiplos critérios.

Na Figura 2 é apresentado o algoritmo da pesquisa linear que classifica segundo os dois critérios. Para armazenar a lista de strings que representam os solventes selecionados, foi criado um array inicializado vazio chamado resultado. Depois foi feito um laço for(let chave in solventes) que percorre todas as posições do dicionário. O comando solventes[chave].Teb acessa a propriedade temperatura de ebulição que está no segundo objeto do dicionário, e compara o valor com a Toper (temperatura de aplicação do cliente que é entrada do algoritmo). Já o comando solventes[chave].Tfulgor acessa a propriedade temperatura de fulgor que também está no segundo objeto do dicionário e faz a comparação com a TfulgorMin que vem da aplicação do critério de líquido inflamável ou combustível segundo a NR 20. Os dois critérios são aplicados simultaneamente, por isso são ligados por um operador && (AND booleano). Se algum solvente atende aos dois critérios, sua chave é armazenada no array resultado.

Na segunda parte do algoritmo é verificado se o comprimento do array resultado é igual a 0. Caso positivo, é impresso que nenhum solvente foi encontrado. Caso negativo, é impresso o array resultado com a lista dos solventes que podem ser pré-selecionados para a aplicação.

Pesquisa linear multipla
Figura 2: Algoritmo da pesquisa linear por múltiplos critérios.

Na Figura 3 são apresentadas as saídas do algoritmo para as tempraturas Toper=100 °C e TfulgorMin=60 °C (selecionando líquidos que não sejam inflamáveis) e Toper=100 °C e TfulgorMIN=93 °C (selecionando líquidos que não sejam nem inflamáveis nem combustíveis). Esse algoritmo não exclui uma análise mais completa incluindo compatibilidade, toxicidade entre outros critérios. É um exemplo simples de como automatizar decisões preliminares de engenharia de processo.

Saída pesquisa linear multipla
Figura 3: Saída do algoritmo pesquisa linear por múltiplos critérios.

4. Referências

logo2
Imagem gerada a partir de fotos do desenvolvedor do site modificadas com o Copilot e ChatGPT.

Desenvolvimento : Química Programada