Metodo Simplex con Matlab

Share Embed Donate


Short Description

Descripción: Dos ejemplos del método simplex resueltos mediante Matlab...

Description

����������� ���������� �� ��� ������� �� ������� �������� �� ���������� ��������� ������� ��������� �������� 2:

8.� ������������� ������� ��� ������ �������.

�� ���� �������� �� ������ ����������� �� �������� ��� �������� �������� �� ������ ������� �� �������� �� ������������ ������������ ��� ������������� �� �� ���� �������������� �������������� ���������  z

=cx

��� �������� � ��� ��������� �� ��������  x � ������ ��  A x

= b�

 x ≥ 0

������

 a11 a  x1  21  x =   �  A =   ...  x2    am1

  a22 � ...   am 2  a12

c = [ c1

 b1  b  2 c2 ] b =    ...    bm 

��������

A ������������ ��������� �� ������ ��������� ������� ���� ����� ������ �� �������� �������� �� ������������� � �������� ��� ������� ��� �� ���� ���������. function   simplex_graphic(A,b,c,direccion) function  %Método Simplex gráfico para resolver el problema de maximizar z=c*x sujeta %a A*x0 error('Noexiste region factible acotada'); end x1=vertices(1,:); x2=vertices(2,:); k=convhull(x1,x2); hold on; fill(x1(k),x2(k),[0.7 0.7 0.7]); xlabel('x_1','FontSize',15); ylabel('x_2','FontSize',15); z=c*vertices; z0=max(z); [~,nvert]=size(vertices); %xmax=max(vertices(1,:)); xmin=min(vertices(1,:)); for j=1:nvert clc; x0=vertices(1,j); y0=vertices(2,j); if c(1)*c(2)~=0 x=[0.7*x0,1.3*x0]; y=y0+(-c(1)/c(2))*(x-x0); plot(x,y,'r--','LineWidth',2); end title(['Región de solución factible, con z=',num2str(z0)],'FontSize',15) text(x0,y0,[' (',num2str(x0),',',num2str(y0),')'],'Fontsize',15) plot(x0,y0,'o',... 'MarkerEdgeColor','k',... 'MarkerFaceColor','r',... 'MarkerSize',5) grid on respuesta=input('\n-Presione la tecla 1 para mostrar el siguiente vertice\n-Presione la tecla 0 para salir\n(De lo contrario dará error)\nRespuesta: '); switch(respuesta); case 1 case 0 break end

end display('Se ha alcanzado el numero máximo de posibles soluciones (elija uno)') display('Se recomienda la que coincida con la sol factible mostrada al evaluar') end

�� �������� ������ �������� �� ���� ��������� �������� ��� ������ ����� ������ �� ��, ��� ��� ��� ����������: function puntos=corner1(A,b) %Puntos extremos [m,n]=size(A); puntos=[]; if n>=m combin=nchoosek(n,m); %Coeficientes binomiales v=nchoosek(1:n,m); for k=1:combin y=zeros(n,1); x=inv(A(:,v(k,:)))*b; if all(x>=0 & (x~=inf & x~=-inf)) y(v(k,:))=x; puntos=[puntos y]; end end else error('Número de ecuaciones es > número de variables'); end puntos puntos=deleteCol1(puntos); end

� function puntos=deleteCol1(puntos) %Borra columnas repetidas [nn,L]=size(puntos); v=[]; for i=1:L-1 for j=i+1:L x=puntos(:,i); y=puntos(:,j); if all(x==y) v=[v,j]; end end end puntos(:,v)=[]; end

���� �� �������� ������� ����� �� ����� (������), ����� ����� �� ������� ��� ��� ����������: >> A=[7 11;10 8;1 0;0 1] A = 7

11

10

8

1

0

0

1

>> b=[77;80;9;6] b = 77 80 9 6 >> c=[150 175] c = 150

175

>> direccion=['
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF