Programmation linéaire

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Programmation linéaire

Message non lu par GM » jeu. 6 mai 2010, 06:33

GM a écrit :Personnellement, je peux bricoler vite fait une fonction qui trace une droite et hachure un côté...
... mais le temps nécessaire pour pondre quelque chose d'un peu plus chiadé (comme pour les graphes), je ne l'aurai pas avant le bac.

Je viens de me réveiller avec une idée de façon de faire... d'une difficulté intermédiaire : j'essaierai cela cet après-midi après mes cours.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Zaf
Messages : 56
Enregistré le : mer. 17 mars 2010, 07:11

Re: Programmation linéaire

Message non lu par Zaf » jeu. 6 mai 2010, 14:10

Bonjour,
Tu n'étais certainement pas bien réveillé ce matin, vu le message cité... :lol:
Mais moi j'ai réfléchi au cahier des charges du programme pour la programmation linéaire.
En entrée :
Une matrice 4 colonnes et n lignes, les trois premières colonnes désignant les coefficients des n inéquations et les n éléments de la dernière colonne appartenant à l'ensemble {EG, SI, SS, IE, SE} pour désigner les inégalités utilisées dans les n inéquations : a, b, c, SI désignerait ax+by+c>=0....
Un paramètre pour imposer le choix de hachurer ou pas le demi-plan solution. (peut-être aussi des paramètres pour la couleur...)
Un triplé (A, B, C)pour la fonction économique f(x,y)=Ax+By, où c=-1 pour rendre minimale, c=+1 pour rendre maximale la fonction économique.
En sortie
Représentation graphique du système, le ou les points (x_o , y_o) solutions
des droites Ax+By=K, notamment pour la (les) valeur optimale de K.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Programmation linéaire

Message non lu par GM » jeu. 6 mai 2010, 17:05

Un premier jet brouillon ... sûrement avec plein de bogues... mais qui pourra peut-être dépanner en attendant que je trouve du temps raisonnable à lui consacrer.

gm_programmation_lineaire.asy

Figure asymptote 57419901b21df259040d4379296b028f
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import gm_programmation_lineaire;
  2. size(400);
  3. VWindow Fenetre = VWindow(xmin=-3, xmax=21,
  4. ymin=-3, ymax=15);
  5.  
  6. DemiPlan dp1=DemiPlan("$D_1$",line(1,0,-4),"SE",1bp+blue),
  7. dp2=DemiPlan("$D_2$",line(0,1,-5),"SE",1bp+red),
  8. dp3=DemiPlan("$D_3$",line(1,1,-17),"I",1bp+green),
  9. dp4=DemiPlan("$D_4$",line(9,21,-250),"IE");
  10.  
  11. DemiPlan[] dps={dp1,dp2,dp3,dp4};
  12.  
  13. // S.P.L. : Situation de Programmation Linéaire
  14. SPL spl=SPL(Fenetre,dps);
  15.  
  16. draw(spl);


Code : Tout sélectionner

import gm_programmation_lineaire;
size(400);

VWindow Fenetre = VWindow(xmin=-3, xmax=21,
                          ymin=-3, ymax=15);
                
DemiPlan dp1=DemiPlan("$D_1$",line(1,0,-4),"SE",1bp+blue),
         dp2=DemiPlan("$D_2$",line(0,1,-5),"SE",1bp+red),
         dp3=DemiPlan("$D_3$",line(1,1,-17),"I",1bp+green),
         dp4=DemiPlan("$D_4$",line(9,21,-250),"IE");

DemiPlan[] dps={dp1,dp2,dp3,dp4};
      
// S.P.L. : Situation de Programmation Linéaire
SPL spl=SPL(Fenetre,dps);

draw(spl);
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Zaf
Messages : 56
Enregistré le : mer. 17 mars 2010, 07:11

Re: Programmation linéaire

Message non lu par Zaf » jeu. 6 mai 2010, 20:53

Merci infiniment et bravo pour ta rapidité !!
La sortie est géniale, mais malheureusement je n'ai pas pu compiler, j'ai les erreurs :

Code : Tout sélectionner

C:\Program Files\Asymptote/gm_programmation_lineaire.asy: 93.27: no matching variable 'OmitTickIntervals'
C:\Program Files\Asymptote/gm_programmation_lineaire.asy: 94.27: no matching variable 'OmitTickIntervals'

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Programmation linéaire

Message non lu par GM » jeu. 6 mai 2010, 20:57

Zaf a écrit :La sortie est géniale, mais malheureusement je n'ai pas pu compiler, j'ai les erreurs :

Code : Tout sélectionner

C:\Program Files\Asymptote/gm_programmation_lineaire.asy: 93.27: no matching variable 'OmitTickIntervals'
C:\Program Files\Asymptote/gm_programmation_lineaire.asy: 94.27: no matching variable 'OmitTickIntervals'

Ta version d'Asymptote n'est pas à jour.

r4832 | jcbowman | 2010-03-21 22:35:06 -0600 (Sun, 21 Mar 2010) | 2 lines
Changed paths:
M /trunk/asymptote/base/graph.asy
M /trunk/asymptote/doc/asymptote.texi
M /trunk/asymptote/examples/odetest.asy

Add more predefined tick modifiers.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Zaf
Messages : 56
Enregistré le : mer. 17 mars 2010, 07:11

Re: Programmation linéaire

Message non lu par Zaf » jeu. 6 mai 2010, 21:04

Ok, je vais la mettre à jour de suite.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Programmation linéaire

Message non lu par GM » jeu. 6 mai 2010, 21:06

Zaf a écrit :... à l'ensemble {EG, SI, SS, IE, SE} pour désigner les inégalités utilisées

Pour moi, on dit "supérieur" pour > et supérieur ou égal" pour \geqslant : strictement est un mot superflu.
Donc les possibilités retenues sont : "E", "I", "S", "IE", "SE". Une autre saisie sera considérée comme un "E".
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Zaf
Messages : 56
Enregistré le : mer. 17 mars 2010, 07:11

Re: Programmation linéaire

Message non lu par Zaf » jeu. 6 mai 2010, 21:19

C'est vrai tu as raison, c'est comme tant d'autres abus de langage que nous avons en mathématiques.
Comme choisir au hasard une boule, exactement une boule... ;)

Zaf
Messages : 56
Enregistré le : mer. 17 mars 2010, 07:11

Re: Programmation linéaire

Message non lu par Zaf » jeu. 6 mai 2010, 21:21

J'ai installé la version 1.94 d'asymptote.
Génial ! ça marche ton exemple !!!
Pour le moment cela suffit pour préparer des sujets ou des corrigés.
Merci encore.
Zaf.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Programmation linéaire

Message non lu par GM » ven. 7 mai 2010, 07:18

Zaf a écrit :Pour le moment cela suffit pour préparer des sujets ou des corrigés.


Figure asymptote 6d32799723ef2f30ce389a302710a6ff
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import gm_programmation_lineaire;
  2. size(300);
  3. VWindow Fenetre = VWindow(xmin=-3, xmax=21,
  4. ymin=-3, ymax=15);
  5.  
  6. // Attention : quand l'argument l de type line est défini
  7. // avec la syntaxe line(m,p) plutôt que line(a,b,c), la convention
  8. // des "I", "S", "IE", "SE" n'est pas la même : dommage !
  9. DemiPlan dp1=DemiPlan("$D_1$",line(-3/2,12),"I",1bp+blue,he=2mm),
  10. dp2=DemiPlan("$D_2$",line(-1,10),"IE",1bp+red),
  11. dp3=DemiPlan("$D_3$",line(-1/3,4),"IE",1bp+green,ha=-20);
  12. // he pour l'espacement des hachures, ha pour leur angle
  13. // par rapport à la droite à laquelle elles se rapportent.
  14.  
  15. DemiPlan[] dps={dp2,dp1,dp3};
  16.  
  17. // S.P.L. : Situation de Programmation Linéaire
  18. SPL spl=SPL(Fenetre,dps);
  19.  
  20. // Avant de tracer, on peut rectifier les paramètres.
  21. // Cela dépend de l'ordre dans dps.
  22. spl.contraintes[0].pl=2bp+gray+opacity(.3);
  23. spl.contraintes[0].he=.1mm;
  24. // Avec des hachures serrées, on a l'effet d'une surface colorée.
  25.  
  26. draw(spl,xStep=4);


C'est du vite fait pour te dépanner... donc il faut rester dans les clous de son utilisation, en attendant que je l'équipe d'un gilet pare-balles :mrgreen: :
  • quand l'argument l de type line est défini avec la syntaxe line(m,p) plutôt que line(a,b,c), la convention des "I", "S", "IE", "SE" n'est pas la même : dommage ! Je ne suis pas sûr que je vais pouvoir y faire quelque chose car je ne vois pas comment on pourrait détecter la syntaxe avec laquelle les objets de type line ont été définis. Si, il y a une solution qui pourrait consister à changer le type de mon argument : affaire à suivre...
  • Il ne faut pas chercher à tracer une droite qui n'intercepte pas la Fenêtre... sinon badaboum : pour cela, je vais régler le problème dans quelques temps ;
  • Il ne faut pas encore être trop exigeant au niveau de la personnalisation du style de la grille, des axes : je vais prévoir des facilités pour ces réglages.

Voir aussi les commentaires de l'exemple ci-dessus.
Remarque à son propos : la transparence de la zone colorée ne passe pas sur le forum... mais uniquement sur le forum.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Répondre