1- function change_form (:: Type{LPForm{T, AT, VT}} , lp:: LPForm ) where {T, AT, VT}
2- return LPForm {T, AT, VT} (
1+ # Copyright (c) 2019: Joaquim Dias Garcia, and contributors
2+ #
3+ # Use of this source code is governed by an MIT-style license that can be found
4+ # in the LICENSE.md file or at https://opensource.org/licenses/MIT.
5+
6+ function change_form (:: Type{LPForm{T,AT,VT}} , lp:: LPForm ) where {T,AT,VT}
7+ return LPForm {T,AT,VT} (
38 lp. sense,
49 lp. c,
510 lp. A,
611 lp. c_lb,
712 lp. c_ub,
813 lp. v_lb,
9- lp. v_ub
14+ lp. v_ub,
1015 )
1116end
1217
13- function change_form (:: Type{LPForm{T, AT, VT}} , lp:: LPStandardForm{T} ) where {T, AT, VT}
14- return LPForm {T, AT, VT} (
18+ function change_form (
19+ :: Type{LPForm{T,AT,VT}} ,
20+ lp:: LPStandardForm{T} ,
21+ ) where {T,AT,VT}
22+ return LPForm {T,AT,VT} (
1523 lp. sense,
1624 lp. c,
1725 lp. A,
@@ -21,8 +29,12 @@ function change_form(::Type{LPForm{T, AT, VT}}, lp::LPStandardForm{T}) where {T,
2129 fill (typemax (T), length (lp. c)),
2230 )
2331end
24- function change_form (:: Type{LPForm{T, AT, VT}} , lp:: LPGeometricForm{T} ) where {T, AT, VT}
25- return LPForm {T, AT, VT} (
32+
33+ function change_form (
34+ :: Type{LPForm{T,AT,VT}} ,
35+ lp:: LPGeometricForm{T} ,
36+ ) where {T,AT,VT}
37+ return LPForm {T,AT,VT} (
2638 lp. sense,
2739 lp. c,
2840 lp. A,
@@ -32,7 +44,11 @@ function change_form(::Type{LPForm{T, AT, VT}}, lp::LPGeometricForm{T}) where {T
3244 fill (typemax (T), length (lp. c)),
3345 )
3446end
35- function change_form (:: Type{LPForm{T, AT, VT}} , lp:: LPSolverForm{T} ) where {T, AT, VT}
47+
48+ function change_form (
49+ :: Type{LPForm{T,AT,VT}} ,
50+ lp:: LPSolverForm{T} ,
51+ ) where {T,AT,VT}
3652 c_lb = fill (typemin (T), length (lp. b))
3753 c_ub = fill (typemax (T), length (lp. b))
3854 for i in eachindex (lp. b)
@@ -47,26 +63,20 @@ function change_form(::Type{LPForm{T, AT, VT}}, lp::LPSolverForm{T}) where {T, A
4763 error (" invalid sign $(lp. senses[i]) " )
4864 end
4965 end
50- return LPForm {T, AT, VT} (
51- lp. sense,
52- lp. c,
53- lp. A,
54- c_lb,
55- c_ub,
56- lp. v_lb,
57- lp. v_ub,
58- )
66+ return LPForm {T,AT,VT} (lp. sense, lp. c, lp. A, c_lb, c_ub, lp. v_lb, lp. v_ub)
5967end
6068
61- function change_form (:: Type{LPGeometricForm{T, AT, VT}} , lp:: LPGeometricForm ) where {T, AT, VT}
62- return LPGeometricForm {T, AT, VT} (
63- lp. sense,
64- lp. c,
65- lp. A,
66- lp. b
67- )
69+ function change_form (
70+ :: Type{LPGeometricForm{T,AT,VT}} ,
71+ lp:: LPGeometricForm ,
72+ ) where {T,AT,VT}
73+ return LPGeometricForm {T,AT,VT} (lp. sense, lp. c, lp. A, lp. b)
6874end
69- function change_form (:: Type{LPGeometricForm{T, AT, VT}} , lp:: LPForm{T} ) where {T, AT, VT}
75+
76+ function change_form (
77+ :: Type{LPGeometricForm{T,AT,VT}} ,
78+ lp:: LPForm{T} ,
79+ ) where {T,AT,VT}
7080 has_c_upper = Int[]
7181 has_c_lower = Int[]
7282 sizehint! (has_c_upper, length (lp. c_ub))
@@ -93,73 +103,72 @@ function change_form(::Type{LPGeometricForm{T, AT, VT}}, lp::LPForm{T}) where {T
93103 end
94104 Id = Matrix {T} (I, length (lp. c), length (lp. c))
95105 new_A = vcat (
96- lp. A[has_c_upper,:],
97- - lp. A[has_c_lower,:],
98- Id[has_v_upper,:],
99- - Id[has_v_lower,:],
100- )
106+ lp. A[has_c_upper, :],
107+ - lp. A[has_c_lower, :],
108+ Id[has_v_upper, :],
109+ - Id[has_v_lower, :],
110+ )
101111 new_b = vcat (
102112 lp. c_ub[has_c_upper],
103113 - lp. c_lb[has_c_lower],
104114 lp. v_ub[has_v_upper],
105115 - lp. v_lb[has_v_lower],
106116 )
107- return LPGeometricForm {T, AT, VT} (
108- lp. sense,
109- lp. c,
110- new_A,
111- new_b
112- )
117+ return LPGeometricForm {T,AT,VT} (lp. sense, lp. c, new_A, new_b)
113118end
114- function change_form (:: Type{LPGeometricForm{T, AT, VT}} , lp:: F ) where {T, AT, VT, F <: AbstractLPForm{T} }
115- temp_lp = change_form (LPForm{T, AT, VT}, lp)
116- return change_form (LPGeometricForm{T, AT, VT}, temp_lp)
119+
120+ function change_form (
121+ :: Type{LPGeometricForm{T,AT,VT}} ,
122+ lp:: F ,
123+ ) where {T,AT,VT,F<: AbstractLPForm{T} }
124+ temp_lp = change_form (LPForm{T,AT,VT}, lp)
125+ return change_form (LPGeometricForm{T,AT,VT}, temp_lp)
117126end
118127
119- function change_form (:: Type{LPStandardForm{T, AT, VT}} , lp:: LPStandardForm ) where {T, AT, VT}
120- return LPStandardForm (
121- lp. sense,
122- lp. c,
123- lp. A,
124- lp. b
125- )
128+ function change_form (
129+ :: Type{LPStandardForm{T,AT,VT}} ,
130+ lp:: LPStandardForm ,
131+ ) where {T,AT,VT}
132+ return LPStandardForm (lp. sense, lp. c, lp. A, lp. b)
126133end
127- function change_form (:: Type{LPStandardForm{T, AT, VT}} , lp:: LPGeometricForm{T} ) where {T, AT, VT}
128- new_A = hcat (
129- lp. A,
130- - lp. A,
131- AT (I, length (lp. b), length (lp. b))
132- )
133- new_c = vcat (
134- lp. c,
135- - lp. c,
136- fill (0.0 , length (lp. b))
137- )
138- return LPStandardForm {T, AT, VT} (
139- lp. sense,
140- new_c,
141- new_A,
142- copy (lp. b)
143- )
134+
135+ function change_form (
136+ :: Type{LPStandardForm{T,AT,VT}} ,
137+ lp:: LPGeometricForm{T} ,
138+ ) where {T,AT,VT}
139+ new_A = hcat (lp. A, - lp. A, AT (I, length (lp. b), length (lp. b)))
140+ new_c = vcat (lp. c, - lp. c, fill (0.0 , length (lp. b)))
141+ return LPStandardForm {T,AT,VT} (lp. sense, new_c, new_A, copy (lp. b))
144142end
145- function change_form (:: Type{LPStandardForm{T, AT, VT}} , lp:: F ) where {T, AT, VT, F <: AbstractLPForm{T} }
146- temp_lp = change_form (LPForm{T, AT, VT}, lp)
147- new_lp = change_form (LPGeometricForm{T, AT, VT}, temp_lp)
148- change_form (LPStandardForm{T, AT, VT}, new_lp)
143+
144+ function change_form (
145+ :: Type{LPStandardForm{T,AT,VT}} ,
146+ lp:: F ,
147+ ) where {T,AT,VT,F<: AbstractLPForm{T} }
148+ temp_lp = change_form (LPForm{T,AT,VT}, lp)
149+ new_lp = change_form (LPGeometricForm{T,AT,VT}, temp_lp)
150+ return change_form (LPStandardForm{T,AT,VT}, new_lp)
149151end
150152
151- function change_form (:: Type{LPSolverForm{T, AT, VT}} , lp:: LPSolverForm ) where {T, AT, VT}
152- return LPSolverForm {T, AT, VT} (
153+ function change_form (
154+ :: Type{LPSolverForm{T,AT,VT}} ,
155+ lp:: LPSolverForm ,
156+ ) where {T,AT,VT}
157+ return LPSolverForm {T,AT,VT} (
153158 lp. sense,
154159 lp. c,
155160 lp. A,
156161 lp. b,
157162 lp. senses,
158163 lp. v_lb,
159- lp. v_ub
164+ lp. v_ub,
160165 )
161166end
162- function change_form (:: Type{LPSolverForm{T, AT, VT}} , lp:: LPForm{T} ) where {T, AT, VT}
167+
168+ function change_form (
169+ :: Type{LPSolverForm{T,AT,VT}} ,
170+ lp:: LPForm{T} ,
171+ ) where {T,AT,VT}
163172 new_A = copy (lp. A)
164173 senses = fill (LESS_THAN, length (lp. c_lb))
165174 new_b = fill (NaN , length (lp. c_lb))
@@ -172,7 +181,7 @@ function change_form(::Type{LPSolverForm{T, AT, VT}}, lp::LPForm{T}) where {T, A
172181 new_b[i] = lp. c_lb[i]
173182 push! (new_b, lp. c_ub[i])
174183 push! (sense, LESS_THAN)
175- new_A = vcat (new_A, lp. A[i,:])
184+ new_A = vcat (new_A, lp. A[i, :])
176185 elseif lp. c_lb[i] > - Inf
177186 senses[i] = GREATER_THAN
178187 new_b[i] = lp. c_lb[i]
@@ -181,7 +190,7 @@ function change_form(::Type{LPSolverForm{T, AT, VT}}, lp::LPForm{T}) where {T, A
181190 new_b[i] = lp. c_ub[i]
182191 end
183192 end
184- return LPSolverForm {T, AT, VT} (
193+ return LPSolverForm {T,AT,VT} (
185194 lp. sense,
186195 lp. c,
187196 new_A,
@@ -191,7 +200,11 @@ function change_form(::Type{LPSolverForm{T, AT, VT}}, lp::LPForm{T}) where {T, A
191200 lp. v_ub,
192201 )
193202end
194- function change_form (:: Type{LPSolverForm{T, AT, VT}} , lp:: F ) where {T, AT, VT, F <: AbstractLPForm{T} }
195- temp_lp = change_form (LPForm{T, AT, VT}, lp)
196- change_form (LPSolverForm{T, AT, VT}, temp_lp)
203+
204+ function change_form (
205+ :: Type{LPSolverForm{T,AT,VT}} ,
206+ lp:: F ,
207+ ) where {T,AT,VT,F<: AbstractLPForm{T} }
208+ temp_lp = change_form (LPForm{T,AT,VT}, lp)
209+ return change_form (LPSolverForm{T,AT,VT}, temp_lp)
197210end
0 commit comments