Coder Social home page Coder Social logo

paulohepimentel / genetic-knapsack Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 55 KB

Implementation of a meta-heuristic based on genetic algorithms applied to the famous Knapsack problem 0/1

License: MIT License

Java 100.00%
genetic-algorithm heuristic-algorithms knapsack01 knapsack-problem

genetic-knapsack's Introduction

Logo

Projeto    |    Problema    |    Algoritmos Genéticos    |    Estrutura da entrada

✦ Projeto

O trabalho teve como objetivo a implementação prática de uma meta-heurística baseada em algoritmos genéticos, aplicada ao famoso problema da Mochila 0/1.

✦ Problema

O problema da Mochila 0/1 (0/1 Knapsack Problem) possui as algumas características interessantes, nesse famoso problema cada ítem pode ser escolhido no máximo uma vez. O objetivo é escolher a melhor combinação possível, ou seja, a que alcance o maior somatório de valor dos itens

✦ Algoritmos Genéticos

O funcionamento de algoritmos genéticos consiste em tratar as possíveis soluções de um problema como "indivíduos" de uma "população", que irá "evoluir" a cada iteração ou "geração". Para isso é necessário construir um modelo de evolução onde os indivíduos sejam soluções de um problema. Os passos do algoritmo são os seguintes:

  • Representação das possíveis soluções do problema no formato de um código genético;
  • População inicial que contenha uma diversidade de modo a permitir ao algoritmo combinar características e produzir novas soluções;
  • Existência de um método para medir a qualidade de uma solução potencial;
  • Um procedimento de combinação de soluções para gerar novos indivíduos na população;
  • Um critério de escolha das soluções que permanecerão na população ou que serão retirados desta;
  • Um procedimento para introduzir periodicamente alterações em algumas soluções da população.

O algoritmo é executado enquanto houver uma melhora da função objetivo (alcançar a melhor combinação de itens). Foi definido como critério de parada do algoritmo o encerramento após três iterações sem melhora de resultados.

✦ Estrutura da entrada

A estrutura do arquivo de entrada é a seguinte:

  • Primeira linha: Número de itens | Capacidade da mochila
  • Demais linhas do arquivo: Valores | pesos dos itens

O projeto foi desenvolvido, para fins didáticos, durante a disciplina de Meta-heurística do curso de Bacharelado em Ciência da Computação da UFV – Campus Florestal

genetic-knapsack's People

Contributors

paulohepimentel avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.