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>