Skip to content

Commit 1066ffa

Browse files
committed
rewind clingo and clingo-derive and minor tweaks
1 parent 66c6f1b commit 1066ffa

File tree

3 files changed

+43
-73
lines changed

3 files changed

+43
-73
lines changed

Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ publish = false
1010
edition = "2018"
1111

1212
[dependencies]
13-
clingo = { path ="../clingo-rs" , version="0.5.0" }
14-
clingo-derive = { path ="../clingo_derive" , version="*" }
13+
clingo = "0.4.3"
14+
clingo-derive = "*"
1515
termion = "1"
1616
structopt = "0.2"
1717
failure = "0.1"

src/bin/opt_graph.rs

+36-62
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ fn main() {
152152
let (scenfit, repair_score) =
153153
get_opt_add_remove_edges(&graph, &profiles, &new_inputs, &setting).unwrap();
154154
println!("done.");
155-
print!(
155+
println!(
156156
"\nThe network and data can reach a scenfit of {} with repairs of score {}",
157157
scenfit, repair_score
158158
);
@@ -176,7 +176,7 @@ fn main() {
176176
let (scenfit, repair_score) =
177177
get_opt_remove_edges(&graph, &profiles, &new_inputs, &setting).unwrap();
178178
println!("done.");
179-
print!(
179+
println!(
180180
"\nThe network and data can reach a scenfit of {} with {} removed edges.",
181181
scenfit, repair_score
182182
);
@@ -185,11 +185,11 @@ fn main() {
185185
};
186186

187187
// compute optimal repairs
188-
if let Some(max_repairs) = opt.max_repairs {
189-
let repairs = match opt.repair_mode {
190-
Some(RepairMode::OptGraph) => {
191-
if setting.ep {
192-
if repair_score > 0 {
188+
if repair_score > 0 {
189+
if let Some(max_repairs) = opt.max_repairs {
190+
let repairs = match opt.repair_mode {
191+
Some(RepairMode::OptGraph) => {
192+
if setting.ep {
193193
let mut repairs = vec![];
194194
for new_edges in redges {
195195
//TODO return only max_repairs solutions
@@ -210,18 +210,6 @@ fn main() {
210210
}
211211
repairs
212212
} else {
213-
let mut repairs = vec![];
214-
for new_edges in redges {
215-
let mut repair = vec![];
216-
for e in new_edges.iter() {
217-
repair.push(*e);
218-
}
219-
repairs.push(repair);
220-
}
221-
repairs
222-
}
223-
} else {
224-
if repair_score > 0 {
225213
get_opt_repairs_add_remove_edges(
226214
&graph,
227215
&profiles,
@@ -232,52 +220,38 @@ fn main() {
232220
&setting,
233221
)
234222
.unwrap()
235-
} else {
236-
vec![]
237223
}
238224
}
239-
}
240-
Some(RepairMode::Flip) => {
241-
if repair_score > 0 {
242-
get_opt_repairs_flip_edges(
243-
&graph,
244-
&profiles,
245-
&new_inputs,
246-
scenfit,
247-
repair_score,
248-
max_repairs,
249-
&setting,
250-
)
251-
.unwrap()
252-
} else {
253-
vec![]
254-
}
255-
}
256-
_ => {
257-
if repair_score > 0 {
258-
get_opt_repairs_remove_edges(
259-
&graph,
260-
&profiles,
261-
&new_inputs,
262-
scenfit,
263-
repair_score,
264-
max_repairs,
265-
&setting,
266-
)
267-
.unwrap()
268-
} else {
269-
vec![]
270-
}
271-
}
272-
};
225+
Some(RepairMode::Flip) => get_opt_repairs_flip_edges(
226+
&graph,
227+
&profiles,
228+
&new_inputs,
229+
scenfit,
230+
repair_score,
231+
max_repairs,
232+
&setting,
233+
)
234+
.unwrap(),
235+
_ => get_opt_repairs_remove_edges(
236+
&graph,
237+
&profiles,
238+
&new_inputs,
239+
scenfit,
240+
repair_score,
241+
max_repairs,
242+
&setting,
243+
)
244+
.unwrap(),
245+
};
273246

274-
let mut count = 0;
275-
for r in repairs {
276-
count += 1;
277-
println!("\nRepair {}: ", count);
278-
for e in r {
279-
let repair_op = into_repair(&e).unwrap();
280-
println!(" {}", repair_op);
247+
let mut count = 0;
248+
for r in repairs {
249+
count += 1;
250+
println!("\nRepair {}: ", count);
251+
for e in r {
252+
let repair_op = into_repair(&e).unwrap();
253+
println!(" {}", repair_op);
254+
}
281255
}
282256
}
283257
}

src/lib.rs

+5-9
Original file line numberDiff line numberDiff line change
@@ -265,12 +265,10 @@ fn member(elem: Symbol, list: Symbol) -> Result<Symbol, Error> {
265265
} else {
266266
member(elem, arguments[0])
267267
}
268+
} else if elem == list {
269+
Symbol::create_id("true", true)
268270
} else {
269-
if elem == list {
270-
Symbol::create_id("true", true)
271-
} else {
272-
Symbol::create_id("false", true)
273-
}
271+
Symbol::create_id("false", true)
274272
}
275273
}
276274
Ok(_) => {
@@ -1010,10 +1008,8 @@ pub fn get_opt_add_remove_edges_greedy(
10101008
bscenfit = n2scenfit; // update bscenfit
10111009
brepscore = n2repscore;
10121010
}
1013-
if n2scenfit == bscenfit {
1014-
if n2repscore < brepscore {
1015-
brepscore = n2repscore
1016-
}
1011+
if n2scenfit == bscenfit && n2repscore < brepscore {
1012+
brepscore = n2repscore;
10171013
}
10181014

10191015
let nedges = extract_addedges(&symbols2).unwrap();

0 commit comments

Comments
 (0)