https://github.com/arlesson-sales/knapsackproblem
Um trabalho prático feito em c++ que envolve resolver um problema de otimização conhecido como Problema da mochila. O problema consiste em levar em uma mochila os objetos que somem o maior valor possível, mas sem extrapolar sua capacidade de peso. Cada objeto possui um peso e um valor associado.
https://github.com/arlesson-sales/knapsackproblem
cpp kanpsack-problem
Last synced: 10 months ago
JSON representation
Um trabalho prático feito em c++ que envolve resolver um problema de otimização conhecido como Problema da mochila. O problema consiste em levar em uma mochila os objetos que somem o maior valor possível, mas sem extrapolar sua capacidade de peso. Cada objeto possui um peso e um valor associado.
- Host: GitHub
- URL: https://github.com/arlesson-sales/knapsackproblem
- Owner: Arlesson-Sales
- License: mit
- Created: 2025-01-10T00:04:04.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-02-13T20:33:41.000Z (over 1 year ago)
- Last Synced: 2025-04-10T00:56:42.841Z (about 1 year ago)
- Topics: cpp, kanpsack-problem
- Language: C++
- Homepage:
- Size: 17.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# 🎒 Knapsack Problem - Solução com Algoritmos Genéticos
Este repositório contém uma solução para o problema da mochila (Knapsack Problem) utilizando algoritmos genéticos. O projeto foi desenvolvido em C++ como parte do curso de programação de computadores do canal [Judson Santiago](https://www.youtube.com/@JudSan).
## Descrição do Problema
O problema da mochila consiste em selecionar um conjunto de objetos para levar em uma mochila de forma que o valor total dos objetos seja maximizado, sem exceder a capacidade de peso da mochila. Cada objeto possui um peso e um valor associado.
## 💡 Solução Proposta
A solução proposta utiliza algoritmos genéticos para encontrar a melhor combinação de objetos. A mochila é representada por um valor de 16 bits, onde cada bit `1` indica que o objeto está na mochila e cada bit `0` indica que o objeto não está.
### 📄 Estrutura do Projeto
O projeto está organizado da seguinte forma:
- **binary.h / binary.cpp**: Contém funções para manipulação de bits, como ligar/desligar bits, verificar o estado de um bit, e operações binárias AND e OR.
- **genetic.h / genetic.cpp**: Implementa as operações genéticas, como cruzamento de ponto único, cruzamento aritmético, mutação simples e mutação dupla. Também inclui a função `verifySolution` que verifica se uma solução é válida (ou seja, se o peso total não excede a capacidade da mochila).
- **main.cpp**: Contém a função principal que testa as soluções iniciais, gera novas soluções através de operações genéticas e verifica a validade das novas soluções.