Robots virtuels – Lisp

Robots virtuels – Surveillance d’incendie

Le projet que nous allons présenter est une simulation sous Clisp d’une surveillance incendie, a l’aide de robots dans un environnement virtuel, créé sous Linux.
On suppose qu’il y a des voies dans lesquelles les robots se déplacent, le reste étant des blocs. L’incendie sera initialise sur une voie quelconque. Et on suppose de plus que les blocs et les robots ne sont pas détruits au cours de l’incendie.
L’objectif du projet est de créer des comportements pour les robots afin qu’ils puissent détecter automatiquement les incendies. Pour cela, ceux qui voient un incendie vont être mis en mode « alarme », et parmi les autres, ceux qui voient les robots en alarme vont les suivre. Ceux qui ne les voient pas resteront en mode « surveillance ».
Pour améliorer l’efficacité de la surveillance, nos robots vont se fuir des qu’ils se croisent (s’ils ne voient pas d’incendie).
L’alarme générale va se déclencher et nous allons « appeler les pompiers » lorsqu’il y a 4 robots en état alarme. Ainsi, chaque robot aura différents états possibles : surveiller, fuir, suivre, être en alarme. Nous allons donner un ordre de priorité pour ces états mais cela sera détaillé dans le pdf d’explications ci-joint.

Domineering avec GDL

Modelisation du Domineering, inspiree de GDL

GDL (Game Description Language) est un langage de modélisation de jeu. Ce langage est particulièrement adapte pour modéliser les jeux intelligents, ainsi que la création des joueurs automatiques.
Cependant, nous n’allons pas écrit directement en GDL, mais en inspirer.
Au niveau syntaxique, GDL ressemble beaucoup à Lisp. Mais son fonctionnement se rapproche de Prolog, avec des prédicats, règles, conclusions, etc.

Modélisation d’un système d’information

La société “Canard Dodu” a pour principale activité la fabrication et la commercialisation de produits alimentaires de haut de gamme. Il s’agit d’une société qui a connu une importante période de développement, durant laquelle elle a pu installer plusieurs autres agences en France en plus de son siège social et de sa cuisine centrale, tout deux situent en Ile-de-France.
La société est donc dans une excellente situation financière. Cependant, son système d’information n’a pas pu s’adapter a son rythme de croissance, et manque donc de fiabilité.
Dans le cadre de ce projet, nous allons réaliser les missions suivantes :
• Réaliser l’audit du système d’information (SI) de la société
• MOA operationnelle
• MOE
Le projet a pour but de recenser les informations existantes de l’entreprise, de diagnostiquer ses différents dysfonctionnements, et de proposer les orientations possibles.

Prolog Interpreter

Prolog is a general purpose programming logic language often associated with artificial intelligence. It’s a declarative language: the program logic is expressed in terms of relations, represented as facts and rules. A computation is initiated by running a query over these relations.
Prolog is less popular compared to other languages such as C or Java, because its way of coding is quite different from imperative programming. However, it remains powerful in some computing fields, such as expert systems.
In this project we’ve built an interpreter for Prolog, developed entirely in Java.
The resolution method used is called SLD resolution (Selective Linear Definite clause resolution), which is the basic inference rule used in logic programming. This main operation – the resolving algorithm – is included in our code source.
However, we haven’t written all of the Prolog’s commands, such as loops.
We added finally a graphical interface for users, also written in Java.

Database Social Network

A social network PostgreSQL Database

The goal of this project is to create a SQL database for a social network. For this we used the database management system PostgreSQL, which will be implementing via the development tool PgAdmin III.
4 main agents of the network are: user, user’s friends, publisher of an article, commentator(s) of an article.
In the document below (Download) we’ll give some examples of n-tuples in tables of the database. We also wrote some SQL requests to extract informations of the network, which are inserted in Utilisateur.sql.
The database must respect some constraints, such as the visibility of a publication, or the access and comment rights for an article. For example, an user can only read its own publications and those of their friends… We used Triggers and functions in PL/pgSQL to control these rights.

Shell Unix

Ce projet consiste a ecrire un shell Unix simple permettant d’effectuer certaines commandes de bases.
Nous traiterons tout d’abord des commandes simples, et puis des commandes plus complexes (redirections,..etc).
Nous ne traiterons pas les tubes et le ‘&’.
Pour faire executer ces commandes, nous allons utiliser le fichier analex.h que vous trouverez en pieces jointes, ainsi que d’autres bibliotheques necessaires.

Explications

Fonction executer : pid_t executer(int desc0, int desc1, char* argv)
On cree un processus fils avec fork() qui va executer la commande, alors que le processus pere retourne le PID. La fonction executer prend en arguments deux descripteurs desc0 et desc1 qui seront determines par la fonction commande. Ils sont tous initialises au depart a -1 mais apres la fonction commande, l’un d’entre eux va devenir positif (il contient la valeur renvoyee par l’appel de open ). Celui qui change de valeur va mener l’execution de la commande grace a execvp (le tableau argv en argument stocke le contenu de la commande).
On duplique ensuite le descripteur et ferme le fichier pointe par le descripteur.

Fonction commande : TOKEN commande(pid_t* pid)
On declare un tableau argv qui stocke les token au fur et a mesure du deroulement du programme (on suppose que le nombre de token ne depasse jamais 1000). On declare aussi les descripteurs decrits plus haut, ainsi qu’une variable debut qui va nous donner la position sur le tableau argv du token correspondant au debut d’une commande. Cette variable sera surtout utile lorsqu’on traitera les commandes complexes.
Pour une commande quelconque entree au clavier par l’utilisateur, le programme va lire token par token grace a la fonction getToken definie dans le fichier analex.h. Ensuite nous avons des cas differents selon la nature de chaque token.