Problema da mochila no Excel VBA - Macros fáceis do Excel

Índice

Abaixo, veremos um programa em Excel VBA que resolve uma pequena instância de um problema de mochila.

Definição: Dado um conjunto de itens, cada um com um peso e um valor, determine os itens a serem incluídos em uma coleção de forma que o valor total seja o maior possível e o peso total seja menor que um determinado limite. Seu nome deriva do problema enfrentado por alguém que é restringido por uma mochila de tamanho fixo e deve enchê-la com os itens mais úteis.

Exemplo: 5 itens com pesos, valores e limite conforme fornecidos.

No Excel, esse problema é o seguinte:

1. Primeiro, declaramos cinco variáveis ​​do tipo Double com os nomes limit, weight, value, totalWeight e maximumValue.

Dim limit As Double, weight As Double, value As Double, totalWeight As Double, maximumValue As Double

2. Em seguida, declaramos cinco variáveis ​​do tipo Inteiro com nomes i, j, k, l, m.

Dim i, j, k, l, m como inteiro

3. Inicializamos duas variáveis. Inicializamos o limite da variável com o valor da célula D6. Inicializamos a variável maximumValue com valor 0.

limite = intervalo ("D6"). valor
maximumValue = 0

4. A seguir, verificamos cada solução possível. Podemos incluir um item (1) ou omitir (0). Começamos 5 loops For Next. Um para cada item.

Para i = 0 a 1
Para j = 0 a 1
Para k = 0 a 1
Para l = 0 a 1
Para m = 0 a 1

5. Calculamos o peso e o valor de uma possível solução.

peso = 12 * i + 2 * j + 1 * k + 1 * l + 4 * m
valor = 4 * i + 2 * j + 2 * k + 1 * l + 10 * m

6. Somente se o valor for maior que o valor máximo e o peso for menor que o limite, encontramos uma nova solução melhor.

Se valor> valor máximo e peso <= limite Então

7. Se verdadeiro, escrevemos a nova solução na linha 4, peso em peso total e valor em valor máximo.

Intervalo ("B4"). Valor = i
Intervalo ("C4"). Valor = j
Intervalo ("D4"). Valor = k
Intervalo ("E4"). Valor = l
Intervalo ("F4"). Valor = m
totalWeight = peso
maximumValue = value

8. Não se esqueça de fechar a instrução If.

Fim se

9. Não se esqueça de fechar os loops 5 For Next.

 Próximo m
Próximo l
Próximo k
Próximo j
Proximo eu

O Excel VBA verifica cada solução possível dessa maneira e, como resultado, a solução ideal aparecerá na linha 4. Lembre-se, 1 significa que incluímos um item, 0 significa que o deixamos de fora.

10. Finalmente, escreva totalWeight e maximumValue da solução ótima para as células B6 e B8, respectivamente.

Intervalo ("B6"). Valor = peso total
Intervalo ("B8"). Valor = valor máximo

11. Teste o programa.

Resultado:

Conclusão: o ideal é incluir os quatro últimos itens com valor máximo de 15. Esta solução com peso total de 2 + 1 + 1 + 4 = 8 não ultrapassa o limite de 15.

Nota: ao tornar os pesos e valores variáveis ​​você pode resolver qualquer problema de mochila deste tamanho (veja arquivo Excel para download).

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave