1
Grenoble INP –Genie Industriel
G-SCOP
Université Joseph Fourier
CNRS
Stages d’excellence L2
Mathématiques Informatiques
Contribution à la réalisation d’une
plateforme WEB pour l’optimisation en
conception de produit.
Michaël LAFRASSE, étudiant en L2 mathématiques et informatiques
Maitres de stages :
Jean Bigeon
Directeur de recherche
Jean.bigeon@grenoble-inp.fr
TEL :04 76 57 49 04
Kahald Hadj-Hamou
Enseignant-chercheur-maitre
conférence
khaled.hadj-ham[email protected]
TEL :04 76 57 48 11
2
Sommaire
Introduction :...................................................3
Le langage Matlab et sa transformation en
java..................................................................3
Exemple concret :........................................3
Appelle d’un programme Matlab au sein d’un
programme java...............................................5
JAMAL .........................................................6
MatlabControl...............................................6
Conclusion, et voies d’évolutions.................6
Conclusion et avis personnel...........................7
Avis personnel...............................................7
ANNEXE .............Erreur ! Signet non défini.
3
Introduction :
Le sujet de mon stage portait sur la mise en place d’une interface web pour la gestion de
produit.
Il s’agissait de trouver une méthode de développement d’une interface web pour pouvoir
utiliser différent algorithme écrit dans différents langages.
J’ai commencé par l’étude du langage matlab et cherché une méthode afin de transformé un
programme dans ce langage en un programme java (première partie de mon rapport).
Dans un second temps, il m’a était demandé d’appeler au sein de java, un programme ecrit en
Matlab (deuxième partie de mon rapport).
Pour conclure ce rapport, je parlerais de mon ressentis, de ce que sa ma apporter.
Le langage Matlab et sa transformation en java.
Le langage MAtlab (qui m’était avant ce stage) inconnu, est très utilisé dans le monde de
l’industrie. Il permet de faire des choses assez simplement, mais est surtout très bien
documenté (ce que je vais contredire par la suite).
Il m’était demandé de traduire un algorithme Matlab en java, puis ensuite de le transformer en
servlet pour pouvoir l’utiliser sur le web.
L’utilisation d’un servlet a été la seule voie possible car le programme (transformé en JAVA)
va s’exécuter sur le serveur et le client (personne qui utilise le programme) ne verra que la
réponse. Cela permet donc à n’importe qui d’utiliser un « programme Matlab » sans avoir
Matlab sur son ordinateur.
Pour traduire les codes Matlab en java, il m’a donc fallut découvrir matlab (le langage, mais
aussi la suite de logiciel associé). Et c’est la que les problèmes ont commencé. En effet, la
documentation est très vaste, très détaillés, mais touche uniquement ou presque tout ce qui est
souvent utilisé (la programmation, la gestion de tableau, graphique, passage de parametre …
). Mais quand cela touche un point comme la transformation en servlet, la documentation est
très dure a trouvé, et n’est souvent pas officiel.
Petit a petit j’ai trouvé differente méthode, que j’ai testé par le biais d’exemple concret.
J’ai ainsi trouvé une extension de matlab permettant de faire exactement se que je cherchez :
Matlab JA Builder.
Malgrés cette extension, nous nous sommes rendu compte que ce que l’on cherchez a faire
n’était pas possible pour le moment.
Pour présenter cette impossibilité, je prefere le montrer par un exemple.
Exemple concret :
Pour commencer, ce qu’il faut savoir c’est que tous les programmes Matlab ne peuvent pas
être traduits en Servlet.
4
Il faut en effet que chaque script Matlab soit transformé en fonction. De plus, comme on peut
le voir dans le code de getMagicWebFigure.m , si l’on souhaite tracer des graphiques, il faut
utiliser la fonction webfigure, afin de transformer notre graphique en figure interactive sur le
web. Je passe rapidement sur le code matlab, car ce rapport n’est pas là pour apprendre le
matlab.
function figureOutput = getMagicWebFigure(x)
f = figure;
magicOutput = magic(x);
surf(magicOutput);
set(gcf,'Color',[1,1,1])
figureOutput = webfigure(f);
close(f);
end
L’un des algorithme que je devais essayé de traduire si cette méthode fonctionné, était un
algorithme d’optimisation. Il devait permetre de choisir la fonction d’optimisation souhaité
ainsi que les parametres.
C’est a ce niveau la que l’on est limité. En effet, si l’on souhaite afficher un graphique
représentant une fonction, il faut que la fonction soit inscrite directement dans le code Matlab.
Comme ceci
A=1 ;
B=2 ;
X=0 :0.1 :10 ;
Y=A.*x+B ;
Plot(x,y) ;
En effet si on lui passe en paramètre le A, cela ne fonctionnera pas.
Même si l’on déclare une variable interne qui prend pour valeur le paramètre:
function figureOutput = getMagicWebFigure(nb)
f = figure;
a=nb;
b=4;
5
x=0:10;
y=a.*x+b;
surf(magicOutput);
set(gcf,'Color',[1,1,1])
figureOutput = webfigure(f);
close(f);
end
Ce probleme nous a donc fait abandonner cette direction, car cela limité grandement les
possibilités.
Malgré cela, j’ai écrit un tutoriel pour mes maitres de stage expliquant la mise en place d’un
serveur web, des extensions java nécessaire, ainsi que l’explication de ce qui ne fonctionne
pas. En effet, dans les années à venir, et les évolutions du programme Matlab, ce qui nous
empêchait d’utilisé la solution trouvé ci-dessus, n’existera plus, et pourra donc être utilisé.
Nous avons, a partir de ce moment la, décidé de changer de voit de recherche. Au lieu de
partir d’un programme Matlab vers un programme java, on s’est dit que si on pouvait appeler
un programme Matlab au sein d’un programme java, il serait également possible d’appeler se
programme par le biais d’une Servlet et même peut être d’une applet. C’est ce que je vais
présenter dans la deuxième grande partie de ce rapport.
Appelle d’un programme Matlab au sein d’un programme
java.
Cette partie, que je n’ai pu complètement achever, a était la plus dure en terme de recherche.
Bien qu’en 2006, un programme java ait été intégré à matlab afin de permettre de pouvoir
appeler un programme matlab dans un programme java, l’ensemble de la documentation sur
le fonctionnement de celui-ci fut supprimé de matlab. Mais la fonctionnalité est toujours
présente. Il m’a donc fallu parcourir des centaines de sites, avant de commencer a trouvé des
piste. Finalement, j’ai pu trouver deux solutions possibles, complémentaires, et qui répondent
exactement à l’attente de mes maitres de stages et de ce qui m’avait était fixé.
1 / 32 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!