KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am searching for a way to terminate an apply function early on some condition. Using a for loop, something like: FDP_HCFA = function(FaultMatrix, TestCosts, GenerateNeighbors, RandomSeed) { set.seed(RandomSeed) ## number of tests, mind the summary column nT = ncol(FaultMatrix) - 1 StartingSequence = sample(1:nT) BestAPFD = APFD_C(StartingSequence, FaultMatrix, TestCosts) BestPrioritization = StartingSequence MakingProgress = TRUE NumberOfIterations = 0 while(MakingProgress) { BestPrioritizationBefore = BestPrioritization AllCurrentNeighbors = GenerateNeighbors(BestPrioritization) for(CurrentNeighbor in AllCurrentNeighbors) { CurrentAPFD = APFD_C(CurrentNeighbor, FaultMatrix, TestCosts) if(CurrentAPFD > BestAPFD) { BestAPFD = CurrentAPFD BestPrioritization = CurrentNeighbor break } } if(length(union(list(BestPrioritizationBefore), list(BestPrioritization))) == 1) MakingProgress = FALSE NumberOfIterations = NumberOfIterations + 1 } } I would like to rewrite this function using some derivation of apply . In particular, terminating the evaluation of the first individual with increased fitness, thereby avoiding the cost of considering the rest of the population.
Tags (comma-separated)
Save Edits
Cancel