Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Supports/linear_programming.ads, Revision 1.1.1.1
1.1 maekawa 1: with Standard_Floating_Numbers; use Standard_Floating_Numbers;
2: with Standard_Floating_Matrices; use Standard_Floating_Matrices;
3: with Standard_Integer_Vectors;
4:
5: package Linear_Programming is
6:
7: -- DESCRIPTION :
8: -- This package contains some routines for solving the standard primal and
9: -- dual linear-optimization problems, by means of the simplex algorithm.
10:
11: procedure Primal_Simplex
12: ( dic : in out Matrix; eps : in double_float;
13: in_bas,out_bas : in out Standard_Integer_Vectors.Vector;
14: nit : in out natural; unbounded : out boolean );
15:
16: generic
17:
18: with procedure Report ( dic : in Matrix;
19: in_bas,out_bas : Standard_Integer_Vectors.Vector );
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 );
25:
26: -- DESCRIPTION :
27: -- This is a very simple implementation of the simplex procedure
28: -- for solving the following problem:
29: --
30: -- max <c,x>
31: -- <a,x> <= 0
32: --
33: -- where x = (1,x1,x2,..,xn).
34: -- The generic procedure allows to report on intermediate dictionaries.
35:
36: -- REQUIRED : The primal dictionary is already initialized.
37:
38: -- ON ENTRY :
39: -- dic the matrix for the initial dictionary;
40: -- eps constant float to determine wether number is zero;
41: -- in_bas initial unknowns in the basis;
42: -- out_bas initial unknowns out the basis;
43: -- nit counter for number of iterations.
44:
45: -- ON RETURN :
46: -- dic the modified matrix for the dictionary;
47: -- in_bas unknowns in the basis;
48: -- out_bas unknowns out the basis;
49: -- nit augmented with number of iterations made;
50: -- unbounded true when it is detected that the solution is unbounded.
51:
52: procedure Dual_Simplex
53: ( dic : in out Matrix; eps : in double_float;
54: in_bas,out_bas : in out Standard_Integer_Vectors.Vector;
55: nit : in out natural; feasible : out boolean );
56:
57: generic
58:
59: with procedure Report ( dic : in Matrix;
60: in_bas,out_bas : Standard_Integer_Vectors.Vector );
61:
62: procedure Generic_Dual_Simplex
63: ( dic : in out Matrix; eps : in double_float;
64: in_bas,out_bas : in out Standard_Integer_Vectors.Vector;
65: nit : in out natural; feasible : out boolean );
66:
67: -- DESCRIPTION :
68: -- This is a very simple implementation of the simplex procedure
69: -- for solving the following problem:
70: --
71: -- min <c,x>
72: -- <a,x> >= 0
73: --
74: -- where x = (1,x1,x2,..,xn).
75: -- The generic procedure allows to report on intermediate dictionaries.
76:
77: -- REQUIRED : The dual dictionary is already initialized.
78:
79: -- ON ENTRY :
80: -- dic the matrix for the initial dictionary;
81: -- eps constant float to determine wether number is zero;
82: -- in_bas initial unknowns in the basis;
83: -- out_bas initial unknowns out the basis;
84: -- nit counter for number of iterations.
85:
86: -- ON RETURN :
87: -- dic the modified matrix for the dictionary;
88: -- in_bas unknowns in the basis;
89: -- out_bas unknowns out the basis;
90: -- nit augmented with number of iterations made;
91: -- feasible is true when the problem is detected to be infeasible.
92:
93: end Linear_Programming;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>