{VERSION 4 0 "IBM INTEL LINUX22" "4.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 1 12 0 0 255 1 0 2 0 0 1 0 0 0 0 1 }{CSTYLE "" 0 21 "" 0 1 0 0 0 1 0 0 0 0 2 0 0 0 0 1 } {CSTYLE "" -1 257 "" 1 36 0 0 0 0 0 0 2 0 0 0 0 0 0 0 }{PSTYLE "Normal " -1 0 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Heading 1" -1 3 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 8 4 3 0 3 0 2 2 0 1 }{PSTYLE "Heading 2" -1 4 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 8 2 3 0 3 0 2 2 0 1 }{PSTYLE "Maple Outpu t" -1 11 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 } 3 3 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Title" -1 18 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 0 1 2 1 1 2 2 2 1 1 1 1 }3 1 0 0 12 12 3 0 3 0 2 2 19 1 }{PSTYLE "R3 Font 0" -1 256 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "R3 Fo nt 2" -1 257 1 {CSTYLE "" -1 -1 "Times" 1 12 128 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Normal" -1 258 1 {CSTYLE "" -1 -1 "Times" 1 16 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Title" -1 259 1 {CSTYLE "" -1 -1 "Times" 1 24 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }3 1 0 0 12 12 3 0 3 0 2 2 19 1 }{PSTYLE "Mapl e Output" -1 260 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 3 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Title" -1 261 1 {CSTYLE "" -1 -1 "Times" 1 36 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }3 1 0 0 12 12 3 0 3 0 2 2 19 1 }} {SECT 0 {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 261 "" 0 "" {TEXT -1 24 "Operations Research (13)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 21 "M\351thode de r\351solution" }}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 24 "Utilitaire de r\351solution" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 117 "Part de la quantit\351 \340 maximiser et de la s\351quence d'in \351quations donn\351e en param\350tre\nCr\351e eqs (s\351quence d' \351quations)" }}{PARA 0 "" 0 "" {TEXT -1 80 " tous (ensemble \+ des noms de toutes les variables, y compris le benefice)" }}{PARA 0 " " 0 "" {TEXT -1 121 " spec (ensemble des noms des variables sp \351ciales)\n lieu (liste des coordonn\351es nulles au sommet \+ en cours)" }}{PARA 0 "" 0 "" {TEXT -1 56 " eqb, eqb2 : \351qua tion de la quantit\351 \340 maximiser" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 1545 "mk_simplex:= proc(benef) global x,z, eqb, eqb2, eqs, tous, spe c, lieu, lessubs, ks, js; \nlocal lesargs, lesvarsi, lesvarsx, ni, nx, k,n,m,li,N,M,eq, tmp;\nks:='ks': \nlesargs:= [args[2..-1]]: indets(le sargs);\nlesvarsi, lesvarsx:= selectremove(type, %, indexed);\nnx,ni:= nops(lesvarsx), nops(lesvarsi);\nif ni <> 0 and nx <>0 \n then error '`: m\351lange entre variables index\351es et variables symboliques`' \nfi;\nif nx <> 0 \nthen\n if member(x,lesvarsx) \n then tmp:= sort (convert(lesvarsx minus \{x\}, list)); \n lessubs:= x=x[1], seq( tmp[js]=x[js+1], js=1..nx-1);\n else lessubs:= seq(lesvarsx[js]=x[js] , js=1..nx);\n fi:\nelse\n eqb:= z=benef; tmp:= map2(op,0,lesvarsi); \n if nops(tmp)<>1 then error '`: plusieurs noms de variables index \351es`' fi;\n tmp:= op(tmp); map2(op,1,lesvarsi); \n if % <> \{$1.. ni\} then print(%, \{$1..ni\}); \n error '`mauvaise numerotation`', 'variables'=lesvarsi fi;\n lessubs:= seq(tmp[js]=x[js], js=1..ni); \+ \nfi;\n\nlesargs:= subs(lessubs, lesargs); eqb:= z=subs(lessubs, \+ benef); \nN:= nops(\{lessubs\}); M:= 'M':\nli:= NULL; n:=0; m:=0; li eu:= $1..N; \nfor k in lesargs do\n if type(k, `<=`) then n:=n+1; eq := rhs(k)-lhs(k)-x[N+n]; tmp:= N+n;\n elif type(k,`=`) then eq:=k; tm p:= NULL; \n else error '`bad type of relation`'\n fi;\n if remove(ha s,eq,x) <0 then m:=m+1; eq:= -eq-x[M+m]; lieu:= lieu, tmp;\n fi;\nli:= li,eq; \nod; M:=N+n; eqs:= eval(li); tous:= \{z, seq(x[ks],ks=1..M+m) \}; \nspec:= \{seq(x[ks],ks=M+1..M+m)\}; \nif m > 0 \n then eqb2:= eq b; eqb:= z= -add(js, js=spec);\n else eqb2:= NULL;\nfi:\nlieu:= [lieu ]; \nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 48 "Permet de trier les \351quations de la vu e en cours" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 52 "sor:= proc(u,v) evalb ((op@lhs)(u)<(op@lhs)(v)): end:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 112 "R\351\351crit les \"autres\" variables en fonction des variables \+ principales\n(c'est \340 dire celles caract\351risant le lieu)" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 252 "pt_vue:= proc(lieu) global autres, sol, eqs, eqb, sor, tous,x,z;\nautres:= tous minus \{z,seq(x[k],k=lie u)\}:\nsolve(\{eqs\}, autres): convert(%, list): sol:= (op@sort)(%, so r):\nsubs(sol, rhs(eqb)); selectremove(has,%,x); , lhs(eqb)=``(%[ 2])+%[1]; \nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 96 "Utilise le pivot donn\351 en param \350tre et avance d'un cran, \npar mise \340 jour de la variable \"lie u\" " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 349 "avan:= proc(piv) global li eu, sol, x; \nlocal fixe, toto, xxx;\nxxx:='xxx': \nfixe:=seq(x[k]=0, k=subs(piv=NULL, lieu));\ntoto:= select(has,subs(fixe,[sol]),x[piv]); \nmap(solve@rhs,%): (min@op@select)(type,%,nonnegative):\nif %=0 then \+ error '`le pivot est bloqu\351`'\n else member(%,%%, 'xxx'); op(lhs(to to[xxx])); \n lieu:= sort(subs(piv=%, lieu))\nfi: end:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 176 "Choisit un pivot parmi les pivots possib les et proc\350de.\nSortie lorsque tous les coefficients sont n\351gat ifs (r\351ussite)\nSortie lorsque le pivot est bloqu\351 (liaison des \+ variables)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 532 "randavan:= proc() gl obal lieu, sol, piv,eqb, x,z; \nlocal fixe, toto, xxx, benef;\nxxx:=' xxx':\nbenef:= subs(eqb, sol, z); \nindets(%); [seq(`if`(coeff(benef,k )>0, k, NULL), k=%)];\nif nops(%)=0 then return '`maximum atteint`' fi ;\n%[rand(1..nops(%))()]; piv:= op(%); \nfixe:=seq(x[k]=0, k=subs(piv= NULL, lieu));\ntoto:= select(has,subs(fixe,[sol]),x[piv]);\nmap(solve@ rhs,%): (min@op@select)(type,%,nonnegative):\nif %=0 then error '`le p ivot est bloqu\351`'\n else member(%,%%, xxx); op(lhs(toto[xxx])); lie u:= sort(subs(piv=%, lieu))\nfi: end:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 187 "phase2:= proc() global tous, spec, eqs, eqb,eqb2,lie u;\neqb:= eqb2; \ntous:= tous minus spec;\nsubs(seq(k=0, k=spec), [eqs ]): eqs:= op(%);\nseq(op(k)=NULL, k=spec); lieu:= subs(%, lieu);\nend: " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 415 "Resultats:= proc() global lessubs, ineqs, ben ef, sol, lieu, x; \nlocal lieu0, tmp, vals, mat, faire;\nif nargs=1 th en faire:= print else faire:= NULL fi;\nlieu0:= seq(x[j]=0, j=lieu);\n tmp:= lieu0, (op@subs)(lieu0, [sol]); \nvals:= subs(tmp, [lessubs]): \+ \nmat:= subs(vals, );\nfaire(vals); faire(benef=subs(vals, bene f)); \n< | mat | map(proc(z) `if`(lhs(z)=rhs(z),`*`,'``') end, mat)>; faire(%);\nvals; \nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 21 "v\351rifications (xmint)" }}{EXCHG {PARA 0 "" 0 "" {MPLTEXT 0 21 209 "piv:='piv': lieu:= 'lieu': m:='m': \nprot ect(`rtable/ConstructColumn`); protect(`rtable/ConstructRow`);\nliste: = [avan, mk_simplex, Resultats, randavan, phase2, plots, sor, unprotec t, pt_vue];\nmap(xmint, liste);" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "with(pldx):with(plots):\nwith(simul):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "_EnvExplicit:= true;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 20 "Tout premier exemple" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 58 "ineqs:= x<=1000, y<=500, 3*x+6*y<=4200; benef:= 4*x+12*y;\n" }}}{SECT 1 {PARA 4 "" 0 " " {TEXT -1 37 "Utilitaire pour tracer les demi-plans" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 678 "demiplan:= proc(cond, couleur) global m; local line,y1,y2,yu,yd,x1;\nif not assigned(m) then m:= 4000 fi; \+ \nline:= (rhs=lhs)(cond);\nif has(line,y) then y1,y2:= solve(subs(x=m ,line)), solve(subs(x=-m,line));\n yu,yd:= max(y1,y2), min(y1,y2);\n i f subs(x=0,y=yd,cond) \n then return polygonplot([[-m,yu+m],[m,yu+m], [m,y1],[-m,y2],[-m,yu+m]], color=couleur):\n else return polygonplot( [[-m,yd-m],[m,yd-m],[m,y1],[-m,y2],[-m,yd-m]], color=couleur):\n fi\ne lse x1:= solve(line,x);\n if subs(x=0,y=0,cond) \n then return polygo nplot([[+m,-m],[x1,-m],[x1,m],[+m,m],[+m,-m]], color=couleur):\n else return polygonplot([[-m,-m],[x1,-m],[x1,m],[-m,m],[-m,-m]], color=cou leur): \n\n fi\nfi \nend:" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 129 "displayg(map(demipl an, [x>.0001, y>.0001, ineqs], yellow),\n view=[-200..1200, -100..600] , tickmarks=[[0,1000],[0,500]]); pl1:= %:" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 51 "seq( solve(4*x+12*y= zz,y), zz=[0,4000,6400,7600]); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 53 "pl6:=plot([%], x=-m..m, color=m agenta, linestyle=3):;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 94 "d isplayg([pl1,pl6], view=[-200..1200, -100..600], tickmarks=[[400,1000] ,[0,200,500]]); plg:=%:" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 43 "M \351thode du simplexe appliqu\351e \340 cet exemple" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 17 "Ecriture standard" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 73 "mk_simplex(benef, ineqs):\n'eqb'=eqb;\n'eqs'=eqs;\n't ous'=tous;\n'lieu'=lieu;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "pt_vue(lieu);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 18 "On choisit piv \+ = 1" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 144 "piv:=1; subs(piv=NULL, lieu ); seq(x[j]=0, j=%);\nsubs(%, pt_vue(lieu)[1]); select(has, map(op, co nvert(%, listlist)),x[piv]);\nmap(solve@rhs, %); " }}}{EXCHG {PARA 0 " " 0 "" {TEXT -1 64 "Et donc on d\351place la variable x[1]... jusqu' \340 obtenir x[3] = 0." }}{PARA 0 "" 0 "" {TEXT -1 68 "Le nouveau lieu est donc [2, 3]. La proc\351dure avan(piv) fait cela. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "avan(1); pt_vue(%);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 23 "On doit prendre piv = 2" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 144 "piv:=2; subs(piv=NULL, lieu); seq(x[j]=0, j=%); \nsubs(%, pt_vue(lieu)[1]); select(has, map(op, convert(%, listlist)), x[piv]);\nmap(solve@rhs, %); " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 64 " Et donc on d\351place la variable x[2]... jusqu'\340 obtenir x[5] = 0. " }}{PARA 0 "" 0 "" {TEXT -1 67 "Le nouveau lieu est donc [3,5]. La p roc\351dure avan(piv) fait cela. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "avan(2); pt_vue(%);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 23 "On doit prendre piv = 3" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 144 " piv:=3; subs(piv=NULL, lieu); seq(x[j]=0, j=%);\nsubs(%, pt_vue(lieu)[ 1]); select(has, map(op, convert(%, listlist)),x[piv]);\nmap(solve@rhs , %); " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 64 "Et donc on d\351place l a variable x[3]... jusqu'\340 obtenir x[4] = 0." }}{PARA 0 "" 0 "" {TEXT -1 67 "Le nouveau lieu est donc [4,5]. La proc\351dure avan(piv ) fait cela. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "avan(3); p t_vue(%);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 66 "Il ne reste plus de \+ mouvements possibles : le maximum est atteint." }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 20 "Resultats(verbose): " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 23 "Le m \352me (calculs seuls)" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 17 "Ecriture standard" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "mk_simplex(ben ef, ineqs); pt_vue(%);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "a van(1); pt_vue(%);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "avan( 2); pt_vue(%);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "avan(3); \+ pt_vue(%);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 66 "Il ne reste plus de mouvements possibles : le maximum est atteint." }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 19 "Resultats(verbose):" }}{PARA 11 "" 0 "" {TEXT -1 0 "" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 30 "\021Le m\352me (versi on automatis\351e)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "mk_sim plex(benef, ineqs); pt_vue(%);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 116 " to 10 do message:= randavan(); \nif message=`maximum atteint` then bre ak fi;\npt_vue(message); od;\nResultats(verbose):" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 35 "Un probl\350me \"facile\" en dimension 3" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 73 "ineqs:= x<=1000, y<=500,z<=1 500, 3*x+6*y+2*z<=6750;\nbenef:= 4*x+12*y+3*z;" }}{PARA 11 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 73 "mk_simplex(benef, ineqs):\n'eqb'=eqb;\n'eqs'=eqs ;\n'tous'=tous;\n'lieu'=lieu;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "pt_vue(lieu);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "avan (1); pt_vue(%); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "avan(2) ; pt_vue(%);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "avan(3); pt _vue(%);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "avan(4); pt_vue (%);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "Resultats(verb):" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 36 "Simplexe avec contraintes minoration" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 79 "ineqs:= x<=1000, y<=500,3*x+6*y<=4200, 10 00<=x+y,1200<=x+2*y;\nbenef:= 4*x+12*y;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "mk_simplex(benef, ineqs): " }}}{SECT 1 {PARA 4 "" 0 " " {TEXT -1 19 "Les variables cr\351es" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 61 "'tous'=tous; 'spec'=spec; \n'eqs'=eqs; 'eqb'=eqb; 'eq b2'=eqb2;" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "pt_vue(lieu); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "avan(2); pt_vue(lieu); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 99 "do message:= randavan() ; \nif message=`maximum atteint` then break fi;\npt_vue(%); od: pt_vue (lieu); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "phase2(); pt_vu e(lieu);" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 22 "Les variables re-cr \351es" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 61 "'tous'=tous; 'spec '=spec; \n'eqs'=eqs; 'eqb'=eqb; 'eqb2'=eqb2;" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 98 "do message:= randavan(); \nif message=`maximum a tteint` then break fi;\npt_vue(%): od: pt_vue(lieu);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "Resultats(verbose):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 21 "\"l e pivot est bloqu\351\"" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 81 "m k_simplex(benef, ineqs):tous, 'spec'=spec, 'lieu'=lieu, 'eqb'=eqb;\npt _vue(lieu);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "avan(1); pt_ vue(%);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "avan(2);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 149 "displayg(map(demiplan, [x>. 0001, y>.0001, ineqs], yellow),\n view=[-200..1200, -100..600], tickma rks=[[0,600,800,1000],[0,100,200,400,500]]); pl1:= %:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 77 "Dans cet exemple, les contraintes x2, x3, x6 sont li\351es. On voit que x2=x3+x6" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "ineqs[3-2], ineqs[6-2]; %[2]-%[1];" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 57 "M\351thode \"principielle\": \351liminer la var iable redondante.\n" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 72 "M\351thod e heuristique : bouger l\351g\350rement l'une des contraintes concern \351es" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 54 "ineqs1:= subs(1000 =1000-.001, ineqs[1]), ineqs[2..-1];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 98 "mk_simplex(benef, ineqs1);\nlieu:= [2, 3, 6, 7]; pt_v ue(%);\navan(2); pt_vue(%);\navan(3); pt_vue(%);" }}}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 49 "Au tre exemple (dim=2) avec contraintes minoration" }}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 88 "ineqs:= x1<=1000, x2<=500,3*x1+6*x2<=4200,\n40 0<=x1+x2,600<=x1+2*x2: \nbenef:= 4*x1+12*x2:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "mk_simplex(benef, ineqs): pt_vue(lieu);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 84 "do message:= randavan(); \ni f message=`maximum atteint` then break fi;\npt_vue(%); od;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "phase2(): pt_vue(%);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 84 "do message:= randavan(); \nif messa ge=`maximum atteint` then break fi;\npt_vue(%); od;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 31 "B ilan : d\351cision = 400, 500 ; " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "Resultats(verb):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }} }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 " " {TEXT -1 26 "DS A3/2002-2003 (simplexe)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 93 "ineqs:= \nx1* 4+x2*16 <= 384, \nx1* 2+x2* 2 <= 80,\n x1*18+x2*12 <= 930; \nbenef:= 66*x1+114*x2; " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "mk_simplex(benef, ineqs); pt_vue(%);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 84 "do message:= randavan(); \nif messa ge=`maximum atteint` then break fi;\npt_vue(%); od;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "Resultats(verb): res1:= evalf(%,4), subs( %, benef):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "res1;" }}}} {SECT 1 {PARA 3 "" 0 "" {TEXT -1 41 "DS A3/2002-2003 (gain li\351 \340 une d\351cision)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "rhs(ine qs[2]): ineqs:= (op@subs)(%=%+40, [ineqs]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "mk_simplex(benef, ineqs); pt_vue(%);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 84 "do message:= randavan(); \nif messa ge=`maximum atteint` then break fi;\npt_vue(%); od;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "Resultats(verb): res2:= evalf(%,4), subs( %, benef);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "res1; res2;" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 16 "res2[2]-res1[2];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 261 "" 0 "" {TEXT -1 41 "Maximisation sous contrainte non -lin\351aire" }{MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 45 "Maximisation sous con trainte non lin\351aire (1)" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 30 "Max imiser f sachant que g <=0 " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 67 "f:= \+ unapply(x^2+y^2+3*x*y,x,y);\ng:=unapply(x^2+2*y^2-7*x*y-20,x,y);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 25 "On commence par un dessin" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 191 "ff:= proc(x,y); if g(x,y)<0 then f (x,y) else NULL fi end:\nplot3d('ff'(x,y), x=-5..5, y=-5..5, axes=boxe d, labels=[x,y,f], grid=[50,50], orientation=[-90,0], shading=ZHUE, st yle=PATCHCONTOUR);" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 17 "Points int \351rieurs" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 40 "Points int\351rieurs \340 tangente horizontale" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "map2( diff,f(x,y),\{x,y\}); solve(%);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 55 "Pas de constance du signe de Delta(f) au point critique" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "xcs(f(x,y),x);" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 18 "Points sur le bord" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "eq_bord:= diff(g(x,y),x)*dx+diff(g(x,y),y)*dy; " }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "val_dy:= solve(eq_bord, \{dy \});" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 67 "f(x+dx, y+dy)-f(x,y ); Delta[f]:= collect(%, [dx,dy], distributed); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 64 "subs(val_dy, Delta[f]): Delta[f, bord]:= coll ect(%, dx, normal);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 57 "coef f(Delta[f, bord], dx); condition:= factor(numer(%));;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 74 "sols:= [solve(\{g(x,y), condition\} )]: evalf(%): remove(hastype,%,nonreal); " }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 50 "pl1:= plot([solve(g(x,y),y)], x=-5..5, color=red): " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 55 "pl2:= plot([solve(condi tion, y)], x=-5..5, color=blue):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "7: display(pl1,pl2, view=[-%..%,-%..%]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "(simplify@subs)(sols[1], Delta[f, b ord]): evalf(%);" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 3 "" 0 " " {TEXT -1 45 "Maximisation sous contrainte non lin\351aire (2)" }} {EXCHG {PARA 0 "" 0 "" {TEXT -1 30 "Maximiser f sachant que g <=0 " }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 65 "f:= unapply(x^2+y^2+3*x*y,x,y);\ng: =unapply(x^2+2*y^2-x*y-20,x,y);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 25 "On commence par un dessin" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 191 "f f:= proc(x,y); if g(x,y)<0 then f(x,y) else NULL fi end:\nplot3d('ff'( x,y), x=-5..5, y=-5..5, axes=boxed, labels=[x,y,f], grid=[50,50], orie ntation=[-90,0], shading=ZHUE, style=PATCHCONTOUR);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "display(%, orientation=[-29,56]);" }}} {SECT 1 {PARA 4 "" 0 "" {TEXT -1 17 "Points int\351rieurs" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 40 "Points int\351rieurs \340 tangente horizo ntale" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "map2(diff,f(x,y),\{x,y\}); solve(%);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 55 "Pas de constance du signe de Delta(f) au point critique" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "xcs(f(x,y),x);" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 36 "Points \+ sur le bord (m\351thode directe)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "eq_bord:= diff(g(x,y),x)*dx+diff(g(x,y),y)*dy; " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "val_dy:= solve(eq_bord, \{dy\});" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 67 "f(x+dx, y+dy)-f(x,y); Delt a[f]:= collect(%, [dx,dy], distributed); " }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 64 "subs(val_dy, Delta[f]): Delta[f, bord]:= collect(%, dx, normal);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 57 "coeff(Delt a[f, bord], dx); condition:= factor(numer(%));;" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 74 "sols:= [solve(\{g(x,y), condition\})]: evalf(% ): remove(hastype,%,nonreal); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "pl1:= plot([solve(g(x,y),y)], x=-5..5, color=red):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 55 "pl2:= plot([solve(condition, y)], x =-5..5, color=blue):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "6: \+ display(pl1,pl2, view=[-%..%,-%..%]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 103 "(simplify@subs)(sols[1], Delta[f, bord]): evalf(%); \n(simplify@subs)(sols[3], Delta[f, bord]): evalf(%);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "map(simplify@subs,sols,f(x,y)); eva lf(%);" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 40 "Points sur le bord (m \351thode de Lagrange)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "L: = unapply(f(x,y)-mu*g(x,y), x,y,mu);;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 108 "map2(diff, L(x,y,mu), \{x,y,mu\});\nsolve(%): lag, l ag1:= [%], [1=1,%]: Matrix(map(subs,evalf(lag1),[x,y,mu]));" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 306 "plot([solve(f(x,y)=5,y)], x =-6..5, color=green): pl3:=%:\nplot([solve(f(x,y)=50,y)], x=-6..5, col or=green): pl4:=%:\nplot([solve(f(x,y)=56.49,y)], x=-6..6, color=magen ta): pl5:=%:\nplot([solve(f(x,y)=-5.05808461,y)], x=-6..6, color=magen ta): pl6:=%:\nplot([solve(f(x,y)=-0.5,y)], x=-6..6, color=green): pl7: =%:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 80 "Aux points extr\351maux, l e bord du domaine est tangent aux courbes de niveau de f " }}{PARA 0 " > " 0 "" {MPLTEXT 1 0 78 "display(pl1,pl2,pl3,pl4,pl5,pl6,pl7, scaling =constrained, view=[-6..6,-5..5]);" }}}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 18 "" 0 "" {TEXT 257 42 "Simulation \+ d'une file d'attente ---> waits" }}}}{MARK "5" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }