Exemplo n.º 1
0
        public void cargarEjemploColectivo()
        {
            Elemento gananciaColectivo = new Elemento("Ganancia colectivo", 2000);
            Elemento gananciaMicro = new Elemento("Ganancia microbus", 0);
            Elemento precioPasajeColectivo = new Elemento("Precio pasaje colectivo", 200);
            Elemento precioPasajeMicro = new Elemento("Precio pasaje micro", 150);
            Elemento cantidadTotalUsuarios = new Elemento("Cantidad total de usuarios", 0);
            Elemento precioPetroleo = new Elemento("Precio petróleo", 140);
            Elemento precioBencina = new Elemento("Precio bencina", 0);
            Elemento gananciaDiariaColectivero = new Elemento("Ganancia diaria colectivero", 0);

            Nivel primerNivel = new Nivel("Primer nivel");
            primerNivel.agregarElemento(gananciaDiariaColectivero);
            primerNivel.agregarElemento(new Elemento("Ganancia diaria conductor microbús", 0));
            primerNivel.agregarElemento(gananciaColectivo);
            primerNivel.agregarElemento(gananciaMicro);
            primerNivel.agregarElemento(new Elemento("Número de vueltas al día colectivo", 20));
            primerNivel.agregarElemento(new Elemento("Número de vueltas al día microbús", 10));
            primerNivel.agregarElemento(precioPasajeColectivo);
            primerNivel.agregarElemento(precioPasajeMicro);
            primerNivel.agregarElemento(cantidadTotalUsuarios);

            primerNivel.agregarRelacion(2, 0, new relacion("x", new regla(1)));
            primerNivel.agregarRelacion(3, 1, new relacion("x", new regla(1)));
            primerNivel.agregarRelacion(4, 0, new relacion("y*x", new regla(1)));
            primerNivel.agregarRelacion(5, 1, new relacion("y*x", new regla(1)));

            Nivel nivelColectivo = new Nivel("Colectivo");

            Elemento demandaColectivo = new Elemento("Demanda de clientes colectivo", 40);

            nivelColectivo.agregarElemento(precioPasajeColectivo);
            nivelColectivo.agregarElemento(precioBencina);
            nivelColectivo.agregarElemento(demandaColectivo);
            nivelColectivo.agregarElemento(gananciaColectivo);
            nivelColectivo.agregarElemento(new Elemento("Distancia recorrida", 1000));
            nivelColectivo.agregarElemento(new Elemento("Bencina ocupada", 10));
            nivelColectivo.agregarElemento(new Elemento("Perdida por desgaste", 0));
            nivelColectivo.agregarElemento(new Elemento("Perdida por reparacion", 0));
            nivelColectivo.agregarElemento(new Elemento("Desgaste (Kilometraje acumulado)", 0));

            //Relaciones
            //nivelColectivo.agregarRelacion(1, 3, new relacion("x*(6/13)", new regla(1)));
            nivelColectivo.agregarRelacion(0, 3, new relacion("x", new regla(1)));
            nivelColectivo.agregarRelacion(0, 2, new relacion("logx*(x/35)", new regla(1)));

            nivelColectivo.agregarRelacion(1, 0, new relacion("x*(6/7)", new regla(1)));
            nivelColectivo.agregarRelacion(1, 5, new relacion("x", new regla(1)));

            nivelColectivo.agregarRelacion(2, 3, new relacion("y*x", new regla(1)));
            nivelColectivo.agregarRelacion(2, 4, new relacion("x*10", new regla(1)));

            nivelColectivo.agregarRelacion(4, 5, new relacion("y*(x/14)", new regla(1)));
            nivelColectivo.agregarRelacion(4, 8, new relacion("y+x", new regla(1)));

            nivelColectivo.agregarRelacion(5, 3, new relacion("y-x", new regla(1)));

            nivelColectivo.agregarRelacion(6, 3, new relacion("y-x", new regla(1)));

            nivelColectivo.agregarRelacion(7, 3, new relacion("y-x", new regla(1)));

            nivelColectivo.agregarRelacion(8, 6, new relacion("x/15", new regla(1)));
            nivelColectivo.agregarRelacion(8, 7, new relacion("x/25", new regla(350, ">")));
            nivelColectivo.agregarRelacion(8, 8, new relacion("0", new regla(500, ">=")));

            Nivel nivelMicrobus = new Nivel("Microbus");

            Elemento demandaMicrobus = new Elemento("Demanda de clientes microbus", 0);

            nivelMicrobus.agregarElemento(precioPasajeMicro);
            nivelMicrobus.agregarElemento(precioPetroleo);
            nivelMicrobus.agregarElemento(demandaMicrobus);
            nivelMicrobus.agregarElemento(gananciaMicro);
            nivelMicrobus.agregarElemento(new Elemento("Distancia recorrida", 40));
            nivelMicrobus.agregarElemento(new Elemento("Petroleo ocupado", 200));
            nivelMicrobus.agregarElemento(new Elemento("Perdida por desgaste", 0));
            nivelMicrobus.agregarElemento(new Elemento("Perdida por reparacion", 0));
            nivelMicrobus.agregarElemento(new Elemento("Desgaste (Kilometraje acumulado)", 0));

            //Relaciones:
            //nivelMicrobus.agregarRelacion(1, 3, new relacion("x", new regla(1)));
            nivelMicrobus.agregarRelacion(0, 3, new relacion("x", new regla(1)));
            nivelMicrobus.agregarRelacion(0, 2, new relacion("logx*(x/6)", new regla(1)));

            nivelMicrobus.agregarRelacion(1, 0, new relacion("logx*(x/5)", new regla(1)));
            nivelMicrobus.agregarRelacion(1, 5, new relacion("x", new regla(1)));

            nivelMicrobus.agregarRelacion(2, 3, new relacion("y*x", new regla(1)));

            nivelMicrobus.agregarRelacion(4, 5, new relacion("y*(x/6)", new regla(1)));
            nivelMicrobus.agregarRelacion(4, 8, new relacion("y+x", new regla(1)));

            nivelMicrobus.agregarRelacion(5, 3, new relacion("y-x", new regla(1)));

            nivelMicrobus.agregarRelacion(6, 3, new relacion("y-x", new regla(1)));

            nivelMicrobus.agregarRelacion(7, 3, new relacion("y-x", new regla(1)));

            nivelMicrobus.agregarRelacion(8, 6, new relacion("x/10", new regla(1)));
            nivelMicrobus.agregarRelacion(8, 7, new relacion("x/15", new regla(350, ">")));
            nivelMicrobus.agregarRelacion(8, 8, new relacion("0", new regla(500, ">=")));

            Nivel nivelUsuario = new Nivel("Demanda usuarios");
            nivelUsuario.agregarElemento(cantidadTotalUsuarios);
            nivelUsuario.agregarElemento(demandaColectivo);
            nivelUsuario.agregarElemento(demandaMicrobus);

            nivelUsuario.agregarRelacion(1, 0, new relacion("x", new regla(1)));
            nivelUsuario.agregarRelacion(2, 0, new relacion("y+x", new regla(1)));

            Nivel petroleo = new Nivel("Indicadores economicos");

            Elemento inflacion = new Elemento("Inflación económica", 1);
            Elemento deuda = new Elemento("Deuda familiar acumulada del mes", 7000);
            Elemento gastoDiario = new Elemento("Gasto familiar diario", 6000);

            petroleo.agregarElemento(precioPetroleo);
            petroleo.agregarElemento(precioBencina);
            petroleo.agregarElemento(inflacion);
            petroleo.agregarElemento(gastoDiario);

            petroleo.agregarRelacion(0, 1, new relacion("x*(15/10)", new regla(1)));
            petroleo.agregarRelacion(0, 2, new relacion("y-2", new regla(3)));

            petroleo.agregarRelacion(1, 2, new relacion("y+4", new regla(5)));

            petroleo.agregarRelacion(2, 0, new relacion("((x/100)+1)*y", new regla(30)));
            petroleo.agregarRelacion(2, 2, new relacion("y*(-1)", new regla(0, "<", 5)));
            petroleo.agregarRelacion(2, 3, new relacion("((x/100)+1)*y", new regla(30)));

            Elemento ahorro = new Elemento("Ahorro familiar", 0);
            Nivel familiaColectivero = new Nivel("Familia colectivero");

            familiaColectivero.agregarElemento(gananciaDiariaColectivero);
            familiaColectivero.agregarElemento(gastoDiario);
            familiaColectivero.agregarElemento(ahorro);
            familiaColectivero.agregarElemento(deuda);

            familiaColectivero.agregarRelacion(0, 2, new relacion("y+x", new regla(1)));

            familiaColectivero.agregarRelacion(1, 3, new relacion("y+x", new regla(1)));

            //Si el ahorro es mayor a 120000 pesos, la familia comienza a gastar más dinero
            familiaColectivero.agregarRelacion(2, 3, new relacion("(x/20)+y", new regla(120000, ">")));

            familiaColectivero.agregarRelacion(3, 2, new relacion("y-x", new regla(30)));
            familiaColectivero.agregarRelacion(3, 3, new relacion("0", new regla(30)));

            sistema.agregarNivel(primerNivel);
            sistema.agregarNivel(nivelColectivo);
            sistema.agregarNivel(nivelMicrobus);
            sistema.agregarNivel(nivelUsuario);
            sistema.agregarNivel(petroleo);
            sistema.agregarNivel(familiaColectivero);
        }
Exemplo n.º 2
0
    public static void Main(string[] args)
    {
        /*uno=new Elemento("uno", 1);
        dos=new Elemento("dos", 2);
        Elemento tres = new Elemento("tres", 3);
        Elemento cuatro = new Elemento("cuatro", 4);

        miNivel=new Nivel("Nivel Uno");

        miNivel.agregarElemento(uno);
        miNivel.agregarElemento(dos);

        miNivel.agregarRelacion(0,1,new relacion("4*x",new regla(1)));
        miNivel.agregarRelacion(1,0, new relacion("y-x", new regla(1)));

        miNivel.agregarElemento(tres);

        miNivel.agregarRelacion(2, 0, new relacion("x/2", new regla(2)));

        Nivel nivelDos = new Nivel("Nivel dos");

        nivelDos.agregarElemento(tres);
        nivelDos.agregarElemento(cuatro);
        nivelDos.agregarRelacion(1, 0, new relacion("x^2-2", new regla(2)));
        nivelDos.agregarRelacion(0, 1, new relacion("x+1", new regla(4)));
        nivelDos.agregarRelacion(0, 0, new relacion("3", new regla(50000, ">")));

        Sistema elSistema = new Sistema();

        elSistema.agregarNivel(miNivel);
        elSistema.agregarNivel(nivelDos);

        //*/

        //Console.WriteLine(new calculos().leerFuncion("(x^2/6000)+300", 1));
        //Console.ReadKey();

        Sistema unSistema = new Sistema();

        Nivel primerNivel = new Nivel("Primer nivel");
        primerNivel.agregarElemento(new Elemento("Colectivo", 0));
        primerNivel.agregarElemento(new Elemento("Microbus", 0));
        primerNivel.agregarElemento(new Elemento("Usuario", 0));
        primerNivel.agregarElemento(new Elemento("Combustible", 0));

        Nivel nivelColectivo = new Nivel("Colectivo");

        Elemento demandaColectivo = new Elemento("Demanda de clientes colectivo", 0);

        nivelColectivo.agregarElemento(primerNivel.listaElementos[0]);
        nivelColectivo.agregarElemento(new Elemento("Precio pasaje colectivo", 200));
        nivelColectivo.agregarElemento(new Elemento("Precio Bencina", 150));
        nivelColectivo.agregarElemento(demandaColectivo);
        nivelColectivo.agregarElemento(new Elemento("Ganancia", 2000));
        nivelColectivo.agregarElemento(new Elemento("Distancia recorrida", 1000));
        nivelColectivo.agregarElemento(new Elemento("Bencina ocupada", 10));

        //Relaciones
        //nivelColectivo.agregarRelacion(1, 3, new relacion("x*(6/13)", new regla(1)));
        nivelColectivo.agregarRelacion(1, 4, new relacion("x", new regla(1)));

        nivelColectivo.agregarRelacion(2, 1, new relacion("x*(6/7)", new regla(1)));
        nivelColectivo.agregarRelacion(2, 2, new relacion("y+5", new regla(10)));
        nivelColectivo.agregarRelacion(2, 3, new relacion("x*(1/10)", new regla(1)));
        nivelColectivo.agregarRelacion(2, 6, new relacion("x", new regla(1)));

        nivelColectivo.agregarRelacion(3, 4, new relacion("y*x", new regla(1)));
        nivelColectivo.agregarRelacion(3, 5, new relacion("x*10", new regla(1)));

        nivelColectivo.agregarRelacion(5, 6, new relacion("y*(x/12)", new regla(1)));
        nivelColectivo.agregarRelacion(6, 4, new relacion("y-x", new regla(1)));

        Nivel nivelMicrobus = new Nivel("Microbus");

        Elemento demandaMicrobus = new Elemento("Demanda de clientes microbus", 0);

        nivelMicrobus.agregarElemento(primerNivel.listaElementos[1]);
        nivelMicrobus.agregarElemento(new Elemento("Precio pasaje", 150));
        nivelMicrobus.agregarElemento(new Elemento("Precio petróleo", 140));
        nivelMicrobus.agregarElemento(demandaMicrobus);
        nivelMicrobus.agregarElemento(new Elemento("Ganancia", 0));
        nivelMicrobus.agregarElemento(new Elemento("Distancia recorrida", 1000));
        nivelMicrobus.agregarElemento(new Elemento("Petroleo ocupado", 200));

        //Relaciones:
        //nivelMicrobus.agregarRelacion(1, 3, new relacion("x", new regla(1)));
        nivelMicrobus.agregarRelacion(1, 4, new relacion("x", new regla(1)));

        nivelMicrobus.agregarRelacion(2, 1, new relacion("x*(4/7)", new regla(1)));
        nivelMicrobus.agregarRelacion(2, 2, new relacion("y+(48/10)", new regla(10)));
        nivelMicrobus.agregarRelacion(2, 3, new relacion("x*(1/10)", new regla(1)));
        nivelMicrobus.agregarRelacion(2, 6, new relacion("x", new regla(1)));

        nivelMicrobus.agregarRelacion(3, 4, new relacion("y*x", new regla(1)));
        nivelMicrobus.agregarRelacion(3, 5, new relacion("100", new regla(1)));

        nivelMicrobus.agregarRelacion(5, 6, new relacion("y*(x/12)", new regla(1)));
        nivelMicrobus.agregarRelacion(6, 4, new relacion("y-x", new regla(1)));

        Nivel nivelUsuario = new Nivel("Demanda usuarios");
        nivelUsuario.agregarElemento(primerNivel.listaElementos[2]);
        nivelUsuario.agregarElemento(demandaColectivo);
        nivelUsuario.agregarElemento(demandaMicrobus);

        //nivelUsuario.agregarRelacion(1, 2, new relacion("y-x/100", new regla(1)));

        unSistema.agregarNivel(primerNivel);
        unSistema.agregarNivel(nivelColectivo);
        unSistema.agregarNivel(nivelMicrobus);
        unSistema.agregarNivel(nivelUsuario);

        while (true)
        {
            Console.Clear();
            unSistema.iterar();
            unSistema.imprimirSistema();
            Console.WriteLine(unSistema.obtenerEstado() + "\n");
            System.Threading.Thread.Sleep(1000);
        }

        /*
        for(int j=0; j<elSistema.valores.Count;j++){
            for(int k=0; k< elSistema.valores[j].Count;k++){
                Console.Write(elSistema.valores[j][k]+ " ");
            }
            Console.WriteLine();
        }*/
    }