예제 #1
0
파일: Program.cs 프로젝트: aaannndddyyy/IA
        static void Main(string[] args)
        {
            OtimizaMochila heuristica = new OtimizaMochila(75);

            heuristica.AddItem(new Item()
            {
                Descricao = "Lanterna", Peso = 3, Utilidade = 15
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Canivete Suíço", Peso = 1, Utilidade = 10
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Jaca", Peso = 30, Utilidade = 3
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Panela", Peso = 5, Utilidade = 15
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Carne", Peso = 10, Utilidade = 20
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Arroz", Peso = 7, Utilidade = 20
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Feijão", Peso = 8, Utilidade = 20
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Cerveja", Peso = 15, Utilidade = 8
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Mapa", Peso = 1, Utilidade = 15
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Celular", Peso = 3, Utilidade = 9
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Barraca", Peso = 8, Utilidade = 60
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Cobertor", Peso = 8, Utilidade = 25
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Jornal", Peso = 3, Utilidade = 5
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Papel Higiênico", Peso = 2, Utilidade = 14
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Carvão", Peso = 8, Utilidade = 15
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Repelente", Peso = 2, Utilidade = 5
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Vara de Pescar", Peso = 3, Utilidade = 2
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Pente", Peso = 1, Utilidade = 1
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Espelho", Peso = 1, Utilidade = 1
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Sabão", Peso = 2, Utilidade = 7
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Xampu", Peso = 4, Utilidade = 5
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Luvas", Peso = 1, Utilidade = 2
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Violão", Peso = 15, Utilidade = 4
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Fósforo", Peso = 1, Utilidade = 7
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Isqueiro", Peso = 1, Utilidade = 9
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Bússola", Peso = 2, Utilidade = 14
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Roupa", Peso = 5, Utilidade = 28
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Sapatos", Peso = 3, Utilidade = 11
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Protetor Solar", Peso = 2, Utilidade = 6
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Pratos", Peso = 5, Utilidade = 12
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Colheres", Peso = 1, Utilidade = 8
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Facas", Peso = 1, Utilidade = 13
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Binóculos", Peso = 5, Utilidade = 3
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "GPS", Peso = 5, Utilidade = 20
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Notebook", Peso = 15, Utilidade = 5
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Som", Peso = 16, Utilidade = 8
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Livro", Peso = 3, Utilidade = 3
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Corda", Peso = 5, Utilidade = 15
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Lixa Unha", Peso = 1, Utilidade = 1
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Esmalte", Peso = 1, Utilidade = 1
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Alicate", Peso = 2, Utilidade = 8
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Machado", Peso = 15, Utilidade = 50
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Linha", Peso = 1, Utilidade = 1
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Agulha", Peso = 1, Utilidade = 1
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Band Aid", Peso = 1, Utilidade = 12
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Mertiolate", Peso = 1, Utilidade = 11
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Gaze", Peso = 1, Utilidade = 13
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Perfume", Peso = 1, Utilidade = 1
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Leite", Peso = 4, Utilidade = 10
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Biscoitos", Peso = 4, Utilidade = 10
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Sucrilhos", Peso = 3, Utilidade = 7
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Bombons", Peso = 3, Utilidade = 5
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Meias", Peso = 1, Utilidade = 2
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Chapeu", Peso = 3, Utilidade = 7
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Estilingue", Peso = 1, Utilidade = 4
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Martelo", Peso = 6, Utilidade = 12
            });
            heuristica.AddItem(new Item()
            {
                Descricao = "Arame", Peso = 6, Utilidade = 15
            });


            heuristica.GerarSolucao();
            int u = 0;

            foreach (IComponente c in heuristica.Solucao.Componentes)
            {
                Item item = (Item)c;
                u += item.Utilidade;
                System.Console.WriteLine(item.Descricao + " \t\t\tPeso: " + item.Peso + " \tUtilidade: " + item.Utilidade);
            }

            System.Console.WriteLine("\n===================================================\n ");
            System.Console.WriteLine("Peso da Mochila: " + heuristica.Mochila.CapacidadeAtual);
            System.Console.WriteLine("Utilidade da Mochila: " + heuristica.Solucao.Avaliacao);

            System.Console.ReadLine();

            ConstroiQuadroHorario cqh = new ConstroiQuadroHorario();

            Horario seg12 = new Horario();

            cqh.Horarios.Add(seg12);
            Professor p1 = new Professor();

            cqh.Professores.Add(p1);

            cqh.AddRestricao(p1, seg12);

            cqh.GerarSolucao();
        }
예제 #2
0
        static void Main(string[] args)
        {/*
          * OtimizaMochila heuristica = new OtimizaMochila(75);
          * heuristica.AddItem(new Item() { Descricao = "Lanterna", Peso = 3, Utilidade = 15 });
          * heuristica.AddItem(new Item() { Descricao = "Canivete Suíço", Peso = 1, Utilidade = 10 });
          * heuristica.AddItem(new Item() { Descricao = "Jaca", Peso = 30, Utilidade = 3 });
          * heuristica.AddItem(new Item() { Descricao = "Panela", Peso = 5, Utilidade = 15 });
          * heuristica.AddItem(new Item() { Descricao = "Carne", Peso = 10, Utilidade = 20 });
          * heuristica.AddItem(new Item() { Descricao = "Arroz", Peso = 7, Utilidade = 20 });
          * heuristica.AddItem(new Item() { Descricao = "Feijão", Peso = 8, Utilidade = 20 });
          * heuristica.AddItem(new Item() { Descricao = "Cerveja", Peso = 15, Utilidade = 8 });
          * heuristica.AddItem(new Item() { Descricao = "Mapa", Peso = 1, Utilidade = 15 });
          * heuristica.AddItem(new Item() { Descricao = "Celular", Peso = 3, Utilidade = 9 });
          * heuristica.AddItem(new Item() { Descricao = "Barraca", Peso = 8, Utilidade = 60 });
          * heuristica.AddItem(new Item() { Descricao = "Cobertor", Peso = 8, Utilidade = 25 });
          * heuristica.AddItem(new Item() { Descricao = "Jornal", Peso = 3, Utilidade = 5 });
          * heuristica.AddItem(new Item() { Descricao = "Papel Higiênico", Peso = 2, Utilidade = 14 });
          * heuristica.AddItem(new Item() { Descricao = "Carvão", Peso = 8, Utilidade = 15 });
          * heuristica.AddItem(new Item() { Descricao = "Repelente", Peso = 2, Utilidade = 5 });
          * heuristica.AddItem(new Item() { Descricao = "Vara de Pescar", Peso = 3, Utilidade = 2 });
          * heuristica.AddItem(new Item() { Descricao = "Pente", Peso = 1, Utilidade = 1 });
          * heuristica.AddItem(new Item() { Descricao = "Espelho", Peso = 1, Utilidade = 1 });
          * heuristica.AddItem(new Item() { Descricao = "Sabão", Peso = 2, Utilidade = 7 });
          * heuristica.AddItem(new Item() { Descricao = "Xampu", Peso = 4, Utilidade = 5 });
          * heuristica.AddItem(new Item() { Descricao = "Luvas", Peso = 1, Utilidade = 2 });
          * heuristica.AddItem(new Item() { Descricao = "Violão", Peso = 15, Utilidade = 4 });
          * heuristica.AddItem(new Item() { Descricao = "Fósforo", Peso = 1, Utilidade = 7 });
          * heuristica.AddItem(new Item() { Descricao = "Isqueiro", Peso = 1, Utilidade = 9 });
          * heuristica.AddItem(new Item() { Descricao = "Bússola", Peso = 2, Utilidade = 14 });
          * heuristica.AddItem(new Item() { Descricao = "Roupa", Peso = 5, Utilidade = 28 });
          * heuristica.AddItem(new Item() { Descricao = "Sapatos", Peso = 3, Utilidade = 11 });
          * heuristica.AddItem(new Item() { Descricao = "Protetor Solar", Peso = 2, Utilidade = 6 });
          * heuristica.AddItem(new Item() { Descricao = "Pratos", Peso = 5, Utilidade = 12 });
          * heuristica.AddItem(new Item() { Descricao = "Colheres", Peso = 1, Utilidade = 8 });
          * heuristica.AddItem(new Item() { Descricao = "Facas", Peso = 1, Utilidade = 13 });
          * heuristica.AddItem(new Item() { Descricao = "Binóculos", Peso = 5, Utilidade = 3 });
          * heuristica.AddItem(new Item() { Descricao = "GPS", Peso = 5, Utilidade = 20 });
          * heuristica.AddItem(new Item() { Descricao = "Notebook", Peso = 15, Utilidade = 5 });
          * heuristica.AddItem(new Item() { Descricao = "Som", Peso = 16, Utilidade = 8 });
          * heuristica.AddItem(new Item() { Descricao = "Livro", Peso = 3, Utilidade = 3 });
          * heuristica.AddItem(new Item() { Descricao = "Corda", Peso = 5, Utilidade = 15 });
          * heuristica.AddItem(new Item() { Descricao = "Lixa Unha", Peso = 1, Utilidade = 1 });
          * heuristica.AddItem(new Item() { Descricao = "Esmalte", Peso = 1, Utilidade = 1 });
          * heuristica.AddItem(new Item() { Descricao = "Alicate", Peso = 2, Utilidade = 8 });
          * heuristica.AddItem(new Item() { Descricao = "Machado", Peso = 15, Utilidade = 50 });
          * heuristica.AddItem(new Item() { Descricao = "Linha", Peso = 1, Utilidade = 1 });
          * heuristica.AddItem(new Item() { Descricao = "Agulha", Peso = 1, Utilidade = 1 });
          * heuristica.AddItem(new Item() { Descricao = "Band Aid", Peso = 1, Utilidade = 12 });
          * heuristica.AddItem(new Item() { Descricao = "Mertiolate", Peso = 1, Utilidade = 11 });
          * heuristica.AddItem(new Item() { Descricao = "Gaze", Peso = 1, Utilidade = 13 });
          * heuristica.AddItem(new Item() { Descricao = "Perfume", Peso = 1, Utilidade = 1 });
          * heuristica.AddItem(new Item() { Descricao = "Leite", Peso = 4, Utilidade = 10 });
          * heuristica.AddItem(new Item() { Descricao = "Biscoitos", Peso = 4, Utilidade = 10 });
          * heuristica.AddItem(new Item() { Descricao = "Sucrilhos", Peso = 3, Utilidade = 7 });
          * heuristica.AddItem(new Item() { Descricao = "Bombons", Peso = 3, Utilidade = 5 });
          * heuristica.AddItem(new Item() { Descricao = "Meias", Peso = 1, Utilidade = 2 });
          * heuristica.AddItem(new Item() { Descricao = "Chapeu", Peso = 3, Utilidade = 7 });
          * heuristica.AddItem(new Item() { Descricao = "Estilingue", Peso = 1, Utilidade = 4 });
          * heuristica.AddItem(new Item() { Descricao = "Martelo", Peso = 6, Utilidade = 12 });
          * heuristica.AddItem(new Item() { Descricao = "Arame", Peso = 6, Utilidade = 15 });
          *
          *
          * heuristica.GerarSolucao();
          * int u = 0;
          * foreach (IComponente c in heuristica.Solucao.Componentes)
          * {
          *     Item item = (Item)c;
          *     u += item.Utilidade;
          *     System.Console.WriteLine(item.Descricao + " \t\t\tPeso: " + item.Peso + " \tUtilidade: " + item.Utilidade);
          * }
          *
          * System.Console.WriteLine("\n===================================================\n ");
          * System.Console.WriteLine("Peso da Mochila: " + heuristica.Mochila.CapacidadeAtual);
          * System.Console.WriteLine("Utilidade da Mochila: " + heuristica.Solucao.Avaliacao);
          */
         // Problema Cacheiro Viajante

            ConstroiViagem viagem = new ConstroiViagem();

            viagem.AddComponente(new Acesso("Belo Horizonte", "Salvador", 1372));
            viagem.AddComponente(new Acesso("Belo Horizonte", "Brasília", 716));
            viagem.AddComponente(new Acesso("Belo Horizonte", "Vitória", 524));
            viagem.AddComponente(new Acesso("Belo Horizonte", "São Paulo", 586));
            viagem.AddComponente(new Acesso("Belo Horizonte", "Rio de Janeiro", 434));
            viagem.AddComponente(new Acesso("Belo Horizonte", "Curitiba", 1004));
            viagem.AddComponente(new Acesso("Belo Horizonte", "Joenvile", 1301));

            viagem.AddComponente(new Acesso("Salvador", "Belo Horizonte", 1372));
            viagem.AddComponente(new Acesso("Salvador", "Brasília", 1446));
            viagem.AddComponente(new Acesso("Salvador", "Vitória", 1202));
            viagem.AddComponente(new Acesso("Salvador", "São Paulo", 1962));
            viagem.AddComponente(new Acesso("Salvador", "Rio de Janeiro", 1649));
            viagem.AddComponente(new Acesso("Salvador", "Curitiba", 2385));
            viagem.AddComponente(new Acesso("Salvador", "Joenvile", 2682));

            viagem.AddComponente(new Acesso("Brasília", "Belo Horizonte", 716));
            viagem.AddComponente(new Acesso("Brasília", "Salvador", 1446));
            viagem.AddComponente(new Acesso("Brasília", "Vitória", 1239));
            viagem.AddComponente(new Acesso("Brasília", "São Paulo", 1015));
            viagem.AddComponente(new Acesso("Brasília", "Rio de Janeiro", 1148));
            viagem.AddComponente(new Acesso("Brasília", "Curitiba", 1366));
            viagem.AddComponente(new Acesso("Brasília", "Joenvile", 1673));

            viagem.AddComponente(new Acesso("Vitória", "Belo Horizonte", 524));
            viagem.AddComponente(new Acesso("Vitória", "Salvador", 1202));
            viagem.AddComponente(new Acesso("Vitória", "Brasília", 1239));
            viagem.AddComponente(new Acesso("Vitória", "São Paulo", 882));
            viagem.AddComponente(new Acesso("Vitória", "Rio de Janeiro", 521));
            viagem.AddComponente(new Acesso("Vitória", "Curitiba", 1300));
            viagem.AddComponente(new Acesso("Vitória", "Joenvile", 1597));

            viagem.AddComponente(new Acesso("São Paulo", "Belo Horizonte", 586));
            viagem.AddComponente(new Acesso("São Paulo", "Salvador", 1962));
            viagem.AddComponente(new Acesso("São Paulo", "Brasília", 1015));
            viagem.AddComponente(new Acesso("São Paulo", "Vitória", 882));
            viagem.AddComponente(new Acesso("São Paulo", "Rio de Janeiro", 429));
            viagem.AddComponente(new Acesso("São Paulo", "Curitiba", 408));
            viagem.AddComponente(new Acesso("São Paulo", "Joenvile", 705));

            viagem.AddComponente(new Acesso("Rio de Janeiro", "Belo Horizonte", 434));
            viagem.AddComponente(new Acesso("Rio de Janeiro", "Salvador", 1649));
            viagem.AddComponente(new Acesso("Rio de Janeiro", "Brasília", 1148));
            viagem.AddComponente(new Acesso("Rio de Janeiro", "Vitória", 521));
            viagem.AddComponente(new Acesso("Rio de Janeiro", "São Paulo", 429));
            viagem.AddComponente(new Acesso("Rio de Janeiro", "Curitiba", 852));
            viagem.AddComponente(new Acesso("Rio de Janeiro", "Joenvile", 1144));

            viagem.AddComponente(new Acesso("Curitiba", "Belo Horizonte", 1004));
            viagem.AddComponente(new Acesso("Curitiba", "Salvador", 2385));
            viagem.AddComponente(new Acesso("Curitiba", "Brasília", 1366));
            viagem.AddComponente(new Acesso("Curitiba", "Vitória", 1300));
            viagem.AddComponente(new Acesso("Curitiba", "São Paulo", 408));
            viagem.AddComponente(new Acesso("Curitiba", "Rio de Janeiro", 852));
            viagem.AddComponente(new Acesso("Curitiba", "Joenvile", 300));

            viagem.AddComponente(new Acesso("Joenvile", "Belo Horizonte", 1301));
            viagem.AddComponente(new Acesso("Joenvile", "Salvador", 2682));
            viagem.AddComponente(new Acesso("Joenvile", "Brasília", 1673));
            viagem.AddComponente(new Acesso("Joenvile", "Vitória", 1597));
            viagem.AddComponente(new Acesso("Joenvile", "São Paulo", 705));
            viagem.AddComponente(new Acesso("Joenvile", "Rio de Janeiro", 1144));
            viagem.AddComponente(new Acesso("Joenvile", "Curitiba", 300));

            //viagem.GerarViagem("Belo Horizonte");

            viagem.GerarSolucao();
            System.Console.WriteLine("\n===================================================\n ");
            System.Console.WriteLine("\nCaixeiro Viajante\n\n ");
            foreach (Acesso a in viagem.rota.Componentes)
            {
                System.Console.WriteLine("Partida: " + a.cidPartida + "  Destino: " + a.cidDestino + "  Distancia: " + a.km + "KM");
            }

            System.Console.WriteLine("\nDistância percorrida: " + viagem.rota.kmPercorridos + "KM\n\n");


            // Problema Quadro de Horario

            ConstroiQuadroHorario quadroHorario = new ConstroiQuadroHorario();


            Horario SEG12 = new Horario("SEG12");

            quadroHorario.AddHorarios(SEG12);
            Horario SEG34 = new Horario("SEG34");

            quadroHorario.AddHorarios(SEG34);
            Horario TER12 = new Horario("TER12");

            quadroHorario.AddHorarios(TER12);
            Horario TER34 = new Horario("TER34");

            quadroHorario.AddHorarios(TER34);
            Horario QUA12 = new Horario("QUA12");

            quadroHorario.AddHorarios(QUA12);
            Horario QUA34 = new Horario("QUA34");

            quadroHorario.AddHorarios(QUA34);
            Horario QUI12 = new Horario("QUI12");

            quadroHorario.AddHorarios(QUI12);
            Horario QUI34 = new Horario("QUI34");

            quadroHorario.AddHorarios(QUI34);
            Horario SEX12 = new Horario("SEX12");

            quadroHorario.AddHorarios(SEX12);
            Horario SEX34 = new Horario("SEX34");

            quadroHorario.AddHorarios(SEX34);


            Professor P1 = new Professor("P1");

            quadroHorario.AddProfessores(P1);
            Professor P2 = new Professor("P2");

            quadroHorario.AddProfessores(P2);
            Professor P3 = new Professor("P3");

            quadroHorario.AddProfessores(P3);
            Professor P4 = new Professor("P4");

            quadroHorario.AddProfessores(P4);
            Professor P5 = new Professor("P5");

            quadroHorario.AddProfessores(P5);


            quadroHorario.AddRestricoes(P1, SEG12);
            quadroHorario.AddRestricoes(P1, TER12);
            quadroHorario.AddRestricoes(P1, QUI12);

            quadroHorario.AddRestricoes(P2, SEX34);
            quadroHorario.AddRestricoes(P2, QUI34);

            quadroHorario.AddRestricoes(P3, QUA12);
            quadroHorario.AddRestricoes(P3, QUA34);
            quadroHorario.AddRestricoes(P3, TER34);

            quadroHorario.AddRestricoes(P4, SEX34);
            quadroHorario.AddRestricoes(P4, QUI12);

            quadroHorario.AddRestricoes(P5, TER12);
            quadroHorario.AddRestricoes(P5, QUI12);
            quadroHorario.AddRestricoes(P5, QUA12);

            quadroHorario.GerarSolucao();

            System.Console.WriteLine("\n===================================================\n ");
            System.Console.WriteLine("\nQuadro de Horario\n\n ");
            foreach (Alocacao al in quadroHorario.Solucao.Componentes)
            {
                System.Console.Write("Horario: " + al.horario.ident + "  Professor: " + al.professor.nome + "\n");
            }

            System.Console.ReadLine();
        }