https://github.com/legraina/DynamicNurseScheduler

sort by:
Revision Author Date Message Commit Date
aef7513 Only publish docker image on version tag. (#33) 25 October 2023, 20:54:55 UTC
b08247c Add headers UI (#112) * Add headers for ui. * Add latest certifi * Fix guess origin when a dot was present at the beginning of the file. 25 October 2023, 17:54:43 UTC
97cb139 Accept Empty history in ui input file (#111) * Set initial state to None shift if no history provided for a given nurse. * Add try catch block when parsing ui input files. * Add a inrcii2ui.py script. * Standardize demand. Pass a vector of demand now. * Remove isINRC and isINRC2 * Add alternative skills to the contracts as well as a list of demands. Compute also the maximum optimal gap for optimality. * Fix INRC2 bug. two parameters were exchanged in the TotalShiftDurationResource::clone() ... * Fix cost computing of rest arcs in the rotation graph. * Remove ReaderWriter, add a parsing folder. * Fix Dockerfile and remove boost library: a flag needs to be set to activate the code with boost. * Use a lock to just rebuild when changing build type. * Add boost flag to the Dockerfile. * Add a coverage summary, and fix minor bugs introduced by the removal or alternative shifts. * Removed (X)LARGE_SCORE and define instead INFEAS_COST, HARD_COST, and LARGE_INT. * Always dive when not solving to optimality. * disable resolve by default 25 October 2023, 12:05:15 UTC
479c08e Build UI forbidden pattern (#110) * Implement correctly forbidden patterns for the ui. Add sturct Shifts and Days for it. * Handle unwanted shift, but still need to handle unwanted skills. * Can use the empty string or the wildcard to represent anyday in unwanted pattern. Also handle day and not just week day. 18 October 2023, 21:06:36 UTC
46262a1 Set solution file for ui to sol.txt (#109) * Set solution file for ui to sol.txt * Add run time to the report in the ui solution file. 15 October 2023, 21:35:48 UTC
79b5c9e Fix preference resource issue on forbidden arc based on origin node. Add arc type. Reset totals for initial state. (#108) 15 October 2023, 19:42:55 UTC
70ba472 Remove history_period in ui input files. (#107) * Remove history_period in ui input files. Set rest shift as default when no shift is provided in the ui history. Test an history that change year. * Set first day of the week for ui instance. 15 October 2023, 04:43:08 UTC
7b2eb81 Master UI (#106) * UI parser (#103) * PAbstractShift * contracts & nurses * 1st ui workflow-> mainly hard constraints used * most constraints ok * unwanted patterns ok * corrections & output * dockerignore updated. * Add more statistics to ui report. * Change columns to rosters in the report for ui. * cpplint * test ui process * Change run-actions count and fix docker-publish step status to outcome. * update docker test * INRC instance path * NRP instance path * Backtrack only on fathom when not solving to optimality. * Removed datasets not used or that should not be on the repo. * remove std::filesystem::exists. Not supported by the docker image. * Add an enum to manage the origin. Fix the origin issue for the dynamic case. Update the docker tests. --------- Signed-off-by: flore <florecaye220@gmail.com> Co-authored-by: flore <florecaye220@gmail.com> 13 October 2023, 23:50:20 UTC
394de6f Stab (#105) * Working dual stabilization. * Remove many pointers and use unique pointers instead. * Cpplint the code. * Add cpplint to actions. * Checkout lfs when running actions. * Fix actions. 05 October 2023, 01:06:40 UTC
6036b3d Merged public repo into private before merging. 18 January 2023, 03:30:45 UTC
c845ce7 Update requirements.txt 18 January 2023, 03:15:56 UTC
e2bcbe8 Update PyYAML in requirements.txt 18 January 2023, 03:02:33 UTC
784e1c9 Nrp (#102) * First working nrp. * Working roster for NRP. * Working Rotations for NRP. Fixed also dominance Forbiddenpattern. * Upadated git-lfs to track nrp files. * Fixed preprocess functions that were not overriden properly. * Fix bidirectionnal that was working only for the arc of length one. * Fix several issues with rotations pricing. Add an improved domination for HardTotalDurationResource. * Change the whole shift structure and use shift types for the subproblems. * Create functions to initialize map costPerType. * Add domination status. * Fix HardTotalShiftDurationResource::dominates * Fix default domination with new status. * Remove shift types from the scenario constructor. * Working heuristic with random source start node for the rotations sub problem. * Fix free days constraint on linux. * Implement sorting of the nurses based on the dual values for the subproblems. * Add resources to the dssr policy to ignore them during domination. * Add incremental dssr levels to improve domination when having multiple hard resources constraints. * Working B&P with timer on subproblems. * Working heuristics to solve the RCSPP and finding approximated LBs if possible. * Fix warning issues with gurobi. * Ensure that the compute LB is run only if necessary. Change order of the search levels. * Fix bug that was creating an infinite loop in the search startegies of RCSPP. * Choose only resources with an LB when activating resource and dominating with LB in the search strategies of RCSPP. * Working computeValidLB. * Changed dssr search level order to process levels without LB before the ones with LBs. * Add job to the subproblem to stop them if needed when computing LB. * Fix issues with setting the resource LB to 0 as there is a unique pointer for the whole program. * Ensure that the LB is computed at the root node whenever possible. * Stop computing LB when not necessary anymore and just dive from there. * Fix check error when stalling in BCP. * Fix resetSearchLevel. * Add another reset labels when computing LB. * Updated actions. * Fix issue with RCPricer::princing() and updateParameters(). Co-authored-by: Antoine Legrain <legraina> 18 January 2023, 02:52:25 UTC
b485e79 Dynamic roster (#101) * Improved log output and parameters parser. * Change some structure in the code to make the dynamic version run with the roster. Fix a bug with the preferences as their associated resources were set once at the beginning while they could be latter on changed. * Add benchmarks for the dynamic case. * Fix a minor bug on the demand of the generation stochastic solver. * fix several issues with the dynamiv version. * Fix timer issues for the LNS. * Ensure the solver ends whatever happens when solving time is reached. Furthermore, add a max number of degenerated iterations. * Fix LNS and stalling and no solution. Fix multiple calls to gurobi licence server. * Add a sbatch example. * Fix 2 bugs: enable the preprocess for shift duration resource, do not deactivate cons rest UB just based on the current horizon but also the initial state value. * Finalized modifications: parameters up-to-date, debug output removed. 08 December 2022, 06:15:57 UTC
2904f24 Pattern resource (#81) * Create the resource class, rename pattern to column, and create Pattern class * Progress on the forbidden pattern resources * Still progressing on the initialization of the resource * Initialization method is implemented * Implementation of the resource is complete * Add support for soft patterns, still an item to make sure of * General input format and other benchmarks * Initialize specific INRC1 inputs * Modify weights and contracts for INRC1 * Include costs in contracts and remove contract from subproblem members * INRC instances and start refactoring for identical weekend constraints * Start refactoring days * More refactoring, in a disorganized manner * cpplint * Soft preference resources * FreeDaysAfterShiftResources and refactoring * Compile error Weird, my compiler on Mac did not complain. Only the action saw the error. * First day id in SP and nodes per day in graphs * Add preprocessing to each resource * Commit du weekend * Resources of INRC * Started computing base cost of every resource Work in progress, still nothing tested and a lot of warnings when compiling * Compute base costs for all resources First version with every resource treated. There should be problems with initial consumptions (history), and should check where this method needs to be used to make sure that no other bug will appear * Correct the minimum cost computations * In progress : parser for INRC datasets * Keep progressing on INRC parser * Add NSPLib * Progress in INRC parser, but need refactor contract vector in scenario * Some refactoring in class Scenario * INRC parser is finished, pushing to run action tests * Debug of INRC parser * Update of INRC2 parser There will be some more work to do to manage a possible presence of SHIFTS section * Add methods in resources to split them between master and subproblem * Long debug after merging master into branch * Update ReadWrite.cpp * Update RCLabel.h * Attempts to make Github actions compile * Last attempt * Update RCLabel.h * Very last attempt * still trying things * The linking error has finally been found (on linux, at home) * Progress in the execution of Roster on INRC I'm at the stage of computing costs of rosters * LFS on datasets * End of week, still in debug * Debug at home * One more bug corrected * The code runs on INRC but optimal values are incorrect * Ignore mps and lp files * At last, we can solve the early INRC instances to optimality * It does not llink properly, but why ??? * Write detailed costs for INRC * Add equality for demand constraints in INRC * Start debugging the consWeekend resource * Linking error on Linux * Correct a bunch of Clang-tidy warnings * Debug ConsWeekends * Script for every small INRC All the open instances are closed unless there is an undetected an error * Debug errors of INRC2 * Debug of the rotation pricer (and it is not over yet) * add CTR flag and nursewrapper library to debug. * Add options to select tests in run-actions.py. Fix bugs: IdentWeekend resource was always added even if not complete weekend; Preferences resources were not right (wish on not created an badly implemented, ready was reset for the previous day in expand); The mapping of the tree was false leading to a wrong Best LB (the current node instead of the parent was used as a key. Many checks have been added). Minor changes: Add a CTR flag to check the rcssp againt the old one (if source are present in testsp); Add a method to check if Clp computed the right solution (enable with flag CTR); Change maxAbsoluteGap to absoluteGap. * Fix reading new instances. * Add the possibility to pass bounds that are not integer to soft bounded resources. Necessary for the dynamic scheduler. * Fix several bugs: clone the resources for each solver; include the initial state inside the bounds for the total resources; reinitialize the bounds at the creation of the solver for the dynamic routines. Move all the dynamic weights to a new class. Force the definition of a cost type when creating an expander. Can update the constraints to be able to resolve. * Generic costsConstraintsToString(). * Refactor wish to authorize only one wish per day to avoid inconsensty and allow penalizing if the wish is not respected (either off or on). * Fix display of the solution costs for the rotations. * add a list of shifts for a wish. fix bug in strong branching when having a cut. fix bug when initializing det solver for a second time. * Add macro for reading parameters. * Fix heuristic. * Fix bug with checkLPResults (cannot return stringstream). Change minor things in the ressources. * Clean the logic to update the tree in order to fix a bug. * Add method to use available solvers. Try to fix issue with vtable for ressources. * Fix bug on the tree size (was stopping when having one node left instead of 0). Created a Modeler.cpp file. * Working MIP heuristic in parallel on multi-threads. * Moved all the parameters in one file. * Add pkgconfig support for Bcp. * Add climits to compile on linux. * Create graphs from the bounds results. * Fix depedencies issues in cmake by always linking to the top library. * Fix diveLength that was not correctly set. * Add the possibility to pause and resume BCP. Need to donwload the patch of BCP. * add messages for the node and 1rst line. do not throw error when not finding a candidate. * fix issues when reading parameters. * Improved MIP heuristic with just a subset of rosters for each nurse. * Patterns: add examples and correct a bug * Fix ConsWeekendShift resource. Create different new classes as Weekend to simplify the code. * Remove computeBaseCost method as was confusing and could lead to some bugs. Instead, created a preprocess method for the arcs. Fix 2 bugs in ForbiddenPatternResource::preprocess. TODO: verify there is no bug in initExpander. * Error in CMake and INRC xml instances for validator * Add alternative shift resource. * git lfs tracks xml, datasets, references and jar. * Fixed LNS and try to run it as heuristic within BCP. It's not possible due to static fields in Bcp. * Add benchmark for inrc. Commit fixes on resources for inrc. Add a small parser for inrc. * Debug domination sur zoom * Fix some issues with lagrangian bound. Also fathom when infeasible. Create files for the solution and bounds. Add a branching option to start on weekends in increasing order, and then working days. * Add a flag in case c++17 is not available. * Fix inrc bug. SoftConsWeekendResource wasn't active on every day. * Implement InputPath for INRC. * Fix skills in INRC: all the nurses have all the skills now for the demand as the skills are included in the shift instead. run-benchmark writes a log now. * Fix several bugs. Improve run-benchmark to run the validator. * Fix issues with stalling and feasibility. run-benchmark can run replications of tests and override parameters from file. * Correction of RCSPP options * Reuse threads. Remove day manipulation methods from tools to Day.h. * Fix rcspp issue with rotation. Kill all paused solvers before deleting. * Fix stalling. Add a base score option when branching to take into account the number of columns and their cost. Catch all errors now. * Enable rotations for INRC (an approximation). * Fix uninitialized pointer (bad_access error). Fix quality (add a small weight for the node level). Add also a criteria to stop diving if too far from the most top level active node. * Process benchmark log even if some information is missing. Control dive length to stop diving when too long. Fixed some bad access error. Use pointer to pack and unpack variables. * Fix BcpHeuristic::stop(). * Huge refactoring to eliminate some depedencies. * Before stopping CG, check LP to ensure the the solution is right. Removed unchecked_push_back. * Add climits for linux. * Add wasLPDifferent_ to avoid cycling on different LPs forever. * Change generate_vars_in_lp workflow to generate variables as soon as LP is solved if needed. * Add some locks to avoir race concurrency. * Gurobi is now working. * Add address sanitizer for RelWithDebInfo build. * Remove packVar/unpackVar from BcpModeler. * Pricer tests * Pricer tests, a bug in minPathToSinks and something that does not compile on my Mac * Minor changes: continue to dive while no solutions have been found. compute demand duration also. * Fix solution to string. * Do not throw error, but just a warning when storing an non-integer solution. Use Logout instead of opening directly a file in BcpModeler. * Fix enumerate for shift type in ConsShiftResource. Fix parameters issue in rcssp where the algorithm could loop indefinitely if paramaters were not set correctly. * Add root benchmarks. * fix min cost for enum graph. * making more items shareable * adding c++ lib for julia wrapper * remove module julia, leavinig sub repo lib_julia_nurse * CMAKE for julia wrapper lib (separated target) * Bidirectionnal works for INRC. Add it as default for optimality. * Only build julia lib if variable BUILD_JULIA is defined. * add branching test file and baseScore is a coefficient. Add a branching benchmark file. * Fix parallel for MIP heuristic. Fix several other bugs and benchmark files. * remove chrono literals. * Add a try/catch on all exceptions throw by a thread. * Add the possibility to run just parts of the instances. * Add the possibility to set Blas librairy in CMakeDefinitionsLists. * add an argument to define the timestamp prefix of run-benchmark. * add an argument to define the timestamp prefix of run-benchmark. * Stop dive if the LB is not improving after X branching decisions. * Ensure that the solution vector is empty if no solution has been stored. * add many try/catch to find the bad alloc. * Add many catch. * Add more catch. * Add new delete that has been forgotten in the MIPheuristic. * Remove more columns to avoid too much memory usage. * Remove more columns to avoid too much memory usage. * Remove all removable columns to avoid too much memory usage. * Remove all removable columns to avoid too much memory usage. * Fix minor bug in heuristic when using delete with a shared_ptr. * Remove making as deleted columns when branching as it's not working when strong branching.. * Mark deactivated columns as removable when creating the branching node. * update current index in variable instead of keeping a mapping vector. * cpplint code * Ensure that the master problem still treats the current feasible solution when encountering an exception. * Ensure that the program stops properly when it has encountoured an error, while having already a solution. Display also the memory consumed. * Updated gitignore. * Cpplint * Cbc is working for the heuristic. * Fix select branching candidate: delete columns at the right time, update variables indices. * move benchmark results to results folder. * Ensure to allways have a logfile when using run-benchmark.py.. * Remove CATCH macro. * Rewrote HeuristicRotation::computeRoster() to make it cleaner. * Remove HeuristicRotation::selectColumns() that was performed twice. * Manage exceptions in HeuristicRotation::solveMIP Co-authored-by: legraina <antoine.legrain@gmail.com> Co-authored-by: flore <florecaye220@gmail.com> 18 October 2022, 00:42:43 UTC
0c17437 Mip heuristic (#100) * Fix some bugs on when stopping the branching. * Add a mip heuristic to solve the problem with current columns. Use the BCP feature granulaity for the optamility gap. Continue to investigate the bug about the linear relaxation objective. * Transform all parameters to upper cases when parsing params. * Fix potential bad access errors in BcpHeuristic (some deleted objects could be reused.). Print some information to track the relaxation bug. * cpplint code. fix some details in python script and add some retries in case an action fails. display infinity instead fo LARGE_SCORE for summary lines. * Revert change on LARGE_SCORE value. Otherwise, it is not big enough. * Change management of PThreadsPool to be deleted at the right time. * Add a retries option to docker-entrypoint.sh. * Set retries to 5 for docker tests. * Add flags to enable heuristics. 22 April 2022, 17:56:50 UTC
be35505 Strong branching (#90) * Working strong branching. Need however to reimplement strong branching to be able to run it in parallel. * Working strong branching. * cpp lint the code * Working strong branchin, but there is still a memory leak. Add a process-results function to run-benchmark.py. * Change Stretch initialization. * Add FixedSizeList begin() and end(). * Fix some loops in the shared_ptr structures that were stopping any shared_ptr to be deleted. * Fix a HUGE BUG: was deleting variables on which we just branched. * Use parralelism for strong branching. * Fix bug: was deleting variables at the end of the strong branching, but was still using these variables after all. * Added documentation about signed commit. * cpp lint the code. Store presolved realised during strong branching. * upgraded cpplint and suppressed additional errors. 06 April 2022, 11:02:45 UTC
5350ec6 Add alternative skills. (#91) 18 June 2021, 02:00:02 UTC
f163424 Mp constraints (#89) * Major refactoring. Create a class for each type of constraints and moved them in the constraints folder. Each constraints handles the dual cost and the addition of a new column to the constraints. It's a generic process now. It will ease the implemtation of new constraints. Under debug currently. * Working refactoring. * Can run several benchmarks in sequencial. * Stop diving when the gap is small enough. * Working LNS with rotation. * Add tests for rolling horizon - LNS. * Move DualCosts in SubProblem. 03 June 2021, 19:11:35 UTC
4f3bb7b Add resources to rotation MP (#86) * Working Rotation MP with resources. Need to handle cons weekend and fix dynamic. * Rolled back on TotalWeekend consumption. Too much overhead to handle long weekend in init. * handle resource and dynamic constraints in rotation MP. * Working management of the resources Shift duration and maxweekend in the rotation problem. 12 May 2021, 19:50:44 UTC
d6053b3 Rotation graph (#78) * Merged and change shift to pShift in state. * Use a REST_SHIFT_ID. Try to use less fixed id for the shifts in the code. 16 April 2021, 14:44:30 UTC
1db4291 Working enum sub paths. (#84) * Working enum sub paths. * Fix a small bug. Add the definitions to solve the default version of boost. Add the option to solve the rotations in pricer main. * Deterministic parallel resolution implemented. Always branch on rest first and theen work. * Change the strategy logic of updating the sub problem param, to move everything outside of the pricer into the subproblems. * Clean SubProblem and removed some methods related to the resolution with boost. * Remove the use of the copy constructor of fstream. * Fix an important bug with store solution and fractional solution ! Fractional columns were consuming 1 unit as a integer solution. * Check if enough allocation left when storing the solution. 30 March 2021, 12:39:11 UTC
363e9c1 Move Pattern::computeCost() to the subproblems. (#80) * Move Pattern::computeCost() to the subproblems. Move reducedCost from Pattern to RCSolution. Compute directly the cost and reduced cost of a solution in the RCGraph. Need to debug RosterSP with shift durations (instance new1). * Fix bug with instance new 1. TotalShiftDuration resource was only looking at days left and not duration left. A bug was introduced in the pricing of initial state for the first rest arcs in the rotation graph. * Fix small introduced bug with the modification of doStop. Now works correctly. 23 March 2021, 01:40:39 UTC
82791b0 Cyclic roster (#79) * Working cyclic roster. Could perhaps be more efficient, but works well. * Working cyclic with cons weekend shift resource. * Add a cyclicConsumtion to the resourve value to be able to store the initial consumption in case of a cyclic resolution. Necessary for cons weekend shift resource to be feasible and optimal. 18 March 2021, 17:52:58 UTC
8ca1970 New rotation pricer (#77) * New rotations coded. Created RCSPPSubProblem to put all the common methods in it. Change RCGraph to manage a vector of sources. Need to be debug now. * Few minor bugs fixed. FOUND a bug in boost, but won't debug it. * RCSolution and Patterns inherit from stretch now. We should also do it for roster in my opinion. * Remove ambiguity on Pattern constructors. 14 March 2021, 02:41:25 UTC
6e42058 track errors found by the main pricer to return 1 when an error is found. 12 March 2021, 15:11:18 UTC
6f36517 Add the option to select the shifts on which a nurse can work. In the nurse skill list, you can add shift and shift types that will be put at the right placee wheen reading the inputs. 11 March 2021, 03:43:34 UTC
97ce130 Merge branch 'master' of github.com:wssuite/pNurseScheduler 10 March 2021, 21:21:49 UTC
6de069e Refactor Scenario: all members are private now. 10 March 2021, 20:39:31 UTC
f575b11 Very small bug in the way heuristic options were handled 10 March 2021, 18:32:14 UTC
efd90d2 Prepare shortest paths from sinks for preprocessing of back expansion 10 March 2021, 18:25:54 UTC
ead8d00 Fix the worst case ub of cons shifts in the back expansion and a few warnings 10 March 2021, 17:48:19 UTC
2d62ede Add the possibility to override the resources definitions. (#68) * Add the possibility to override the resources definitions. Fix several bugs in rcspp and the resource definitions. * Re-organize a little project structure. Removed the main cpp file from the source and put all of them in a main folder. You can now add your own main with its CMakeLists in a sub directory of main without changing anything to the rest of the CMakeLists, so you don't risk to commit anything to the git repo. * Copy all the expanders from ConsShift to ConsWeekendShift. * Add a FORBIDDEN_SHIFT_SUCCESSIONS in the param files if needed. Fx the Dockerfile. * Fix actions. * use lastDay() instead of firstDay() + nDays(). * Fix forbiddenShiftTypeSuccessors_ issue as it was not preesent in the copy constructor. * Fix new1 history file: replace shift type by shift. 10 March 2021, 16:49:45 UTC
b8e639b Correct bugs in worst case costs of total weekends 10 March 2021, 14:18:08 UTC
bb56bce Bidirectional is working I finally found the bug!! It was very tricky, and even after finding it, it took me quite some time to understand why it was a bug. I just did the easy fix, I still need to do it better as explained in the big TODO comment of the total weekend bac expander. Sadly, it does not mean that the whole bidirectional thing had a point, since it is still significantly slower. 09 March 2021, 20:47:08 UTC
daa33c2 Minor bug 09 March 2021, 19:07:23 UTC
b8461fe Small cpplint 09 March 2021, 18:22:14 UTC
9f54646 bidirectional: I'm giving up It is impossible to understand. When I deactivate improved domination only for consecutive rest, the algorithm exits without error. But now, if I play with the scenario of n030w4 to manually deactivate the constraint on consecutive rest (setting lb=0 and ub=10 for every contract), I get errors again (even if improved domination is deactivated for consecutive rests)... 09 March 2021, 18:21:36 UTC
ac2acbe Bidirectional is not over There are still two errors that appear in n030w4, and I could also track these errors up to the consecutive shifts (with ids >= 3). Also, bidirectional is still less performing, I think that the initial state is very helpful for domination in forward propagation. 09 March 2021, 16:45:07 UTC
7078633 Still debugging bidirectional I can't seem to find the remaining bug. I find the same optimal value in most cases, but there is sometimes an error of 10 to 20. 09 March 2021, 11:11:28 UTC
ffaa151 Start debugging bidirectional label-setting 08 March 2021, 20:31:11 UTC
dc229f6 Bidirectional label setting is coded but not tested 08 March 2021, 14:36:07 UTC
e3a8a2d Move the computation of shortest path to sinks and revise for enumerated subpaths I had to move it to RosterSP to access the cost attributes of each shift of each stretch 08 March 2021, 10:22:59 UTC
d472496 Fix bug in RosterSP: base cost wasn't added for arcs leaving the source. Create a method to add the arc to the graph and computes the base cost to make sure it was taking into account. Add some display functions to help debugging. (#66) 07 March 2021, 04:21:05 UTC
27e1904 Ignore min bounds (#61) * State of dev before merging master to branch * Before review * Code analysis corrections * Minor revisions after review comments * Pure virtual AbstractShift and fix some pointer issues * Initialization of MyRosterSp - delete Constraint.h - move resources to a specific folder - create MyRCGraph, MyRosterSP, MyRCSPPSolver - instantiate the above - fix some Clang-tidy issues * Compute base costs of RCArcs * Add dual cost and prepare RCSPPsolver * Add dual costs and prepare RCSPPsolver (everything staged) I had to make those changes, otherwise the code would not compile on Windows. I guess these changes won't hurt, but not sure. Small addendum to Readme file to talk about Windows install. * Some todos * Update MyRCSPP.h * Update MyRCSPP.cpp * Changes during meeting JO/AG * Update MyRosterSP.cpp * Update MyRCLabel.h * Update MyRCSPP.h * Update MyRCSPP.cpp * Update TotalShiftResource.cpp * Update ConsShiftResource.cpp * Update TotalWeekendsResource.cpp * Update TotalWeekendsResource.h * Update MyRCSPP.cpp * Update TotalWeekendsResource.h * Update MyRCLabel.h * Meeting with AG * Refactoring to remove boost and PrincipalGraph from SubProble * RCSPP solver * Correction of minor bugs * before meeting JO/AG * Minor changes * Mods meeting JO/AG (1) * Some TODOs and renamings * Correct expansion of total weekend and cost of incomplete weekends * Preprocessing graph * Improved domination (first version) * Correction bug in comparator * new generation of random dual costs * Correction of minor bug * Improvements after profiling * Minor changes * Start implementing a pool of labels * Label pools implemented and other cpu optimizations * Improvements of CPU ok * Remove ResourceLabel * Update MyRCLabel.cpp * Update MyRCSPP.h * Revert "Update MyRCSPP.h" This reverts commit c2342734957603a8537358f8aef6330289412f70. * Enumeration of sub-paths (version 1) * Minor modifications * Switch timer to chrono header It has not been validated on Mac * Minor modifications * Enumeration of sub paths (final version) + Correction of minor bugs * adding RCSPPSolver's options in paramfile * Minor changes * New Readme for the tests with the new pricer * Fix system_clock in Tools as well as inefficient calls to nodes and arcs in MyRCSSP and RCGraph. * Optimized the MMyRCSPP code. Especially changed the label pool. * Finished RCSSP optimization. * Change minor things in ressources definitions. * Cosmetic changes on MyRoster. * Create a struct to storethe resources values. * remove ResourceValues copy when expanding. * Removed inactive expander. * Move the computation of worst costs in the resources. * Fix ResourceValues default consumption as not initialized for the 1rst label. Highly optimized code. * Replace Shift operator >= and some minor revisions * Revert "Replace Shift operator >= and some minor revisions" This reverts commit cfb012691beb576ad8b708187ddc6be0bd463312. * Revert "Revert "Replace Shift operator >= and some minor revisions"" This reverts commit 0fed270f9fbcbfb748086f602237035ee7a26cc5. * Small bug corrected Ok, we get the expected results * Revise PricerMain to make it a test function without inputs * Minor changes while progressing in the pull request * Improved outputs of the main pricer * Modified the domination loop for sorted option * Small revision/clarification/optimization for minimumCostToSinksOption_ * Minor revisions while reviewing the enumeration of subpaths * Not much * Check if had constraints are satisfied * Starting the implementation of DSSR in the label-setting algorithm * Progress in DSSR and simplify management of parameters * Get rid of multiply defined parameters * There is a bug in DSSR with HN_3 * DSSR working, but we loose benefit when we go to optimality * Attempt of acceleration Not a success * Minor changes before week-end * Another attempt with both dominations * Just some cleaning in the RCLabel class, deleted unnecessary fields * Minor improvements * Option for expanding fewer labels * Improve primal bounds when going for optimality in dssr * Clean the option with restricted number of expanded labels * Rename RCSPP parameters, and add new parameters for future developments * Always solve RCSPP to optimality when rcsppToOptimality is true * Min cost to sinks with enumerated paths: progress but still bugged * rcsppEnumerateSubpathsForMinCostToSinks is only a heuristic The shortest paths computed in the enumerated graph are larger than those in the shortest paths in the original one (even if the enumeration was done properly). This can be fixed, but I don't know if it is worth the effort. * Cpplint issues * Prepare structure of MyRCSPPSolver for bidirectional label-setting * Major refactoring. Move boost in a subfolder and remove prefix My. Warning: bug in LongRotation. * Debug for Linux compilation and errors introduced in new pricer side * Minor revisions cpplint and other warning * Some more cpplint * Meeting * A bug where the count of weekends is done and total weekends resource * Fix issues with part of code used for Roster and Rotation problems. Both are now separated as well as their associated dual costs. * Add a lamba expression for the label expansion. * Implement domination function within the resources. Add the ability to use an alternative domination function for imptoved domination. Works now for hard resources. * Add branching decisions in RosterSP. Add forbid/authorize day-shift and arcs. WARNING: should check if an arc is forbidden before taking it in general. * Acyclic SPP and bug in enumeration Still something to revise when checking availability of enumerated arcs in debug mode * Very minor : default parameters * Change Timer* to Timer in all classes. Add many tests in pricer main to get an average and more accuracy in improvements. * Remove the check on the number of arguments. Instead, look at the presence of the arg --dir. * Removed never used constructors in expanders. * Implement a consecutive constraint for shifts on weekend. * Fix indices issues in scenario for shift type. * Define the hard constraints associated to the soft. * Change node shift with an abstract shift. * First version of all back expanders * New merge labels, mini bugs and get rid of useless arg in expand * Every merge function for bidirectional label setting * Use Stretch within Pattern now. * Include members in Label for merge in back-propagation * Backward expansion is implemented but not tested * Huge refactoring. Change the way the resources and costs are defined. Costs are now defined as a function of the resources in the master, and the resources are also defined in the master, they can just be overriden with new ones using the resources defined. In the process, several bugs have been corrected in the resources, especially ConsShiftResource. * Fix small bug when setting custom output file for dynamic pricer. Co-authored-by: Jérémy <jeremy.omer@gmail.com> Co-authored-by: Jérémy Omer <jeremyomer@users.noreply.github.com> Co-authored-by: AntoineJkl <62143212+AntoineJkl@users.noreply.github.com> Co-authored-by: legraina <antoine.legrain@gmail.com> 06 March 2021, 17:58:57 UTC
77d1d66 New pricer (#63) * State of dev before merging master to branch * Before review * Code analysis corrections * Minor revisions after review comments * Pure virtual AbstractShift and fix some pointer issues * Initialization of MyRosterSp - delete Constraint.h - move resources to a specific folder - create MyRCGraph, MyRosterSP, MyRCSPPSolver - instantiate the above - fix some Clang-tidy issues * Compute base costs of RCArcs * Add dual cost and prepare RCSPPsolver * Add dual costs and prepare RCSPPsolver (everything staged) * Do not merge? For Windows changes I had to make those changes, otherwise the code would not compile on Windows. I guess these changes won't hurt, but not sure. Small addendum to Readme file to talk about Windows install. * Some todos * Update MyRCSPP.h * Update MyRCSPP.cpp * Changes during meeting JO/AG * Update MyRosterSP.cpp * Update MyRCLabel.h * Update MyRCSPP.h * Update MyRCSPP.cpp * Update TotalShiftResource.cpp * Update ConsShiftResource.cpp * Update TotalWeekendsResource.cpp * Update TotalWeekendsResource.h * Update MyRCSPP.cpp * Update TotalWeekendsResource.h * Update MyRCLabel.h * Meeting with AG * Refactoring to remove boost and PrincipalGraph from SubProble * RCSPP solver * Correction of minor bugs * before meeting JO/AG * Minor changes * Mods meeting JO/AG (1) * Some TODOs and renamings * Correct expansion of total weekend and cost of incomplete weekends * Preprocessing graph * Improved domination (first version) * Correction bug in comparator * new generation of random dual costs * Correction of minor bug * Improvements after profiling * Minor changes * Start implementing a pool of labels * Label pools implemented and other cpu optimizations * Improvements of CPU ok * Remove ResourceLabel * Update MyRCLabel.cpp * Update MyRCSPP.h * Revert "Update MyRCSPP.h" This reverts commit c2342734957603a8537358f8aef6330289412f70. * Enumeration of sub-paths (version 1) * Minor modifications * Switch timer to chrono header It has not been validated on Mac * Minor modifications * Enumeration of sub paths (final version) + Correction of minor bugs * adding RCSPPSolver's options in paramfile * Minor changes * New Readme for the tests with the new pricer * Fix system_clock in Tools as well as inefficient calls to nodes and arcs in MyRCSSP and RCGraph. * Optimized the MMyRCSPP code. Especially changed the label pool. * Finished RCSSP optimization. * Change minor things in ressources definitions. * Cosmetic changes on MyRoster. * Create a struct to storethe resources values. * remove ResourceValues copy when expanding. * Removed inactive expander. * Move the computation of worst costs in the resources. * Fix ResourceValues default consumption as not initialized for the 1rst label. Highly optimized code. * Replace Shift operator >= and some minor revisions * Revert "Replace Shift operator >= and some minor revisions" This reverts commit cfb012691beb576ad8b708187ddc6be0bd463312. * Revert "Revert "Replace Shift operator >= and some minor revisions"" This reverts commit 0fed270f9fbcbfb748086f602237035ee7a26cc5. * Small bug corrected Ok, we get the expected results * Revise PricerMain to make it a test function without inputs * Minor changes while progressing in the pull request * Improved outputs of the main pricer * Modified the domination loop for sorted option * Small revision/clarification/optimization for minimumCostToSinksOption_ * Minor revisions while reviewing the enumeration of subpaths * Not much * Check if had constraints are satisfied * Check hard resources when expanding. * Fix the computation of the cost in the roster boost subproblem: override wasn't correctly changed. * Add an option to choose SP solver type. * Fix several bugs in MyRoster as it wasn't debug for reuse. Now works with arg --rcspp-type MY_SOLVER. * Fix timer for dynamic scheduler. Change pricer main to add some tests in the workflows. * code cpplint free. * Removed dual costs for weekend in the MyRoster. Also count the preprocessing time in the solving time of the rcspp. Co-authored-by: Jérémy <jeremy.omer@gmail.com> Co-authored-by: Jérémy Omer <jeremyomer@users.noreply.github.com> Co-authored-by: AntoineJkl <62143212+AntoineJkl@users.noreply.github.com> Co-authored-by: legraina <antoine.legrain@gmail.com> 01 March 2021, 21:39:40 UTC
ab58b23 Dual stabilization (#53) * Add Jemeremy comments. * Fix cpplint errors. 02 February 2021, 20:41:24 UTC
e9ea245 Rolling horizon (#51) * Fix all the fix/unfix functions. * Add stabilization, but not really working. * Fixissue with fractional roster. 17 June 2020, 22:34:52 UTC
1c440d8 New branch decisions (#49) * Fix memory issues and bad access. * Fix sopping BCP. Change again solver status to keep TIME LIMIT (transformed to FEASIBLE in SolveByConnectedComponents. 12 June 2020, 13:38:34 UTC
9007d73 Benchmark (#47) * Add benchmark, fix two bugs: initial cons days were not computed correctly in RosterPattern, InputPath were initialized when building a new DeterministicSolver for the component wise case. * Use BCP_Fatal_Error instead of own exception. Fix issue with BCP_fatal_error::abort_on_error: BCP was changing it back and forth to true and false. Now always set to false before throwing an error. * Removed static counters. Stats are now stored on thee delete of the LpModel to avoid any access to a deleted element. * Fix UB segfault. * Fix solver status and issue when infeasible. 08 June 2020, 18:07:08 UTC
5081fb8 Add PricerMain (#44) * Add PricerMain * Fix a bug on the reset value when pricing in the boost rc graph: using a larger value to be sure to reach 0. 04 June 2020, 01:06:08 UTC
35c1289 Dominance by penalty (#41) * Two major modifications: - for dominance, check worst penalty; - for pricing, add a method on an arc instead of a graph. 02 June 2020, 01:30:25 UTC
ff71fe0 Cpplint (#38) * cpplint all the sources * add cpplint in workflow code analysis * fix action.yml file 30 May 2020, 14:06:36 UTC
e5059e0 Update README.md 28 May 2020, 14:03:58 UTC
99b9551 Update README.md 28 May 2020, 13:55:38 UTC
861ddfc Add actions for the tests (#24) * Add action.yml and main.yml workflow * updated docker-entrypoint.sh * Removed .travis.yml 28 May 2020, 13:49:31 UTC
dcb8bbd Improved diving policy (#26) * Print an error when the LB decreased. * Change also a little the tree exploration of BCP to backtrack more often to be able to increase the LB more quickly. * For disjoint strategy, only forbid shift with a positive dual cost. 22 May 2020, 02:15:46 UTC
db2674a Improve roster sp (#25) * Add multi threading on the resolutions of the subproblem. Disable by default. Add a ThreadsPool class in the tools to help with multi threading. * Commented boost rc_spp. removed most of boost objects in the rc_spp. * Add more comments about parallelization of subproblems. * For disjoint strategy, only forbid shift with a positive dual cost. * Fixed bug in the pricing of the short rotations. Because of the feasibility variables, the bestCost could be to small as a first value (all the short succession have a higher cost). Also changed the settings for restart the strategy of the sublem to the default strategy: always restart when master is infeasible (needs a lot of new columns). * Refactoring to separate the generic subproblem from the each implementation. Also refactoring of the RCGraph to separate the graph from the algorithm to solve it. 21 May 2020, 22:16:01 UTC
8de318d Actions (#18) * Add action and workflow. * Fix some major bugs in the branching decisions: swap incorrect, cut incorrect (by default active). * Throw an error when the reduced cost is not correct. * Fix reduced cost issue caused by incorrect roster pricing of the historical state when start by resting. 15 May 2020, 16:29:48 UTC
22d7839 Merge pull request #22 from wssuite/cg_stallling Cg stallling and lagrangian bound 15 May 2020, 03:32:21 UTC
5725654 Merge branch 'master' into cg_stallling 15 May 2020, 01:07:12 UTC
6e8f333 Update README.md 15 May 2020, 01:06:44 UTC
962c9a8 Update .travis.yml 14 May 2020, 21:44:25 UTC
7f433bd Just a minor bug raises an error 13 May 2020, 16:38:53 UTC
809b567 Merge pull request #13 from wssuite/pricing_roster Pricing roster 13 May 2020, 12:51:17 UTC
0856620 Test workflow 13 May 2020, 03:36:25 UTC
4e17139 Create main.yml 13 May 2020, 03:34:57 UTC
64d5fb1 Add action 13 May 2020, 03:33:26 UTC
c84748e Merge branch 'master' of github.com:legraina/pnursescheduler 13 May 2020, 03:30:34 UTC
63135e2 Put weights and epsilon as parameters. Move addForbiddenShifts in pattern class implementation. 13 May 2020, 02:12:58 UTC
28188eb Change the name checkDualCost for checkReducedCost in the pattern classes. 12 May 2020, 19:59:15 UTC
fdd414f do not take into account needRest for isDijointWith in RosterPattern. 12 May 2020, 19:50:40 UTC
6a31ff0 Change minDualCost_ to minReducedCost_ and minReducedCosts_ to minOptimalReducedCosts_. 12 May 2020, 19:40:35 UTC
28c90fb Add isAnyShift() method in scenario. 12 May 2020, 19:37:35 UTC
bca5307 Add a flag to know if a lagrangian bound is available. 12 May 2020, 17:13:33 UTC
17be84d Removed options_.solutionAlgorithm_ 12 May 2020, 17:03:13 UTC
11aa3f0 Print statistics for each node. 12 May 2020, 16:56:58 UTC
5df3ab7 Add Lagrangian bound and change a little the strategy for the subproblem in order to get the optimal solution of a sub-problem faster, and be able to fathom also faster. 11 May 2020, 18:35:14 UTC
eae991a Fixed Dockerfile. 11 May 2020, 17:21:24 UTC
3f06b85 Merge remote-tracking branch 'wssuite/cg_stallling' 11 May 2020, 16:11:59 UTC
a7bfa45 working roster with bcp. 11 May 2020, 13:41:30 UTC
9b3acaf Merge branch 'cg_stallling' of github.com:wssuite/NurseScheduler into pricing_roster 09 May 2020, 03:30:48 UTC
b87399f fix issues on travis and docker-entrypoint script. 09 May 2020, 03:30:26 UTC
a504999 Merge branch 'master' into pricing_roster 09 May 2020, 03:29:11 UTC
221d8e5 Merge branch 'cg_stallling' of github.com:wssuite/NurseScheduler 08 May 2020, 18:08:16 UTC
52eb0ae Updated Dockerfile. 08 May 2020, 17:46:28 UTC
08236ab Deactivate lagrangian bound fatoming by default. 08 May 2020, 17:44:50 UTC
748c3a9 Merge remote-tracking branch 'wssuite/cg_stallling' 08 May 2020, 08:22:57 UTC
f1d6645 Deacitvate lagrangian bound.Error in the computation, cannot use the max reduced cost. 07 May 2020, 02:12:24 UTC
7e43a23 Fix column generation stalling: counters were not correctly reseted, and especially the LB was wrong as the generation wasn't finishing. 07 May 2020, 01:14:01 UTC
9d76645 Merge pull request #21 from wssuite/dockerhub Updated dockerfile 06 May 2020, 17:03:13 UTC
a1cabab Updated dockerfile 06 May 2020, 17:01:43 UTC
51e77fa Merge pull request #3 from sergebisaillon/ObjectOrientedSP Major Refactoring and modifications 06 May 2020, 15:02:00 UTC
74db3b8 Fix bug in branchOnShifts. std::abs funtion was not working properly. create an NSExeption that BCP catch -> Tools::throwerror not catch, Tools::trowexception catch. 06 May 2020, 04:26:18 UTC
77be4a9 Travis updated. Add a python script to run the tests locally. 04 May 2020, 04:20:59 UTC
9e998e9 Find an important bug: the core variables needs to be dealt in sequence, so creating core variables, and then generating columns, and adding some core create some invalid read. Fixed and also add some checks to ensure that won't happen again. 04 May 2020, 01:30:27 UTC
fb31225 Moved to shared pointer for data to avoid memory leaks. Add asan librairy in the debug build to help find memory runtime errors. 02 May 2020, 18:29:23 UTC
6235f15 remove BranchOnPenalty from the BranchingTree. 01 May 2020, 01:22:47 UTC
4e27743 change strategy for subproblem: update level based on success and branching. Always optimal. 30 April 2020, 03:13:19 UTC
7e2095d removed comments in RCGraph.cpp 29 April 2020, 19:32:27 UTC
back to top