Intégration d'un langage de modélisation algébrique (LMA) dans AROM Michel Page - présentation équipe Arom 7 juin 1999
Objectifs de l'exposé Expliquer ce qu'est un LMA Montrer comment un LMA peut être introduit dans un contexte objet
Plan de l'exposé Introduction: Qu'est-ce qu'un LMA ? Modélisation dans un LMA: l'exemple d'AMIA Proposition d'un LMA pour Arom
Introduction: qu'est-ce qu'un LMA ? Principe de base: exploiter les notations algébriques utilisées en maths
Notations algébriques langage mathématique d'écriture de systèmes d'équations et/ou de contraintes variables et expressions indicées variables et expressions ensemblistes opérateurs itérés: et , …
Utilisation des LMA introduits en RO pour la prog. linéaire et non-linéaire (AMPL, GAMS, SML, …) ex AMPL: {i in I}: X[i] = sum {j in I diff {i}} X[i,j]*Y[j] utilisés en simulation: AMIA récemment utilisés dans les langages de prog. par contraintes (Newton, OPL) similarité avec les langages prédicatifs à variables domaine utilisés dans les SGBD relationnels
Intérêts des LMA permettent de représenter le numérique aussi bien que le symbolique les variables et les expressions ne sont pas indicées numériquement, mais symboliquement déclaratif: chaque équation et/ou contrainte forme un corpus de connaissances indépendant expressif: pouvoir d'expression comparable à la logique des prédicats mais avec des variables quantifiées sur des domaines finis
Plan de l'exposé Introduction: Qu'est-ce qu'un LMA ? Modélisation avec un LMA: l'exemple d'AMIA Proposition d'un LMA pour Arom
Un exemple sur un marché existent un certain nombre de produits P1, P2, …, Pn de deux types: T1 et T2 pour les années qui suivent, il est prévu: une croissance annuelle de 10 % de la demande de chaque produit de type T1 produits de type T2: 20 % de la demande globale parts de marché identiques
LMA dans AMIA Rappels: AMIA est un environnement pour la simulation à base de connaissances AMIA n'est pas OO 5 niveaux de représentation de connaissances dans AMIA: atomes domaines variables équations contraintes
Atome objet distinguable du monde réel représenté par un symbole ex: P1, P2, P3…, T1, T2, @1999, @2000, …
Domaine ens. fini d'atomes ayant une significations, des propriétés et un comportement commun exemples: TYPES = {T1,T2} PRODUITS = {P1,P2,P3,...} T = {@1999,@2000,@2001,...} note: le temps est un domaine 2 rôles: indicer les variables co-domaine: ens. dans lequel une variable peut prendre ses valeurs
Variable fonction discrète (partielle ou totale) sur un ens. de domaines Di : v: D1 D2 ... Dn D* (x1, x2, ..., xn) v(x1, x2, ..., xn) D* est un domaine (variable mono-valuée) ou l'ens des parties d'un domaine (variable multi-valuée) un indice: propriété partagée par les atomes d'un domaine exemple: TYPE(PRODUITS) TYPES plusieurs indices: relation entre les atomes de plusieurs domaines exemple: DEMANDE(PRODUITS,T) REEL
Equation Elles sont de la forme: où: x11(D1) x22(D2) ... xnn(Dn): v(x1, x2,..., xn) = expr où: i(Di) : sous-ensemble du domaine Di xi : variables muettes appelées index expr : expr. de calcul bâtie à partir de: constantes (numériques ou atomes) et variables fonctions et op. num., logiques, atomiques, ensemblistes opérateurs itérés: somme, produit, moyenne, ... expressions conditionnelles
Equations (suite) Exemples: Similitude avec des clauses de Horn Forme (rappel): x11(D1) x22(D2) ... xnn(Dn): v(x1, x2,..., xn) = expr Exemples: variable DEMANDE_TOT(T) REEL t dans T: DEMANDE_TOT(t) = somme(p dans PRODUITS: DEMANDE(p,t)) variable DEMANDE(PRODUITS,T) REEL p dans PRODUITS: DEMANDE(p, @1999) = 2000 p dans PRODUITS, t dans T- {@1999}: DEMANDE(p,t) = si TYPE (p) = T1 alors 1.1 * DEMANDE(p,t-1) sinon 0.2*DEMANDE_TOT(t) / / card( {p' dans PRODUITS: TYPE (p')=T2} ) Similitude avec des clauses de Horn
Equations (fin) Forment des systèmes d'équations simultanées aux différences Sémantique d'AMIA: recherche des points fixes de
Contraintes Relation entre les variables du modèles exemple: p dans PRODUITS, t dans T: DEMANDE_TOT(t) >= DEMANDE(p,t) pas utilisées de manière active dans AMIA
Résumé: caractéristiques du LMA dans AMIA variables à valeur symbolique et ensembliste variables indicées symboliquement équations symboliques + numériques variables et opérateurs itérés
Plan de l'exposé Introduction: Qu'est-ce qu'un LMA ? Modélisation dans un LMA: l'exemple d'AMIA Proposition d'un LMA pour Arom
Conclusion Nombreuses applications traitées dont certaines de taille très importante mise en évidence de l'intérêt du formalisme de représentation choisi et des algo associés mais: nécessité de structurer les domaines nécessité de structurer les hypothèses
Analogies entre AMIA et Arom
Exemple On suppose: pour un permanent: salaire = indice * 20 pour un vacataire: salaire = somme des montants par les quantités de vacations effectuées
Description en AMIA VACATAIRES = {V1, V2,V3} PERMANENTS = {P1,P2,P3} VACATIONS = {VA1,VA2, VA3} SALAIRE(PERMANENTS) REEL p dans PERMANENTS: SALAIRE(p) = indice(v) * 20 QUANTITE(VACATAIRES,VACATIONS) ENTIER MONTANT(VACATIONS) REEL SALAIRE(VACATAIRES) REEL v dans VACATAIRES: SALAIRE(v) = somme(vac dans VACATIONS: QUANTITE(v,vac) * MONTANT(vac))
Rôles du LMA en Arom langage d'écriture des équations définissant les variables de classes et de relation langage de requête langage de contraintes
Définition de variables en Arom class: Vacation variables: variable: montant type: float class: Employé variable: salaire class: Permanent super-class: Employé variable: index type: integer class: Vacataire super-class: Employé variables: variable: salaire definition: sum(e in Effectue:e.quantité * e.vacation.montant) relation: Effectue roles: role: vacataire type:Vacataire role: vacation type: Vacation variable: quantité type: integer
Problème de la notation des variables en AMIA: notation fonctionnelle VAR(x,y) en Arom ? dans la plupart des systèmes 00, notation pointée obj.var La notation pointée convient pour un seul indice Pb 1: le temps salaire(Employe,T). Comment noter le salaire de l'employé e à l'instant t ? e.salaire[t] ou salaire[e,t] Pb 2: les variables de relation: relation: A … role: c1 type: C1 role: c2 type: C2 ... variable: x definition: c1.a1 + c2.a2 ou c1 dans C1, c2 dans C2: x[c1,c2] = ...
Langage de requête requête: similaire à une variable mais sa valeur n'est pas conservée son type est quelconque filtres de classes et de relations: définissent en compréhension un sous ens. d'éléments
Exemples de requête class: Employé variables: variable: salaire type: float queries: query: pauvre definition: salaire < 2000 filters: filter: toto set-base: Employé member(self, {toto,lulu,bibi}) filter: riches salaire > 10000
Langage de contraintes 2 types de contraintes: contraintes de variable: prédicat unire sur une variable contrainte sur une classe ou une relation
Exemples de contraintes class: Employé variables: variable: statut type: string variable: salaire type: float constraint: salaire >= 0
Problèmes en suspens le temps classifier pour calculer les variables et calculer les variables pour classifier extensibles, les types. Quid du LMA ?