#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/GCode/ToolOrderUtils.hpp>
|
| | GeneralMinCostLowerBoundsSolver (const std::vector< FlushMatrix > &matrix_, const std::vector< int > &u_nodes, const std::vector< int > &v_nodes, const std::vector< int > &v_nodes_group, const std::unordered_map< int, std::vector< int > > &uv_link_limits={}, const std::unordered_map< int, std::vector< int > > &uv_unlink_limits={}) |
| std::vector< int > | solve () |
| | ~GeneralMinCostLowerBoundsSolver () |
◆ Slic3r::GeneralMinCostLowerBoundsSolver::LowerBoundEdge
| struct Slic3r::GeneralMinCostLowerBoundsSolver::LowerBoundEdge |
| Class Members |
|
int |
edge_id |
|
|
int |
lower |
|
◆ GeneralMinCostLowerBoundsSolver()
| Slic3r::GeneralMinCostLowerBoundsSolver::GeneralMinCostLowerBoundsSolver |
( |
const std::vector< FlushMatrix > & | matrix_, |
|
|
const std::vector< int > & | u_nodes, |
|
|
const std::vector< int > & | v_nodes, |
|
|
const std::vector< int > & | v_nodes_group, |
|
|
const std::unordered_map< int, std::vector< int > > & | uv_link_limits = {}, |
|
|
const std::unordered_map< int, std::vector< int > > & | uv_unlink_limits = {} ) |
390 {
398
401 }
std::vector< int > l_nodes
Definition ToolOrderUtils.hpp:103
std::vector< int > r_nodes
Definition ToolOrderUtils.hpp:104
std::unique_ptr< MaxFlowWithLowerBounds > m_solver_lower_bounds
Definition ToolOrderUtils.hpp:99
std::unordered_map< int, std::vector< int > > m_uv_link_limits
Definition ToolOrderUtils.hpp:106
int num_groups
Definition ToolOrderUtils.hpp:108
std::unique_ptr< MinCostMaxFlow > m_solver_min_cost
Definition ToolOrderUtils.hpp:100
std::vector< FlushMatrix > flush_matrix
Definition ToolOrderUtils.hpp:102
std::vector< int > r_nodes_group
Definition ToolOrderUtils.hpp:105
std::unordered_map< int, std::vector< int > > m_uv_unlink_limits
Definition ToolOrderUtils.hpp:107
References flush_matrix, l_nodes, m_solver_lower_bounds, m_solver_min_cost, m_uv_link_limits, m_uv_unlink_limits, num_groups, r_nodes, and r_nodes_group.
◆ ~GeneralMinCostLowerBoundsSolver()
| Slic3r::GeneralMinCostLowerBoundsSolver::~GeneralMinCostLowerBoundsSolver |
( |
| ) |
|
|
default |
◆ add_edge_with_lower_bound()
| void Slic3r::GeneralMinCostLowerBoundsSolver::add_edge_with_lower_bound |
( |
int | from, |
|
|
int | to, |
|
|
int | lower, |
|
|
int | upper, |
|
|
int | cost ) |
|
private |
◆ build_feasible_graph()
| void Slic3r::GeneralMinCostLowerBoundsSolver::build_feasible_graph |
( |
const std::unordered_set< int > & | no_lower_groups | ) |
|
|
private |
432 {
436
441
444
445
446 for (
int i = 0; i <
L; ++i)
448
449
450 for (
int i = 0; i <
L; ++i) {
452 for (int j : it->second)
454 continue;
455 }
456
457 std::optional<std::vector<int>> unlink_limits;
459 unlink_limits = it->second;
460
461 for (int j = 0; j < R; ++j) {
462 if (unlink_limits.has_value() && std::find(unlink_limits->begin(), unlink_limits->end(), j) != unlink_limits->end())
463 continue;
465 }
466 }
467
468
469 for (int j = 0; j < R; ++j) {
472 }
473
474
476 if (no_lower_groups.count(g))
478 else
480 }
481
483
484
487
490
494 }
else if (
demand[i] < 0) {
496 }
497 }
503 }
#define L(s)
Definition ExtrusionEntity.cpp:25
int super_source
Definition ToolOrderUtils.hpp:119
int max_flow_edges
Definition ToolOrderUtils.hpp:123
void add_edge_with_lower_bound(int from, int to, int lower, int upper, int cost)
Definition ToolOrderUtils.cpp:543
int sink_id
Definition ToolOrderUtils.hpp:122
int source_id
Definition ToolOrderUtils.hpp:121
int super_sink
Definition ToolOrderUtils.hpp:120
const int INF
Definition ToolOrderUtils.hpp:20
References add_edge_with_lower_bound(), demand, Slic3r::MaxFlowGraph::INF, L, l_nodes, m_solver_lower_bounds, m_uv_link_limits, m_uv_unlink_limits, max_flow_edges, num_groups, r_nodes, r_nodes_group, sink_id, source_id, super_sink, and super_source.
Referenced by solve().
◆ build_graph_with_feasible_result()
| void Slic3r::GeneralMinCostLowerBoundsSolver::build_graph_with_feasible_result |
( |
| ) |
|
|
private |
506 {
510 }
511
514
518
521
525 node_edges.erase(std::remove_if(node_edges.begin(), node_edges.end(), [this](int val) {return val >= this->max_flow_edges;}), node_edges.end());
526 }
527
528
532
533 if (e.from <
L && e.to >=
L && e.to <
L + R) {
534 int idx_in_left = e.from;
535 int idx_in_right = e.to -
L;
537
538 if (
r_nodes[idx_in_right] == -1)
continue;
540 }
541 }
542 }
uint32_t group_id(std::vector< Bridge > &bridges, uint32_t src_id)
Definition LayerRegion.cpp:214
References flush_matrix, Slic3r::group_id(), L, l_nodes, lower_bound_edges, m_solver_lower_bounds, m_solver_min_cost, max_flow_edges, r_nodes, r_nodes_group, sink_id, and source_id.
Referenced by solve().
◆ get_distance()
| int Slic3r::GeneralMinCostLowerBoundsSolver::get_distance |
( |
const int | idx_in_left, |
|
|
const int | idx_in_right ) |
|
private |
◆ solve()
| std::vector< int > Slic3r::GeneralMinCostLowerBoundsSolver::solve |
( |
| ) |
|
◆ demand
| std::vector<int> Slic3r::GeneralMinCostLowerBoundsSolver::demand |
|
private |
◆ flush_matrix
| std::vector<FlushMatrix> Slic3r::GeneralMinCostLowerBoundsSolver::flush_matrix |
|
private |
◆ l_nodes
| std::vector<int> Slic3r::GeneralMinCostLowerBoundsSolver::l_nodes |
|
private |
◆ lower_bound_edges
| std::vector<LowerBoundEdge> Slic3r::GeneralMinCostLowerBoundsSolver::lower_bound_edges |
|
private |
◆ m_solver_lower_bounds
◆ m_solver_min_cost
| std::unique_ptr<MinCostMaxFlow> Slic3r::GeneralMinCostLowerBoundsSolver::m_solver_min_cost |
|
private |
◆ m_uv_link_limits
| std::unordered_map<int, std::vector<int> > Slic3r::GeneralMinCostLowerBoundsSolver::m_uv_link_limits |
|
private |
◆ m_uv_unlink_limits
| std::unordered_map<int, std::vector<int> > Slic3r::GeneralMinCostLowerBoundsSolver::m_uv_unlink_limits |
|
private |
◆ max_flow_edges
| int Slic3r::GeneralMinCostLowerBoundsSolver::max_flow_edges = 0 |
|
private |
◆ num_groups
| int Slic3r::GeneralMinCostLowerBoundsSolver::num_groups = 0 |
|
private |
◆ r_nodes
| std::vector<int> Slic3r::GeneralMinCostLowerBoundsSolver::r_nodes |
|
private |
◆ r_nodes_group
| std::vector<int> Slic3r::GeneralMinCostLowerBoundsSolver::r_nodes_group |
|
private |
◆ sink_id
| int Slic3r::GeneralMinCostLowerBoundsSolver::sink_id = -1 |
|
private |
◆ source_id
| int Slic3r::GeneralMinCostLowerBoundsSolver::source_id = -1 |
|
private |
◆ super_sink
| int Slic3r::GeneralMinCostLowerBoundsSolver::super_sink = -1 |
|
private |
◆ super_source
| int Slic3r::GeneralMinCostLowerBoundsSolver::super_source = -1 |
|
private |
The documentation for this class was generated from the following files: