cd V:\Cursos\Pos\Otimiza\Aulas A=[1 1 1] A = 1 1 1 A'*inv(A*A')*A ans = 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 eye(3)-A'*inv(A*A')*A ans = 0.6667 -0.3333 -0.3333 -0.3333 0.6667 -0.3333 -0.3333 -0.3333 0.6667 P=eye(3)-A'*inv(A*A')*A P = 0.6667 -0.3333 -0.3333 -0.3333 0.6667 -0.3333 -0.3333 -0.3333 0.6667 c=[1;2;3] c = 1 2 3 d=-c; dp=P*d dp = 1.0000 -0.0000 -1.0000 d d = -1 -2 -3 edit karmarkar disp(sprintf('%d',feature('SessionTool'))) 0 ; dbstatus dbstack dbstack ; disp(which('karmarkar')); V:\Cursos\Pos\Otimiza\Aulas\karmarkar.m mdbstatus 'v:\cursos\pos\otimiza\aulas\karmarkar.m' eval( 'if exist(''objective'',''var''), mauifunc(objective), end', ''); ; type ex_karmar ??? Error using ==> type ex_karmar.m: File not found. what M-files in the current directory V:\Cursos\Pos\Otimiza\Aulas CATALIS fmincon1 minlp1 swarm EXTRATOR fminunc1 minlp2 test0 LUCRO fminusub minlp3 test1 MINQUA fun minlp4 test10 MODELO func44 minlp5 test11 Minqua44 gmilp1 minlp6 test12 Modelo44 gminlp1 minlpn test13 OPT_RES gminlp2 modelagem test14 PLANOS gminlp3 naturais test15 READ2 gminlp4 newton test16 SEMIDEF gminlp5 newton_h test17 SMODELO gminlp6 newton_mod test18 aurea gmodelagem newtont test19 bandem1 gmurray nlconst test1gn bfgs grad nlp_internal test1m bracket grg pareto18 test2 buscarnd gtest1 pareto19 test20 cgrad gtest10 pareto20 test21 checkbounds gtest12 pareto21 test22 coggins gtest13 powell test23 compdir gtest2 qpsub test3 complex gtest8 refino test4 dados_ex6_44 gtest9 restr test5 dfp hkjeeves restr1 test6 dual htest1 restr14 test7 ex2_karm htest10 restr15 test8 ex_karma htest2 restr16 test9 ex_qp1 htest9 restr17 teste_buscarnd ex_qp2 interior restr20 univar ex_qp3 karmarkar restr21 varmetr ex_swarm lmarqua rosembr visual exmilp lp_nlp set1 writearq exmilp2 milp setoptim xplot exmilprog milp1 sol_extrat exmilprog2 milprog sqp extrat minlp steepdes type ex_karma % Exemplo do algoritmo de Karmarkar % Edgar & Himmelblau, 1988 % % min c'x % A x = b % x >= 0 c=[1; 2; 3]; A=[1 1 1]; b=1; x0=[1/3; 1/3; 1/3] [xo,Ot,nS,lambda]=karmarkar(c,x0,A,b) help karmarkar Solves the linear programming problem min S(x)=c'x subject to: A x = b, x >= 0 using the Karmarkar's algorithm. [xo,Ot,nS,lambda]=karmarkar(c,x0,A,b,tol,mxit) c: coefficients of the objective function x0: initial point (must be feasible) A: constraint matrix b: constraint vector tol: tolerance (default = 1e-4) mxit: maximum number of iterations (default = 100) xo: optimal point Ot: optimal value of S nS: number of objective function evaluations lambda: Lagrange multipliers type ex_karma % Exemplo do algoritmo de Karmarkar % Edgar & Himmelblau, 1988 % % min c'x % A x = b % x >= 0 c=[1; 2; 3]; A=[1 1 1]; b=1; x0=[1/3; 1/3; 1/3] [xo,Ot,nS,lambda]=karmarkar(c,x0,A,b) c=[1; 2; 3]; A=[1 1 1]; b=1; x0=[1/3; 1/3; 1/3] x0 = 0.3333 0.3333 0.3333 [xo,Ot,nS,lambda]=karmarkar(c,x0,A,b) xo = 0.6665 0.3333 0.0002 xo = 0.9997 0.0002 0.0002 xo = 0.9999 0.0001 0.0000 xo = 1.0000 0.0000 0.0000 xo = 1.0000 0.0000 0.0000 Ot = 1.0000 nS = 4 lambda = -1.0000 type ex2_karma ??? Error using ==> type ex2_karma.m: File not found. what M-files in the current directory V:\Cursos\Pos\Otimiza\Aulas CATALIS fmincon1 minlp1 swarm EXTRATOR fminunc1 minlp2 test0 LUCRO fminusub minlp3 test1 MINQUA fun minlp4 test10 MODELO func44 minlp5 test11 Minqua44 gmilp1 minlp6 test12 Modelo44 gminlp1 minlpn test13 OPT_RES gminlp2 modelagem test14 PLANOS gminlp3 naturais test15 READ2 gminlp4 newton test16 SEMIDEF gminlp5 newton_h test17 SMODELO gminlp6 newton_mod test18 aurea gmodelagem newtont test19 bandem1 gmurray nlconst test1gn bfgs grad nlp_internal test1m bracket grg pareto18 test2 buscarnd gtest1 pareto19 test20 cgrad gtest10 pareto20 test21 checkbounds gtest12 pareto21 test22 coggins gtest13 powell test23 compdir gtest2 qpsub test3 complex gtest8 refino test4 dados_ex6_44 gtest9 restr test5 dfp hkjeeves restr1 test6 dual htest1 restr14 test7 ex2_karm htest10 restr15 test8 ex_karma htest2 restr16 test9 ex_qp1 htest9 restr17 teste_buscarnd ex_qp2 interior restr20 univar ex_qp3 karmarkar restr21 varmetr ex_swarm lmarqua rosembr visual exmilp lp_nlp set1 writearq exmilp2 milp setoptim xplot exmilprog milp1 sol_extrat exmilprog2 milprog sqp extrat minlp steepdes type ex2_karm % Exemplo do algoritmo de Karmarkar % Edgar & Himmelblau, 1988 % % min c'x % A x = b % x >= 0 c0=[8.1; 10.8]; A0=[0.8 0.44 0.05 0.1 0.1 0.36]; b=[24000; 2000; 6000]; x0=[10000; 3000]; % incluindo as variaveis de folga: x0=[x0; b-A0*x0]; c=[-c0; zeros(3,1)]; A=[A0 eye(3)]; [xo,Ot,nS,lambda]=karmarkar(c,x0,A,b) xo=xo(1:2) Ot=c0'*xo clc ex2_karm xo = 1.0e+004 * 1.4327 1.2681 0.6958 0.0015 0.0002 xo = 1.0e+004 * 1.5025 1.2488 0.6486 0.0000 0.0002 xo = 1.0e+004 * 1.5970 1.2015 0.5937 0.0000 0.0078 xo = 1.0e+004 * 2.6202 0.6899 0.0003 0.0000 0.0896 xo = 1.0e+004 * 2.6207 0.6897 0.0000 0.0000 0.0897 xo = 1.0e+004 * 2.6207 0.6897 0.0000 0.0000 0.0897 xo = 1.0e+004 * 2.6207 0.6897 0.0000 0.0000 0.0897 xo = 1.0e+004 * 2.6191 0.6895 0.0000 0.0000 0.0897 xo = 1.0e+004 * 2.6191 0.6895 0.0000 0.0000 0.0897 Ot = -6.0698e+009 nS = 8 lambda = 4.6552 87.5172 0.0000 xo = 1.0e+004 * 2.6191 0.6895 Ot = 2.8661e+005 what M-files in the current directory V:\Cursos\Pos\Otimiza\Aulas CATALIS fmincon1 minlp1 swarm EXTRATOR fminunc1 minlp2 test0 LUCRO fminusub minlp3 test1 MINQUA fun minlp4 test10 MODELO func44 minlp5 test11 Minqua44 gmilp1 minlp6 test12 Modelo44 gminlp1 minlpn test13 OPT_RES gminlp2 modelagem test14 PLANOS gminlp3 naturais test15 READ2 gminlp4 newton test16 SEMIDEF gminlp5 newton_h test17 SMODELO gminlp6 newton_mod test18 aurea gmodelagem newtont test19 bandem1 gmurray nlconst test1gn bfgs grad nlp_internal test1m bracket grg pareto18 test2 buscarnd gtest1 pareto19 test20 cgrad gtest10 pareto20 test21 checkbounds gtest12 pareto21 test22 coggins gtest13 powell test23 compdir gtest2 qpsub test3 complex gtest8 refino test4 dados_ex6_44 gtest9 restr test5 dfp hkjeeves restr1 test6 dual htest1 restr14 test7 ex2_karm htest10 restr15 test8 ex_karma htest2 restr16 test9 ex_qp1 htest9 restr17 teste_buscarnd ex_qp2 interior restr20 univar ex_qp3 karmarkar restr21 varmetr ex_swarm lmarqua rosembr visual exmilp lp_nlp set1 writearq exmilp2 milp setoptim xplot exmilprog milp1 sol_extrat exmilprog2 milprog sqp extrat minlp steepdes type refino % Problema de blending e producao de uma refinaria % Edgar & Himmelblau, 1988 % % max c'x = min -c'x % A x <= b % x >= 0 c=[8.1; 10.8]; A=[0.8 0.44 0.05 0.1 0.1 0.36]; b=[24000; 2000; 6000]; lb=zeros(2,1); x0=[0; 0]; % active set: simplex op=optimset('LargeScale','off','Display','final'); [x,S,eflag,out,lambda]=linprog(-c,A,b,[],[],lb,[],x0,op) % interior point: S. Mehrotra, 1992 op=optimset('LargeScale','on','Display','iter','MaxIter',100,'TolFun',1e-4); [xi,Si,eflagi,outi,lambdai]=linprog(-c,A,b,[],[],lb,[],[],op) refino Optimization terminated successfully. x = 1.0e+004 * 2.6207 0.6897 S = -2.8676e+005 eflag = 1 out = iterations: 3 algorithm: 'medium-scale: activeset' firstorderopt: [] cgiterations: [] lambda = lower: [2x1 double] upper: [2x1 double] eqlin: [0x1 double] ineqlin: [3x1 double] Residuals: Primal Dual Duality Total Infeas Infeas Gap Rel A*x-b A'*y+z-f x'*z Error --------------------------------------------------- Iter 0: 4.55e-013 2.91e+001 2.56e+005 1.56e+005 Iter 1: 9.09e-013 7.03e+000 3.67e+004 5.21e-001 Iter 2: 4.11e-008 3.81e+000 2.15e+004 2.82e-001 Iter 3: 1.05e-009 5.00e-003 1.22e+003 3.91e-003 Iter 4: 1.05e-009 1.47e-014 1.90e-001 6.63e-007 Optimization terminated successfully. xi = 1.0e+004 * 2.6207 0.6897 Si = -2.8676e+005 eflagi = 1 outi = iterations: 4 cgiterations: 0 algorithm: 'lipsol' lambdai = ineqlin: [3x1 double] eqlin: [0x1 double] upper: [2x1 double] lower: [2x1 double] type ex2_karm % Exemplo do algoritmo de Karmarkar % Edgar & Himmelblau, 1988 % % min c'x % A x = b % x >= 0 c0=[8.1; 10.8]; A0=[0.8 0.44 0.05 0.1 0.1 0.36]; b=[24000; 2000; 6000]; x0=[10000; 3000]; % incluindo as variaveis de folga: x0=[x0; b-A0*x0]; c=[-c0; zeros(3,1)]; A=[A0 eye(3)]; [xo,Ot,nS,lambda]=karmarkar(c,x0,A,b) xo=xo(1:2) Ot=c0'*xo ex2_karm xo = 1.0e+004 * 1.4327 1.2681 0.6958 0.0015 0.0002 xo = 1.0e+004 * 1.5025 1.2488 0.6486 0.0000 0.0002 xo = 1.0e+004 * 1.5970 1.2015 0.5937 0.0000 0.0078 xo = 1.0e+004 * 2.6202 0.6899 0.0003 0.0000 0.0896 xo = 1.0e+004 * 2.6207 0.6897 0.0000 0.0000 0.0897 xo = 1.0e+004 * 2.6207 0.6897 0.0000 0.0000 0.0897 xo = 1.0e+004 * 2.6207 0.6897 0.0000 0.0000 0.0897 xo = 1.0e+004 * 2.6191 0.6895 0.0000 0.0000 0.0897 xo = 1.0e+004 * 2.6191 0.6895 0.0000 0.0000 0.0897 Ot = -6.0698e+009 nS = 8 lambda = 4.6552 87.5172 0.0000 xo = 1.0e+004 * 2.6191 0.6895 Ot = 2.8661e+005 edit karmarkar disp(sprintf('%d',feature('SessionTool'))) 0 ; dbstatus dbstack dbstack ; disp(which('karmarkar')); V:\Cursos\Pos\Otimiza\Aulas\karmarkar.m mdbstatus 'v:\cursos\pos\otimiza\aulas\karmarkar.m' disp(which('karmarkar')); V:\Cursos\Pos\Otimiza\Aulas\karmarkar.m clear 'v:\cursos\pos\otimiza\aulas\karmarkar.m' ex2_karm xo = 1.0e+004 * 1.4327 1.2681 0.6958 0.0015 0.0002 xo = 1.0e+004 * 1.5025 1.2488 0.6486 0.0000 0.0002 xo = 1.0e+004 * 1.5970 1.2015 0.5937 0.0000 0.0078 xo = 1.0e+004 * 2.6202 0.6899 0.0003 0.0000 0.0896 xo = 1.0e+004 * 2.6207 0.6897 0.0000 0.0000 0.0897 xo = 1.0e+004 * 2.6207 0.6897 0.0000 0.0000 0.0897 xo = 1.0e+004 * 2.6207 0.6897 0.0000 0.0000 0.0897 xo = 1.0e+004 * 2.6191 0.6895 0.0000 0.0000 0.0897 xo = 1.0e+004 * 2.6191 0.6895 0.0000 0.0000 0.0897 Ot = -2.8647e+005 nS = 8 lambda = 4.6552 87.5172 0.0000 xo = 1.0e+004 * 2.6191 0.6895 Ot = 2.8661e+005 type refine ??? Error using ==> type refine.m: File not found. type refino % Problema de blending e producao de uma refinaria % Edgar & Himmelblau, 1988 % % max c'x = min -c'x % A x <= b % x >= 0 c=[8.1; 10.8]; A=[0.8 0.44 0.05 0.1 0.1 0.36]; b=[24000; 2000; 6000]; lb=zeros(2,1); x0=[0; 0]; % active set: simplex op=optimset('LargeScale','off','Display','final'); [x,S,eflag,out,lambda]=linprog(-c,A,b,[],[],lb,[],x0,op) % interior point: S. Mehrotra, 1992 op=optimset('LargeScale','on','Display','iter','MaxIter',100,'TolFun',1e-4); [xi,Si,eflagi,outi,lambdai]=linprog(-c,A,b,[],[],lb,[],[],op) refino Optimization terminated successfully. x = 1.0e+004 * 2.6207 0.6897 S = -2.8676e+005 eflag = 1 out = iterations: 3 algorithm: 'medium-scale: activeset' firstorderopt: [] cgiterations: [] lambda = lower: [2x1 double] upper: [2x1 double] eqlin: [0x1 double] ineqlin: [3x1 double] Residuals: Primal Dual Duality Total Infeas Infeas Gap Rel A*x-b A'*y+z-f x'*z Error --------------------------------------------------- Iter 0: 4.55e-013 2.91e+001 2.56e+005 1.56e+005 Iter 1: 9.09e-013 7.03e+000 3.67e+004 5.21e-001 Iter 2: 4.11e-008 3.81e+000 2.15e+004 2.82e-001 Iter 3: 1.05e-009 5.00e-003 1.22e+003 3.91e-003 Iter 4: 1.05e-009 1.47e-014 1.90e-001 6.63e-007 Optimization terminated successfully. xi = 1.0e+004 * 2.6207 0.6897 Si = -2.8676e+005 eflagi = 1 outi = iterations: 4 cgiterations: 0 algorithm: 'lipsol' lambdai = ineqlin: [3x1 double] eqlin: [0x1 double] upper: [2x1 double] lower: [2x1 double] what M-files in the current directory V:\Cursos\Pos\Otimiza\Aulas CATALIS fmincon1 minlp1 swarm EXTRATOR fminunc1 minlp2 test0 LUCRO fminusub minlp3 test1 MINQUA fun minlp4 test10 MODELO func44 minlp5 test11 Minqua44 gmilp1 minlp6 test12 Modelo44 gminlp1 minlpn test13 OPT_RES gminlp2 modelagem test14 PLANOS gminlp3 naturais test15 READ2 gminlp4 newton test16 SEMIDEF gminlp5 newton_h test17 SMODELO gminlp6 newton_mod test18 aurea gmodelagem newtont test19 bandem1 gmurray nlconst test1gn bfgs grad nlp_internal test1m bracket grg pareto18 test2 buscarnd gtest1 pareto19 test20 cgrad gtest10 pareto20 test21 checkbounds gtest12 pareto21 test22 coggins gtest13 powell test23 compdir gtest2 qpsub test3 complex gtest8 refino test4 dados_ex6_44 gtest9 restr test5 dfp hkjeeves restr1 test6 dual htest1 restr14 test7 ex2_karm htest10 restr15 test8 ex_karma htest2 restr16 test9 ex_qp1 htest9 restr17 teste_buscarnd ex_qp2 interior restr20 univar ex_qp3 karmarkar restr21 varmetr ex_swarm lmarqua rosembr visual exmilp lp_nlp set1 writearq exmilp2 milp setoptim xplot exmilprog milp1 sol_extrat exmilprog2 milprog sqp extrat minlp steepdes type ex_qp1 % min S(x) = 4 * x1^2 + 5 * x2^2 % s.a. h(x) = 2 * x1 + 3 * x2 - 6 = 0 % % x' = [1.071 1.286] Q=[4 0;0 5]*2 c=[0; 0] A=[] b=[] Aeq=[2 3] beq=6 lb=[] ub=[] op=optimset('LargeScale','off'); [x,s,ex,out,lambda]=quadprog(Q,c,A,b,Aeq,beq,lb,ub,[],op) type ex* ??? Error using ==> type ex*.m: File not found. type ex*.* ??? Error using ==> type ex*.*: File not found. dir ex*.* EXTRATOR.M ex_qp1.m ex_swarm.m exmilprog.m ex2_karm.m ex_qp2.m exmilp.m exmilprog2.m ex_karma.m ex_qp3.m exmilp2.m extrat.m quit