Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Codechange: [Linkgraph] Skip MCF source node Dijkstra when all demand satisfied #7913

Conversation

@JGRennison
Copy link
Contributor

JGRennison commented Jan 7, 2020

MCF Dijkstra iterations are executed for all source nodes in a round-robin order.
Source nodes typically require different numbers of MCF Dijkstra iterations
to satisfy all of their demand.
This change is to avoid performing MCF Dijkstra iterations on source nodes which
have already been fully satisfied

Executing Dijkstra's algorithm is relatively expensive, particularly on large graphs, it is useful to avoid executing it in cases where the output is not used.

Copy link
Contributor

nielsmh left a comment

Looks right, although I don't have experience with this part of the code yet.

src/linkgraph/mcf.cpp Outdated Show resolved Hide resolved
src/linkgraph/mcf.cpp Outdated Show resolved Hide resolved
src/linkgraph/mcf.cpp Outdated Show resolved Hide resolved
… satisfied

MCF Dijkstra iterations are executed for all source nodes in a round-robin order.
Source nodes typically require different numbers of MCF Dijkstra iterations
to satisfy all of their demand.
This change is to avoid performing MCF Dijkstra iterations on source nodes which
have already been fully satisfied.
@JGRennison JGRennison force-pushed the JGRennison:skip-linkgraph-mcf-dijsktra-when-demand-satisfied branch from 14a3484 to 555ce38 Jan 7, 2020
@LordAro
LordAro approved these changes Jan 8, 2020
@nielsmh nielsmh merged commit 6e7117e into OpenTTD:master Jan 8, 2020
8 checks passed
8 checks passed
OpenTTD CI Build #20200107.16 succeeded
Details
OpenTTD CI (Linux commit-checker) Linux commit-checker succeeded
Details
OpenTTD CI (Linux linux-amd64-clang-3.9) Linux linux-amd64-clang-3.9 succeeded
Details
OpenTTD CI (Linux linux-amd64-gcc-6) Linux linux-amd64-gcc-6 succeeded
Details
OpenTTD CI (Linux linux-i386-gcc-6) Linux linux-i386-gcc-6 succeeded
Details
OpenTTD CI (MacOS) MacOS succeeded
Details
OpenTTD CI (Windows Win32) Windows Win32 succeeded
Details
OpenTTD CI (Windows Win64) Windows Win64 succeeded
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

3 participants
You can’t perform that action at this time.