[BACK]Return to linear_programming.adb CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Math_Lib / Supports

Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Supports/linear_programming.adb, Revision 1.1.1.1

1.1       maekawa     1: with Dictionaries;
                      2:
                      3: package body Linear_Programming is
                      4:
                      5:   procedure Primal_Simplex
                      6:                  ( dic : in out Matrix; eps : in double_float;
                      7:                    in_bas,out_bas : in out Standard_Integer_Vectors.Vector;
                      8:                    nit : in out natural; unbounded : out boolean ) is
                      9:
                     10:     unbound : boolean;
                     11:
                     12:   begin
                     13:     while not Dictionaries.Primal_Optimal(dic,eps) loop
                     14:       Dictionaries.Primal_Update(dic,in_bas,out_bas,eps,unbound);
                     15:       nit := nit + 1;
                     16:       exit when unbound;
                     17:     end loop;
                     18:     unbounded := unbound;
                     19:   end Primal_Simplex;
                     20:
                     21:   procedure Generic_Primal_Simplex
                     22:                  ( dic : in out Matrix; eps : in double_float;
                     23:                    in_bas,out_bas : in out Standard_Integer_Vectors.Vector;
                     24:                    nit : in out natural; unbounded : out boolean ) is
                     25:
                     26:     unbound : boolean;
                     27:
                     28:   begin
                     29:     while not Dictionaries.Primal_Optimal(dic,eps) loop
                     30:       Report(dic,in_bas,out_bas);
                     31:       Dictionaries.Primal_Update(dic,in_bas,out_bas,eps,unbound);
                     32:       nit := nit + 1;
                     33:       exit when unbound;
                     34:     end loop;
                     35:     Report(dic,in_bas,out_bas);
                     36:     unbounded := unbound;
                     37:   end Generic_Primal_Simplex;
                     38:
                     39:   procedure Dual_Simplex
                     40:                  ( dic : in out Matrix; eps : in double_float;
                     41:                    in_bas,out_bas : in out Standard_Integer_Vectors.Vector;
                     42:                    nit : in out natural; feasible : out boolean ) is
                     43:
                     44:     feasi : boolean;
                     45:
                     46:   begin
                     47:     while not Dictionaries.Dual_Optimal(dic,eps) loop
                     48:       Dictionaries.Dual_Update(dic,in_bas,out_bas,eps,feasi);
                     49:       nit := nit + 1;
                     50:       exit when not feasi;
                     51:     end loop;
                     52:     feasible := feasi;
                     53:   end Dual_Simplex;
                     54:
                     55:   procedure Generic_Dual_Simplex
                     56:                  ( dic : in out Matrix; eps : in double_float;
                     57:                    in_bas,out_bas : in out Standard_Integer_Vectors.Vector;
                     58:                    nit : in out natural; feasible : out boolean ) is
                     59:
                     60:     feasi : boolean;
                     61:
                     62:   begin
                     63:     while not Dictionaries.Dual_Optimal(dic,eps) loop
                     64:       Report(dic,in_bas,out_bas);
                     65:       Dictionaries.Dual_Update(dic,in_bas,out_bas,eps,feasi);
                     66:       nit := nit + 1;
                     67:       exit when not feasi;
                     68:     end loop;
                     69:     Report(dic,in_bas,out_bas);
                     70:     feasible := feasi;
                     71:   end Generic_Dual_Simplex;
                     72:
                     73: end Linear_Programming;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>