+ All Categories
Home > Education > Implémentation de l’algorithme du Simplexe En Java

Implémentation de l’algorithme du Simplexe En Java

Date post: 30-Jun-2015
Category:
Upload: rached-krim
View: 3,043 times
Download: 82 times
Share this document with a friend
Description:
Implémentation de l’algorithme du Simplexe En Java
16
Implémentation de l’algorithme du Simplexe En Java Introduction Réalisation d’une application mathématique ou application de calculs scientifiques dans une durée Très fiable elle pose plusieurs difficultés. On parle ici de l’implémentation de l’algorithme du simplexe en certain langage de programmation. Mon projet consiste à implémenter l’algorithme simplexe en langage Java . nous ferons face à plusieurs difficultés surtout que les outils d’implémentation utilisés ne sont pas faciles à manipuler. L’implémentation n’est pas la seule difficulté à surmonter, il faut savoir que comment Utiliser des interfaces pour gère les itérations de calculs. Dans l’implémentation de l’algorithme du simplexe j’utilise la méthode deux phases En ce qui concerne outil le développement, j’utilise NetBeans 7.4, un outil puissant et complet compatible avec tous les calculs scientifique. 1
Transcript
Page 1: Implémentation de l’algorithme du Simplexe En Java

Implémentation de l’algorithme du Simplexe En Java

Introduction

Réalisation d’une application mathématique ou application de calculs scientifiques dans une durée Très fiable elle pose plusieurs difficultés.

On parle ici de l’implémentation de l’algorithme du simplexe en certain langage de programmation.

Mon projet consiste à implémenter l’algorithme simplexe en langage Java . nous ferons face à plusieurs difficultés surtout que les outils d’implémentation utilisés ne sont pas faciles à manipuler.

L’implémentation n’est pas la seule difficulté à surmonter, il faut savoir que comment

Utiliser des interfaces pour gère les itérations de calculs.

Dans l’implémentation de l’algorithme du simplexe j’utilise la méthode deux phases

En ce qui concerne outil le développement, j’utilise NetBeans 7.4, un outil puissant et complet compatible avec tous les calculs scientifique.

I-Partie théorique 

I-1-Algorithme Du simplexe 

1

Page 2: Implémentation de l’algorithme du Simplexe En Java

Implémentation de l’algorithme du Simplexe En Java

L'algorithme du simplexe est un algorithme de résolution des problèmes d'optimisation linéaire. Il a été introduit par George Dantzig à partir de 1947.

C'est probablement le premier algorithme permettant de minimiser une fonction sur un ensemble défini par des inégalités.

De ce fait, il a beaucoup contribué au démarrage de l'optimisation numérique. L'algorithme du simplexe a longtemps été la méthode la plus utilisée pour résoudre les problèmes d'optimisation linéaire.

Depuis les années 1985-90, il est concurrencé par les méthodes de points intérieurs, mais garde une place de choix dans certaines circonstances (en particulier si l'on a une idée des contraintes d'inégalité active en la solution).

Le nom de l'algorithme est dérivé de la notion de simplexe et a été suggéré par Motzkin. En réalité, l'algorithme n'utilise pas de simplexes, mais certaines interprétations de l'ensemble admissible du problème renvoient au concept de simplexe.

I-2-Démarrage de l’algorithme simplexe 

Pour utiliser l'algorithme du simplexe, il faut disposer d'un itéré initial qui est un sommet de l'ensemble admissible

. Nous présentons dans cette section plusieurs manières de faire face à cette exigence.

I-3-Méthode de Deux-Phases 

Comme son nom l'indique, la technique des deux phases décompose la résolution d'un problème d'optimisation linéaire en deux étapes. La

2

Page 3: Implémentation de l’algorithme du Simplexe En Java

Implémentation de l’algorithme du Simplexe En Java

phase/étape I consiste à résoudre un problème d'optimisation linéaire auxiliaire, dont on connait un sommet, par l'algorithme du simplexe. La solution de ce problème auxiliaire fournit un sommet du problème   (si  ) ou indique que ce problème n'a pas de point admissible.

Dans la phase II, on résout le problème   par l'algorithme du simplexe, à partir du sommet obtenu dans la première phase.

La phase I consiste à résoudre le problème d'optimisation linéaire suivant :

où   est la matrice diagonale définie par   si   et   sinon. On peut utiliser pour cela l'algorithme du simplexe, démarrant en  , qui est un sommet de son ensemble admissible

I-4-Méthode de grand M

Cette technique combine les phases I et II de manière à ne devoir résoudre qu'un seul problème d'optimisation linéaire, à savoir le problème

3

Page 4: Implémentation de l’algorithme du Simplexe En Java

Implémentation de l’algorithme du Simplexe En Java

Où   est prise comme dans la technique des deux phases et   est une constante choisie « suffisamment grande ». On ne connait pas a priori la valeur qu'il faut donner à   pour que le problème   soit équivalent au problème , c'est-à-dire pour qu'en une solution   du problème   on ait . Le raisonnement suivant montre pourquoi ils le seront si   est « suffisamment grand ».

On peut en effet voir le problème   comme la pénalisation exacte, au moyen de la norme , de la contrainte   dans

Ce dernier problème est équivalent à  . Dès lors, selon la théorie de la pénalisation exacte, si   est supérieur à la norme   (norme duale de la norme   pour le produit scalaire euclidien) de tout multiplicateur optimal associé à la contrainte   dans ce dernier problème, et si  , alors toute solution   du problème   sera telle que   et donc   sera solution de  .

II-Partie Réalisation 

Introduction 

La phase d’implémentation correspond à la vérification de l’algorithme Du simplexe fourni par la construction

Un modèle de test pour détecter les anomalies et les défauts afin de les corrigées et aboutir à la version définitive.

Les tests permettent la vérification des résultats de l’implémentation en testant chaque construction

4

Page 5: Implémentation de l’algorithme du Simplexe En Java

Implémentation de l’algorithme du Simplexe En Java

Le modèle de test comprend deux activités : la vérification et la validation.

La première activité consiste à évaluer le résultat s’il correspond à la spécification et la deuxième consiste à vérifier si le résultat est conforme au besoin de l’utilisateur.

Dans ce qui suit je présente les interfaces de notre système qui vont détailler le processus de développement de mon application.

II-1-Interface de démarrage 

La première interface qui correspond à démarrage d’application, est une interface qui gère une fonctionnalité d’accéder à l’application :

5

Page 6: Implémentation de l’algorithme du Simplexe En Java

Implémentation de l’algorithme du Simplexe En Java

Figure 1 : Interface de démarrage

II-2-Interface de Menu 

L’interface du menu principale permet à l’utilisateur l’accès deux différentes

Fonctionnalités de l’application.

Figure 2 : Interface de Menu

6

Page 7: Implémentation de l’algorithme du Simplexe En Java

Implémentation de l’algorithme du Simplexe En Java

Maximisation: La première fonction est la maximisation  Pour Résoudre un problème de maximisation.

Minimisation: La deuxième fonction est la minimisation  Pour Résoudre un problème de minimisation (cette partie n’est pas réalisée).

II-3-Interface de Calcule 

 A travers cette interface l’utilisateur pouvoir donner le nombre des contraintes Et des variables

Figure 3 : Interface de Calcule

II-4-Interface de Matrice

L’utilisateur recopier la matrice sur l’interface suivante

Donc on a deux variables, trois contraintes.

7

Page 8: Implémentation de l’algorithme du Simplexe En Java

Implémentation de l’algorithme du Simplexe En Java

Figure 4 : Interface de Matrice

II-5-Interface d’itérations

Cette interface affichée les itérations et pivot, variable entrante, variable sortante

Et la fonction maximum

Figure 5 : Interface de Matrice

8

Page 9: Implémentation de l’algorithme du Simplexe En Java

Implémentation de l’algorithme du Simplexe En Java

Conclusion

Ce Mini projet a été réalisé dans le cadre d’un travail personnel pour bien comprendre

Le principe de l’algorithme du simplexe et l’implémentation de cette algorithme dans un langage très fort comme « java ».

Ce travail permet d’améliorer nos connaissances sur deux choses essentiel c’est comment résoudre un problème à l’aide de l’algorithme du simplexe.

Et comme implémenter un algorithme basé sur des formules mathématiques

Les calculs à main pose des erreurs pour éviter ce problème il faut automatiser les calculs.

Mon application permet aux utilisateurs de facilité et automatisé les calculs

9

Page 10: Implémentation de l’algorithme du Simplexe En Java

Implémentation de l’algorithme du Simplexe En Java

III-Présentation de l’outil

NetBeans est un environnement de développement intégré (EDI), placé en open source par Sun en juin 2000 sous licence CDDL et GPLv2 (Common Development and Distribution License). En plus de Java, NetBeans permet également de supporter différents autres langages, comme Python, C, C++, JavaScript, XML, Ruby, PHP et HTML. Il comprend toutes les caractéristiques d'un IDE moderne (éditeur en couleur, projets multilangage, refactoring, éditeur graphique d'interfaces et de pages Web).

Conçu en Java, NetBeans est disponible sous Windows, Linux, Solaris (sur x86 et SPARC), Mac OS X ou sous une version indépendante des systèmes d'exploitation (requérant une machine virtuelle Java).

Un environnement Java Development Kit JDK est requis pour les développements en Java.

NetBeans constitue par ailleurs une plate-forme qui permet le développement

d'applications spécifiques (bibliothèque Swing (Java)). L'IDENetBeans s'appuie sur

cette plate-forme.L'IDE NetBeans s'enrichit à l'aide de plugins

1-1-Historique :

En 1997, NetBeans naît de Xelfi, un projet d'étudiants dirigé par la Faculté de mathématiques et de physique de l'Université Charles de Prague. Plus tard, une société se forme autour du projet et édite des versions commerciales de l'EDI NetBeans, jusqu'à ce qu'il soit acheté par Sun en 1999. Sun place le projet sous double licence CDDL et GPL v2 en juin de l'année suivante.

1-2-Environnement :

NetBeans est un IDE qui supporte une large variété de langages de programmation et d'outils de collaboration. Environnement de base L'environnement de base comprend les fonctions générales suivantes 2:

Configuration et gestion de l'interface graphique des utilisateurs,

10

Page 11: Implémentation de l’algorithme du Simplexe En Java

Implémentation de l’algorithme du Simplexe En Java

Support de différents langages de programmation, Traitement du code source (édition, navigation, formatage, inspection..),Fonctions d'import/export depuis et vers d'autres IDE, tels qu'Eclipse ou JBuilder,

Accès et gestion de bases de données, serveurs Web, ressources partagées,

Gestion de tâches (à faire, suivi …), Documentation intégrée.L'éditeur intégré propose des fonctions de complétion, de contrôles syntaxiques et sémantiques, d'avertissements et de conseils, de reprise de codes (« refactoring » : renommage, changement des méthodes, gestion des classes, …), de sauvegarde et reprise.

1-3-Les principaux langages supportés

Il supporte les principaux langages suivants3 :

Java (Java SE 4, Java ME 5, Java FX 6, Java EE 7), Javadoc ;

Ruby et Ruby on Rails 8: Ruby 1.9, Ruby on Rails 3, JRuby 1.4 ;Groovy et Grails 9 ;

PHP (dont les environnements Zend et Symfony) 10 ;JavaScript 11 ;

C, C++, Fortran12. Netbeans ne requiert pas l'utilisation d'un compilateur particulier. À noter le support des bibliothèques Qt. Les plates-formes supportées sont Microsoft Windows, Linux, Mac OS, Solaris 10 et OpenSolaris ;Python ;

1-4-Gestion de projet :

NetBeans supporte les principaux systèmes de gestion de versions13 : CVS, Subversion, Mercurial, ClearCase. Il intègre par ailleurs des outils collaboratifs 13 (Projet Kenai Team Server).

Il interagit avec les logiciels de gestion de bugs : Jira, Bugzilla.

Débogage et Optimisation : NetBeans comprend un profileur Java 14 (analyse des performances CPU, de la génération de charge, analyse de l'utilisation mémoire, …).Il intègre par ailleurs des outils de debogage Java15. Il peut aussi inter agir avec des debogeurs PHP (Zend, Xdebug).

1-5-Base de données :

NetBeans comprend un explorateur de bases de données 16 qui supporte toutes les

bases relationnelles pour lesquelles un connecteur JDBC existe (selon les versions

11

Page 12: Implémentation de l’algorithme du Simplexe En Java

Implémentation de l’algorithme du Simplexe En Java

des gestionnaires de bases de données): JavaDB (Derby) MySQL, PostgreSQL,

Oracle, Microsoft SQL, PointBase, jTDS, IBM Redistributable DB2, …

L'explorateur comprend un éditeur de requêtes, un gestionnaire intégré de bases de données MySQL.

1-6-Outils de construction d'applications :

Applications sur serveurs (applications Web et JAVA EE)

NetBeans supporte une importante variété d'environnements pour l'exécution

d'applications web et Java EE 17,7 : Java Server Pages (JSP), Java Server Faces(JSF), Enterprise JavaBeans (EJB 2.1, EJB 3, EJB 3.1), Apache Struts, Spring

Web MVC, Hibernate… Il supporte les standards Java EE 6, Java EE 5, J2EE 1.4, Java Persistence API (JPA 2.0), Java Servlet API.

Il permet le déploiement d'applications Java et d'Applets via Java Web Start (JNLP).

Netbeans intègre les fonctions de Hudson (Maven et projets Java SE pour Ant) et de Maven (créer, exécuter, tester et déboguer des projets Maven Apache).

1-7-Applications sur poste de travail

Il supporte le développement d'applications postes de travail (Java SE) 4, en lien avec JDK 1.1, 1.2, 1.3, 1.4, JDK 5.0 et JDK 6. Il permet l'utilisation des tests JUnit 3 et 4.

NetBeans propose un environnement graphique exploitant Swing, désigné comme Java Swing GUI Builder (ancien projet Matisse) 18. Cet environnement comporte des palettes d'outils de composition d'interfaces (composantes Swing et AWT et composantes spécifiques développées pour les projets). Il est utilisé au travers d'une interface graphique simple (choisir et positionner) qui permet de dessiner des interfaces pour les utilisateurs et de les visualiser à la volée. Le construction

d'interface graphique est conforme à JSR 296 (Swing Application Framework), et JSR 295 (technologie Beans Binding ).NetBeans supporte par ailleurs Java FX

1-8-Web Services :

NetBeans 19 propose différents outils pour l'exploitation de web services. Il supporte JAX-WS services, JAX-RS RESTful Web Services, standards JAX-RPC Web Service, SOAP et RESTful Web Services, JBI Java Business Integration, Java Architecture for XML Binding API (JAXB), Mobile Java ME Web services.

12

Page 13: Implémentation de l’algorithme du Simplexe En Java

Implémentation de l’algorithme du Simplexe En Java

Il permet l'utilisation des web services Google Maps, StrikeIron, Yahoo News Search. Il supporte par ailleurs l'intégration de services fournis par quelques acteurs clés (Google, Facebook, Yahoo, YouTube, …).

1-9-Plate-forme :

NetBeans est aussi une plateforme générique 20 pour le développement d'applications pour stations de travail (bibliothèque Swing (Java)).Elle fournit des ressources pour développer les éléments structurants de ces applications: gestion des menus, des fenêtres, configuration, gestion des fichiers, gestion des mises à jour… Des présentations détaillées sont fournies par le centre de documentation de NetBeans 21.

L'IDE NetBeans comprend toutes les ressources utiles mais il est aussi possible d'installer la plateforme séparément.Le développement d'applications sur la base de la plate-forme Netbeans consiste en la réalisation de "modules" qui s'insèrent dans la plate-forme et en étendent Dynamiquement les fonctions.

Un module est un groupe de classes Java classes, de portée variée: elle peut consister en une simple classe Java réalisant des fonctions simples (exemple: ajouter une action dans un menu pour éditer le contenu du presse papier) comme elle peut intégrer une application externe complète (exemple: Java profiling suite). Un module peut s'appliquer à l'IDE NetBeans lui-même.La réalisation des modules s'appuie sur une API normalisée 22.Un espace de partage entre développeurs est mis en place.

13


Recommended