diff --git a/main.py b/main.py index da88ec9d7a6f7c113e7c1cb3922a0d10795c00ae..4402848d26ab4570edaa292998fe443c0264a7c1 100644 --- a/main.py +++ b/main.py @@ -274,9 +274,13 @@ def simplex(): objective.append(0) source_node = graph.nodes.get('s') + sink_node = graph.nodes.get('t') for edge_connection in source_node.get_edges().values(): edge_index = all_graph_edges.index(edge_connection) objective[edge_index] = 1 + for edge_connection in sink_node.get_edges().values(): + edge_index = all_graph_edges.index(edge_connection) + objective[edge_index] = -1 # Set max flow capacity constraints for each edge. for edge_index in range(len(all_graph_edges)): @@ -295,30 +299,33 @@ def simplex(): # Update all nodes to state that "edge flow coming in must be less or equal to edge flow going out." for node in all_graph_nodes: - # Check values of all incoming and outgoing edges for node. - incoming_edges = node.get_incoming_edges() - outgoing_edges = node.get_outgoing_edges() - - # Populate constraint row. - constraint_row = [] - for index in range(len(all_graph_edges)): - constraint_row.append(0) - - # Set constraint row values. - for incoming_edge in incoming_edges: - edge_index = all_graph_edges.index(incoming_edge) - constraint_row[edge_index] = 1 - for outgoing_edge in outgoing_edges: - edge_index = all_graph_edges.index(outgoing_edge) - constraint_row[edge_index] = -1 - constraints.append(constraint_row) - # Set constant values. - # total_capacity_out = 0 - # for outgoing_edge in outgoing_edges: - # total_capacity_out += outgoing_edge.get_capacity() - # constants.append(total_capacity_out) - constants.append(0) + # Skip source and sink nodes. + if node != source_node and node != sink_node: + # Check values of all incoming and outgoing edges for node. + incoming_edges = node.get_incoming_edges() + outgoing_edges = node.get_outgoing_edges() + + # Populate constraint row. + constraint_row = [] + for index in range(len(all_graph_edges)): + constraint_row.append(0) + + # Set constraint row values. + for incoming_edge in incoming_edges: + edge_index = all_graph_edges.index(incoming_edge) + constraint_row[edge_index] = 1 + for outgoing_edge in outgoing_edges: + edge_index = all_graph_edges.index(outgoing_edge) + constraint_row[edge_index] = -1 + constraints.append(constraint_row) + + # Set constant values. + # total_capacity_out = 0 + # for outgoing_edge in outgoing_edges: + # total_capacity_out += outgoing_edge.get_capacity() + # constants.append(total_capacity_out) + constants.append(0) logger.info('obj: {0}'.format(objective)) logger.info('constraints: {0}'.format(constraints))