equal
deleted
inserted
replaced
71 | setprod vec positive (cplexVar v) = set_elem vec (s2i v) (if positive then "1" else "-1") |
71 | setprod vec positive (cplexVar v) = set_elem vec (s2i v) (if positive then "1" else "-1") |
72 | setprod vec positive (cplexProd (cplexNum num, cplexVar v)) = |
72 | setprod vec positive (cplexProd (cplexNum num, cplexVar v)) = |
73 set_elem vec (s2i v) (if positive then num else "-"^num) |
73 set_elem vec (s2i v) (if positive then num else "-"^num) |
74 | setprod _ _ _ = raise (Converter "term is not a normed product") |
74 | setprod _ _ _ = raise (Converter "term is not a normed product") |
75 |
75 |
76 fun sum2vec (cplexSum ts) = foldl (fn (vec, t) => setprod vec true t) (empty_vector, ts) |
76 fun sum2vec (cplexSum ts) = Library.foldl (fn (vec, t) => setprod vec true t) (empty_vector, ts) |
77 | sum2vec t = setprod empty_vector true t |
77 | sum2vec t = setprod empty_vector true t |
78 |
78 |
79 fun constrs2Ab j A b [] = (A, b) |
79 fun constrs2Ab j A b [] = (A, b) |
80 | constrs2Ab j A b ((_, cplexConstr (cplexLeq, (t1,t2)))::cs) = |
80 | constrs2Ab j A b ((_, cplexConstr (cplexLeq, (t1,t2)))::cs) = |
81 constrs2Ab (j+1) (set_vector A j (sum2vec t1)) (set_elem b j (num2str true t2)) cs |
81 constrs2Ab (j+1) (set_vector A j (sum2vec t1)) (set_elem b j (num2str true t2)) cs |
98 |
98 |
99 fun convert_results (cplex.Optimal (opt, entries)) name2index = |
99 fun convert_results (cplex.Optimal (opt, entries)) name2index = |
100 let |
100 let |
101 fun setv (v, (name, value)) = (matrix_builder.set_elem v (name2index name) value) |
101 fun setv (v, (name, value)) = (matrix_builder.set_elem v (name2index name) value) |
102 in |
102 in |
103 (opt, foldl setv (matrix_builder.empty_vector, entries)) |
103 (opt, Library.foldl setv (matrix_builder.empty_vector, entries)) |
104 end |
104 end |
105 | convert_results _ _ = raise (Converter "No optimal result") |
105 | convert_results _ _ = raise (Converter "No optimal result") |
106 |
106 |
107 |
107 |
108 end; |
108 end; |