subOptimalSteinerProblem | R Documentation |
Rather than find just a single solution to a MStTP/MWCS, one can populate a solution pool with multiple degenerate/tolerable solutions.
R6Class subOptimalSteinerProblem
Construct an object representation of a multiple-solution Steiner tree/maximum weight connected subgraph (MWCS) problem
This class is derived from *nodeCentricSteinerTreeProblem*: all methods available in the superclass are available here. The difference is that after each acceptable solution is found, the solution is a.) stored in a solution pool and b.) used to generate a 'novelty' constraint on future solutions.
Alongisde those for *nodeCentricSteinerTreeProblem*
new(network, solverChoice = chooseSolver(), verbose = TRUE, presolveGraph = TRUE, solverTimeLimit = 300, solverTrace = as.integer(verbose), solutionTolerance = 0)
Constructor for the subOptimalSteinerProblem class. Alongside the arguments for the super-class constructor, there is also 'solutionTolerance', which instructs the object as to the gap between optimal and observed solution that is acceptable.
identifyMultipleSteinerSolutions(maxItr = 10)
Add solutions to the solution pool. maxItr is an argument dictating the number of runs through the optimsation procedure.
getSolutionPoolGraphs(collapseSols = TRUE)
Either return a list of solutions within tolerance (collapseSols = FALSE) or pool all solutions together and return a single graph (collapseSols = TRUE, defaults)
getSolutionPoolScores()
Compute the scores of the solutions in the solution pool. These are in the same order as the list of graphs returned by $getSolutionPoolGraphs(FALSE)
getOptimumScore()
Returns the optimum score from solutions in the solution pool
getSolutionTolerance()
Retreive the tolerance that permits a solution to be added to the solution pool in future calls to $identifyMultipleSteinerSolutions()
setSolutionTolerance(x)
Alter the tolerance that permits a solution to be added to the solution pool in future calls to $identifyMultipleSteinerSolutions()
stoneTrees::nodeCentricSteinerTreeProblem
-> subOptimalSteinerProblem
stoneTrees::nodeCentricSteinerTreeProblem$findSingleSteinerSolution()
stoneTrees::nodeCentricSteinerTreeProblem$getConnectivityConstraints()
stoneTrees::nodeCentricSteinerTreeProblem$getCurrentSolutionGraph()
stoneTrees::nodeCentricSteinerTreeProblem$getCurrentSolutionScore()
stoneTrees::nodeCentricSteinerTreeProblem$getFixedTerminalConstraints()
stoneTrees::nodeCentricSteinerTreeProblem$getNodeDegreeConstraints()
stoneTrees::nodeCentricSteinerTreeProblem$getTwoCycleConstraints()
stoneTrees::nodeCentricSteinerTreeProblem$getnConnectivityConstraintsCalls()
stoneTrees::nodeCentricSteinerTreeProblem$isSolutionConnected()
new()
subOptimalSteinerProblem$new( network, solverChoice = chooseSolver(), verbose = TRUE, presolveGraph = TRUE, solverTimeLimit = 300, solutionTolerance = 0, solverTrace = as.integer(verbose) )
getSolutionPool()
subOptimalSteinerProblem$getSolutionPool()
getSolutionPoolGraphs()
subOptimalSteinerProblem$getSolutionPoolGraphs(collapseSols = TRUE)
getSolutionPoolScores()
subOptimalSteinerProblem$getSolutionPoolScores()
getOptimumScore()
subOptimalSteinerProblem$getOptimumScore()
getNoveltyConstraints()
subOptimalSteinerProblem$getNoveltyConstraints()
getSolutionTolerance()
subOptimalSteinerProblem$getSolutionTolerance()
setSolutionTolerance()
subOptimalSteinerProblem$setSolutionTolerance(x)
getNconnectivityConstraintsCalls()
subOptimalSteinerProblem$getNconnectivityConstraintsCalls()
identifyMultipleSteinerSolutions()
subOptimalSteinerProblem$identifyMultipleSteinerSolutions(maxItr = 10)
clone()
The objects of this class are cloneable with this method.
subOptimalSteinerProblem$clone(deep = FALSE)
deep
Whether to make a deep clone.
Fischetti M, Leitner M, Ljubić I, Luipersbeck M, Monaci M, Resch M, et al. Thinning out Steiner trees: a node-based model for uniform edge costs. Math Program Comput. dimacs11.cs.princeton.edu; 2017;9: 203–229.
Beisser D, Klau GW, Dandekar T, Müller T, Dittrich MT. BioNet: An R-Package for the functional analysis of biological networks. Bioinformatics. 2010;26: 1129–1130.
https://en.wikipedia.org/wiki/Steiner_tree_problem
nodeCentricSteinerTreeProblem
Other SteinerProblemSolver:
nodeCentricSteinerForestProblem
,
nodeCentricSteinerTreeProblem
library(igraph) # Maximum-Weight Connected Subgraph (MWCS) - find sub-optimal solutions ## Vertex attribute details node costs/prizes head(V(lymphomaGraph)$nodeScore) lymphoma_multiMWCS = subOptimalSteinerProblem$new(lymphomaGraph, solutionTolerance = 0.5) #Populate the solution pool with multiple solutions - notice the lymphoma_multiMWCS$identifyMultipleSteinerSolutions() lymphoma_multiMWCS$getSolutionPoolGraphs(collapseSols = FALSE) lymphoma_multiMWCS$getSolutionPoolScores() #All solution scores are within tolerance diff(range(lymphoma_multiMWCS$getSolutionPoolScores()))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.