Ich habe an der Lösung des Mindestproblems des dominierenden Sets mit CP_SAT gearbeitet und es zunächst in Python implementiert. Die Python -Version war sehr schnell, daher habe ich beschlossen, sie in mein Hauptprojekt C ++ einzubeziehen. Wenn ich es jedoch genauso in C ++ modelliert habe, stellte sich heraus, dass es 100 -mal langsamer war. Die tatsächliche Lösung ist langsam. Als C ++ - Version verzweigt sich aus irgendeinem Grund viel. < /P>
Python: < /p>
Ich habe an der Lösung des Mindestproblems des dominierenden Sets mit CP_SAT gearbeitet und es zunächst in Python implementiert. Die Python -Version war sehr schnell, daher habe ich beschlossen, sie in mein Hauptprojekt C ++ einzubeziehen. Wenn ich es jedoch genauso in C ++ modelliert habe, stellte sich heraus, dass es 100 -mal langsamer war. Die tatsächliche Lösung ist langsam. Als C ++ - Version verzweigt sich aus irgendeinem Grund viel. < /P> Python: < /p> [code]# create decision variables. nodes = [model.new_int_var(0, 1, f"node_{i + 1}") for i in range(num_vertices) if (included[i] == 0 and excluded[i] == 0 and removed[i] == 0)]
# create constraints. for i in range(num_vertices): if included[i] == 1 or dominated[i] == 1 or ignored[i] == 1: continue neighbors = adjacencyList[i] undetermined_neighbors = [j for j in neighbors if (included[j] == 0 and excluded[j] == 0 and removed[j] == 0)] if excluded[i] == 0 and removed[i] == 0: model.Add(sum(nodes[translation_pace_to_ilp[j]] for j in undetermined_neighbors) + nodes[translation_pace_to_ilp[i]] >= 1) else: model.Add(sum(nodes[translation_pace_to_ilp[j]] for j in undetermined_neighbors) >= 1)
model.minimize(sum(nodes)) < /code> C ++: < /p> int index = 0; for (int i = 0; i < boost::num_vertices(graph); ++i) { if (mds_context.is_undetermined(newToOldIndex[i])){ decision_vars.push_back(cp_model.NewIntVar(domain).WithName(std::to_string(i))); } //Create constraint. for (int i = 0; i < boost::num_vertices(graph); i++) { if (mds_context.is_dominated(newToOldIndex[i]) || mds_context.is_ignored(newToOldIndex[i])){ continue; } auto [neigh_itt, neigh_itt_end] = boost::adjacent_vertices(i, graph); std::vector undetermined_neighbours; undetermined_neighbours.reserve(std::distance(neigh_itt, neigh_itt_end)); for (auto vertex = neigh_itt ; vertex != neigh_itt_end; ++vertex) { if (mds_context.is_undetermined(newToOldIndex[*vertex])){ undetermined_neighbours.push_back(*vertex); } } LinearExpr sum; if (mds_context.is_excluded(newToOldIndex[i])){ for (int j : undetermined_neighbours) { sum += decision_vars[translation_pace_to_ilp[j]]; } cp_model.AddGreaterOrEqual(sum, 1); } else { for (int j : undetermined_neighbours) { sum += decision_vars[translation_pace_to_ilp[j]]; } sum += decision_vars[translation_pace_to_ilp[i]]; cp_model.AddGreaterOrEqual(sum , 1); }
Ich führe eine Gitea -Instanz auf meinem Raspberry Pi 5 mit ARM -Prozessor aus. Ich habe mich mit ähnlichen Fragen befasst, in denen es heißt, -Channel = 3 , verwenden Sie Zitate, um Pakete zu...
Ich führe eine Gitea -Instanz auf meinem Raspberry Pi 5 mit ARM -Prozessor aus. Ich habe mich mit ähnlichen Fragen befasst, in denen es heißt, -Channel = 3 , verwenden Sie Zitate, um Pakete zu...
Ich habe eine Datei, in der ich die Attribute nicht lesen kann, da das Tag anders aussieht als gewöhnlich. Ich habe versucht, LXML wie folgt zu verwenden:
from lxml import etree
Ich habe eine Datei, in der ich die Attribute nicht lesen kann, da das Tag anders aussieht als gewöhnlich. Ich habe versucht, LXML wie folgt zu verwenden:
from lxml import etree
Ziel dieser Forschung ist es, die Leistungsunterschiede zwischen JIT- (Just-in-Time-Kompilierung) und AOT-Strategien (Ahead-of-Time-Kompilierung) zu untersuchen und ihre jeweiligen Vor- und Nachteile...