Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

kaja

Para o meu TCC

Recommended Posts

Pessoal, sei que muitos aqui vao achar estranho, mas eu preciso de 1 ajuda sobre a logica de 1 programa que eu preciso fazer para meu TCC.

 

Vou explicar como o programa funciona : Existe 1 chapa de 7x7 mt

 

Eu preciso cortar essa chapa em varias partes nas medidas que eu decidir.

 

ex : 7 pecas de 45x65 cm

3 pecas de 35x70 cm

 

 

etc, o programa calcularia as pecas na chapa, fazendo com que tenha o maior aproveitamento possivel.

 

PS : o corte, tem q ser guilhotinado, ou seja, corte de fora-a-fora, tipo assim :

 

Imagem Postada

 

 

-O Objetivo, é calcular a ordem, e quais peças devem ser cortadas primeiro, para que haja 1 melhor aproveitamento da chapa, e caso seja necessario,

a ultilizaçao de outra chapa ou a armazenagem da mesma para futura reaproveitação.

 

- Nao há limite de peças para ser calculado, o usuario pode colocar de 1 ate X peças, de acordo com sua necessidade, quando 1 chapa for totalmente ultilizado, o programa pega outra chapa para coontinuar o corte

 

- Tanto a chapa quanto as peças tem suas medidas editaveis, o usuario escolhe o tamanho e quantidade das peças.

 

 

 

Outro exemplo de Corte Guilhotinado, como deveria ser feito pelo programa :

 

Veja 1 novo exemplo bem simples abaixo, como ficaria o corte com as seguintes peças :

 

Tamanho da placa : 4x4 mt

Pecas :

3 - 1,0 x 1,5 mt

4 - 0,5 x 0,5 mt

 

Imagem Postada

 

 

 

 

Espero que nao esteja muito confuso para voces, caso alguem tenha alguma duvida, poste que eu respondo rapidamente.

 

 

PS : So lembrando o pessoal, eu nao quero que ninguem faca o programa, nem codigos, a unica coisa que eu gostaria, seria 1 ajuda para desenvolver 1 algoritimo para o calculo das peças na chapa, onde a prioridade seja o melhor aproveitamento possivel da chapa.

 

 

 

 

Abracos a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara sinceramente num entendi nd...

c você puder exemplificar ao maximo ajudara bastante na compreensão :S

 

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, sei que muitos aqui vao achar estranho, mas eu preciso de 1 ajuda sobre a logica de 1 programa que eu preciso fazer para meu TCC.

 

Vou explicar como o programa funciona : Existe 1 chapa de 7x7 mt

 

Eu preciso cortar essa chapa em varias partes nas medidas que eu decidir.

 

ex : 7 pecas de 45x65 cm

3 pecas de 35x70 cm

 

 

etc, o programa calcularia as pecas na chapa, fazendo com que tenha o maior aproveitamento possivel.

 

PS : o corte, tem q ser guilhotinado, ou seja, corte de fora-a-fora, tipo assim :

 

Imagem Postada

 

 

-O Objetivo, é calcular a ordem, e quais peças devem ser cortadas primeiro, para que haja 1 melhor aproveitamento da chapa, e caso seja necessario,

a ultilizaçao de outra chapa ou a armazenagem da mesma para futura reaproveitação.

 

- Nao há limite de peças para ser calculado, o usuario pode colocar de 1 ate X peças, de acordo com sua necessidade, quando 1 chapa for totalmente ultilizado, o programa pega outra chapa para coontinuar o corte

 

- Tanto a chapa quanto as peças tem suas medidas editaveis, o usuario escolhe o tamanho e quantidade das peças.

 

 

 

Outro exemplo de Corte Guilhotinado, como deveria ser feito pelo programa :

 

Veja 1 novo exemplo bem simples abaixo, como ficaria o corte com as seguintes peças :

 

Tamanho da placa : 4x4 mt

Pecas :

3 - 1,0 x 1,5 mt

4 - 0,5 x 0,5 mt

 

Imagem Postada

 

 

 

 

Espero que nao esteja muito confuso para voces, caso alguem tenha alguma duvida, poste que eu respondo rapidamente.

 

 

PS : So lembrando o pessoal, eu nao quero que ninguem faca o programa, nem codigos, a unica coisa que eu gostaria, seria 1 ajuda para desenvolver 1 algoritimo para o calculo das peças na chapa, onde a prioridade seja o melhor aproveitamento possivel da chapa.

 

 

 

 

Abracos a todos.

Amigo,

 

Isto é um problema de otimização, se você não teve uma matéria específica sobre o assunto, o negócio é partir para a força bruta (tentativa e erro)

 

 

Coisas importantes a serem consideradas:

 

- Antes de mais nada, testar se a área total das chapas a serem produzidas é menor do que a área da chapa "mãe";

 

- Testar via while com controle de loop máximo e sempre guardar o posicionamento de menor área das chapas cortadas;

 

- o Controle de tentativas é previssível é 2*n! onde n é quantidade de chapas a serem produzidas;

 

- Pensar na forma como você vai armazenar a posição das chapas, eu utilizaria sistema cartesiano;

 

Depois trocamos mais informaçãoes.

 

Abraço e boa sorte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kenishi Vlw amigo, dicas muito ulteis, vou tentar aplicar isso que voce me passou.

 

Caso mais alguem tenha dicas ou sugestoes, pode postar ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

Temos que pensar como, mas voce pode aplicar conceitos de inteligencia artificial para buscar uma boa solução.

Creio que um método heurístico seja sulficiente para achar uma solução.

 

http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado kandadre, vou fazer 1 pesquisa no google sobre oque é método heurístico, para entender melhor oque voce disse !

 

 

Abracos a todos, e continuem dando sugestoes e dicas ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em poucas palavras e aplicado ao que voce quer:

 

Como o amigo acima disse voce pode buscar uma solução através de tentativa e erro.

Imagine um algoritmo que teste várias soluções para o problema.

Imagine também que voce tenha um modelo, por exemplo: digamos que a solução que deixará voce satisfeito seja uma que sobre 5% ou menos de material.

 

Tendo em vista isso, voce pode atribuir uma nota para cada solução encontrada.

Imagine uma lista ordenada por notas de soluções.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao entendi oque voce quis dizer agora kandre, poderia explicar direito ?

Ele sugeriu que você guarde todos os resultados e depois busque o que tiver menos perda.

 

Pode ser tbm, mas se você calcular a perda e perguntar se é menor do que a perda anterior você não precisará guardar todos.

 

O sugerido por ele é de implementação mais simples

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguem poderia me explicar, oque seria e como posso aplicar o método heurístico ?

 

Pelo que eu andei lendo, seria 1 tipo de inteligencia artificial, essa informação procede ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

depois de ler alguns artigos e tudo mais, eu consegui fazer um algoritimo pra distribuir as pecas, porem, ainda nao consegui desenvolver o algoritimo para o criterio de seleção, sobre qual peca vai primeiro e tal, caso alguem tenha alguma ideia por favor poste ae !

Compartilhar este post


Link para o post
Compartilhar em outros sites

depois de ler alguns artigos e tudo mais, eu consegui fazer um algoritimo pra distribuir as pecas, porem, ainda nao consegui desenvolver o algoritimo para o criterio de seleção, sobre qual peca vai primeiro e tal, caso alguem tenha alguma ideia por favor poste ae !

Eu sinceramente não li toda a descrição do seu problema, mas como os colegas aí já disseram se tratar de um problema de busca e otimização... Dependendo do tamanho da entrada, é possível que o espaço de busca seja muito grande. Por exemplo, se o seu problema consite em encontrar uma ordenação, estamos falando de permutações. O número de permutações possíveis para uma seqüência de tamanho N é N! ("fatorial de N"). Por exemplo, se N = 3, e R = {A, B, C} é um conjunto de rótulos para os objetos de interesse do seu problema, então há 3! = 6 permutações possíveis, a saber: ( A, B, C ), ( A, C, B ), ( B, A, C ), ( B, C, A ), ( C, A, B ) e ( C, B, A ). Caso N seja 16, o número de permutações é da ordem de 10 bilhões. Caso o seu problema consista de "apenas" 100 peças, esse número ultrapassa enormemente a quantidade estimada de átomos no universo visível! Isso significa que nenhum método de força bruta será capaz de resolver o seu problema em tempo hábil. Até mesmo para o caso de N = 16, supondo generosamente que o programa consiga testar uma permutação a cada 0,001 segundos, se você fizer as contas, irá ver que o computador pode demorar cerca de 320 anos para encontrar a melhor resposta.

 

 

Assim, dependendo das características do seu problema (isto é, do tamanho da entrada), aconselho fortemente que você utilize buscas evolutivas, que são técnicas de Computação Evolutiva (CE) para resolver problemas com essa característica (espaço de busca muito grande). Em geral, não há muitos bons materiais sobre o assunto escritos em português, mesmo assim, vale a pena se familiarizar com o assunto em http://pt.wikipedia.org/wiki/Algoritmo_gen%C3%A9tico . Sugiro fortemente os slides de aula do meu professor da cadeira de CE: http://www.dei.unicap.br/~taef/ (clique no menu C.E. em 'Disciplinas'). Essas aulas são baseadas em um excelente livro "Introduction to Evolutionary Computing (Natural Computing Series)" de A.E. Eiben e J.E. Smith, disponível em http://www.amazon.com/Introduction-Evoluti...l/dp/3540401849 .

 

Espero ter ajudado em algo. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Agora, me responda uma pergunta básica, qual o seu curso?

 

Abraços!

 

-- Carlos Renato B. Azevedo

-- Bacharelando em Ciência da Computação

-- Universidade Católica de Pernambuco

Compartilhar este post


Link para o post
Compartilhar em outros sites

depois de ler alguns artigos e tudo mais, eu consegui fazer um algoritimo pra distribuir as pecas, porem, ainda nao consegui desenvolver o algoritimo para o criterio de seleção, sobre qual peca vai primeiro e tal, caso alguem tenha alguma ideia por favor poste ae !

Eu sinceramente não li toda a descrição do seu problema, mas como os colegas aí já disseram se tratar de um problema de busca e otimização... Dependendo do tamanho da entrada, é possível que o espaço de busca seja muito grande. Por exemplo, se o seu problema consite em encontrar uma ordenação, estamos falando de permutações. O número de permutações possíveis para uma seqüência de tamanho N é N! ("fatorial de N"). Por exemplo, se N = 3, e R = {A, B, C} é um conjunto de rótulos para os objetos de interesse do seu problema, então há 3! = 6 permutações possíveis, a saber: ( A, B, C ), ( A, C, B ), ( B, A, C ), ( B, C, A ), ( C, A, B ) e ( C, B, A ). Caso N seja 16, o número de permutações é da ordem de 10 bilhões. Caso o seu problema consista de "apenas" 100 peças, esse número ultrapassa enormemente a quantidade estimada de átomos no universo visível! Isso significa que nenhum método de força bruta será capaz de resolver o seu problema em tempo hábil. Até mesmo para o caso de N = 16, supondo generosamente que o programa consiga testar uma permutação a cada 0,001 segundos, se você fizer as contas, irá ver que o computador pode demorar cerca de 320 anos para encontrar a melhor resposta.

 

 

Assim, dependendo das características do seu problema (isto é, do tamanho da entrada), aconselho fortemente que você utilize buscas evolutivas, que são técnicas de Computação Evolutiva (CE) para resolver problemas com essa característica (espaço de busca muito grande). Em geral, não há muitos bons materiais sobre o assunto escritos em português, mesmo assim, vale a pena se familiarizar com o assunto em http://pt.wikipedia.org/wiki/Algoritmo_gen%C3%A9tico . Sugiro fortemente os slides de aula do meu professor da cadeira de CE: http://www.dei.unicap.br/~taef/ (clique no menu C.E. em 'Disciplinas'). Essas aulas são baseadas em um excelente livro "Introduction to Evolutionary Computing (Natural Computing Series)" de A.E. Eiben e J.E. Smith, disponível em http://www.amazon.com/Introduction-Evoluti...l/dp/3540401849 .

 

Espero ter ajudado em algo. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Agora, me responda uma pergunta básica, qual o seu curso?

 

Abraços!

 

-- Carlos Renato B. Azevedo

-- Bacharelando em Ciência da Computação

-- Universidade Católica de Pernambuco

 

 

 

Muito obrigado pela sua contribuicao amigo.

 

Respondendo a sua pergunta, eu estou cursando ciencias da computacao na unip de sao jose do rio preto - sp

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.