Jump to content
Sign in to follow this  
jolucab

PROGRAMAR EM JESS

Recommended Posts

jolucab

Pessoal peço desculpas colocar esta questão no POST de JAVA.

Fi-lo porque o Jess na logica de pensar as coisas parece Java.

Todavia, Pessoal, tenho muita pouca experiência em programar em JESS.

Mas quero programar uma rede de transportes onde terei diversos tipos de meios de transporte (autocarros, comboios, metro,etc), com muitas paragens de transbordos em comunm. O programa deve indicar a melhor alternativa que satisfaz o utilizador, em termos de tempo, custo e numeros de transbordos possiveis para uma determinada viagem.

Mas encontro várias complicações em fazer o transbordo. Obrigado

Todavia ja tenho as seguintes estruturas (templates), factos e algumas regras a seguir:

(deftemplate transportes

    (slot tipo)

    (slot id)

    (multislot paragens)

    (slot custo)

    (slot tempo)

)

(deffacts linhasDeMetro

    (transportes

        (tipo metropolitano)

        (id linhaAmarela)

        (paragens Odivelas SenhorRoubado Ameixoeira Lumiar

                  QuintaDasConchas CampoGrande CidadeUniversitaria

                  EntreCampos CampoPequeno Saldanha Picoas

                  MarquesDePombal Rato)

        (custo 0.75)

        (tempo 1.30)

    )

   

    (transportes

        (tipo metropolitano)

        (id linhaAzul)

        (paragens AmadoraEste Alfornelos Pontinha Carnide

                  ColegioMilitar_Luz AltoDosMoinhos Laranjeiras

                  JardimZoologico PracaDeEspanha SaoSebastiao Parque

                  MarquesDePombal Avenida Restauradores

                  Baixa_Chiado TerreiroDoPaco SantaApolonia)

        (custo 0.75)

        (tempo 1.30)

    )

   

    (transportes

        (tipo metropolitano)

        (id linhaVermelha)

        (paragens SaoSebastiao Saldanha Alameda Olaias BelaVista

                    Chelas Olivais CaboRuivo Oriente)

        (custo 0.75)

        (tempo 1.30)

    )

   

    (transportes

        (tipo metropolitano)

        (id linhaVerde)

        (paragens Telheiras CampoGrande Alvalade Roma Areeiro

                  Alameda Arroios Anjos Intendente MartimMoniz Rossio

                  Baixa_Chiado CaisDoSodre)

        (custo 0.75)

        (tempo 1.30)

    )

)

(deffacts linhaDeAutocarros

    (transportes

        (tipo autocarro)

        (id 96)

        (paragens Oriente Aeroporto EntreCampos UniversidadeCatolica

                  AvenidaJoseMalhoa PracaDeEspanha JoseMalhoa)

        (custo 0.90)

        (tempo 3.30)

)

    (transportes

        (tipo autocarro)

        (id 108)

        (paragens CampoGrande HospPulidoValente AvRainhaLeonor

  QtaConchas EstradaLinhasTorre CastanheiraMoura

  AvCarlosParedes EstacaoMusgueira EscolaAlmadaNegreiros

  Vale Castanheira EstradaSBartolomeu IgrejaCharneca

  QuintaPailepa EstradaForte Galinheiras)

        (custo 0.90)

        (tempo 3.30)

    )

    (transportes

        (tipo autocarro)

        (id 91)

        (paragens Aeroporto EntreCampos CampoPequeno AvenidaRepublica

  Saldanha Picoas AvFontesMelo MarquesDePombal AvenidaLiberdade

          Restauradores Rossio PracaComercio CaisDoSodre)

        (custo 0.90)

        (tempo 3.30)

    )

)

(deffacts linhaTransTejo

    (transportes

        (tipo TST)

        (id 435)

        (paragens Montijo AltoDasVinhas Afonsoeiro Atalaias

  SaoFrancisco Alcochete FreePort Oriente)

        (custo 2.95)

        (tempo 5.00)

    )

    (transportes

        (tipo TST)

        (id 432)

        (paragens Samuco Montijo Esteval Areas AltoDasVinhas Montanhas Atalaias

  EstradaNacional SaoFrancisco Alcochete FreePort Oriente)

        (custo 2.95)

        (tempo 5.00)

    )

)

(deffacts linhaDeComboios

    (transportes

        (tipo CP)

        (id LinhaDeSintra)

        (paragens Sintra PortelaDeSintra Algueirao Merces RioDeMouro Cacem

  Barcarena MonteAbrao QueluzBelas Amadora Damaia Benfica Campolide

  JardimZoologico EntreCampos Roma Chelas Marvila BracoDePrata Oriente)

        (custo 1.95)

        (tempo 3.30)

    )

    (transportes

        (tipo CP)

        (id LinhaDeCascais)

        (paragens Cascais MonteEstoril Estoril SaoJoao SaoPedro Parede Carcavelos

        Oeiras SantoAmaro PacoDeArcos Caxias CruzQuebrada Alges Belem

Alcantra Santos CaisDoSodre)

        (custo 1.95)

        (tempo 2.30)

    )

)

SEGUIDAMENTE TENHO OS FACTOS e alumas REGRAS:

/*

  Estrutura dos factos que representam as viagens de um determinado tipo de transporte

*/

(deftemplate viagem

    ;"Uma viagem de um meio de transporte publico"

    (slot id)

(slot origem)

    (slot destino)

    (slot custo)

(slot tempo)

    (slot maxTransbord)

)

(deffacts viagem

    (viagem

    (id 101)

        (origem Odivelas)

(destino ColegioMilitar_Luz)

(custo 1.65)

        (tempo 0.35)

(maxTransbord 1)

    )

)

(deftemplate trajectos

    (multislot transportes)

    (slot viagem)

(multislot paragemPercor)

(slot tempoPercor)

(slot custoViagem)

(slot maxTransbord)

)

ALGUMAS REGRAS FEITAS

(defrule origem

    (viagem (origem ?orig))

(transportes (id ?f)(paragens $? ?orig $?))

=>

    (assert(trajectos (paragemPercor ?orig)))

(printout t "Encontrei primeiro transporte que passa pela origem : " ?f ".")

)

(defrule destino

    (viagem (destino ?dest))

(trajectos (paragemPercor $? ?dest ?final))

(transportes (id ?f)(paragens $? ?final $? ?dest $?))

(transportes (id ?f)(paragens $? ?dest $? ?final $?))

=>

    (assert(trajectos (paragemPercor ?dest ?final ?dest)))

    (printout t "Encontrei o transporte com destino final a : " ?f ".")

)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.