We apologize for the manual not being well maintained. For explanation, we will answer the questions in no particular order. Also, the project used in the example is
https://www.nurse-scheduling-software.com/manuals/python_manuals/chapter15/
Change Algorithm
There are Algorithm1-4, with the Default being Algorithm 1. Algorithm 1 is the fastest, most stable, and most applicable for most projects. As described later, only Algorithm 1 has a cause analysis mechanism, making it the recommended choice for initial project debugging.
Algorithm 1 is a heuristic system. It outputs quasi-optimal solutions at high speed.
Algorithm 2 is an open-source MIP solver, Highs by Prof. Julian Hall et al., University of Edinburgh. It does not terminate until an exact solution is found.
A mathematical solver implements algorithm 3/4. It is mainly used for academic benchmarking purposes. It does not terminate until an exact solution can be calculated. But you can get the incumbent solution by stopping the solver.
Number Of Solutions
The ‘Number Of Solutions’ parameter specifies the number of solutions the solver should output. This is valid only for Algorithm1 shift projects. However, in some cases, you may want to explore multiple solutions for comparison or other purposes. In the following example, ten is specified to get ten separate solutions.
In the following example, ten is specified to get ten separate solutions.
![](https://www.nurse-scheduling-software.com/images/constraint_faqs/user_1991.png)
Number Of CPUs
The number of CPUs used in Algorithm 1; in Algorithm 2, the number of CPUs is fixed at 1; in Algorithm 3/4, all available CPUs are used.
In Algorithm 1, specifying multiple CPUs only sometimes improves the results. Since the results will be different for each solving process, setting 1 is fine.
Hard Timeout
Algorithm 1 ’s solver process is divided into two parts.
The first is finding a solution that satisfies all hard constraints. Typically, the solver finds the solution within a few seconds, but there are rare projects that exceed 60 seconds.
The larger the project, the more likely this is to be the case; the Hard Timeout value should be increased according to the project size.
Soft Timeout
The second process is to optimize soft constraints. In this process, a number is displayed on the right pane.
The optimization begins after the first hard constraint-satisfying query process is completed.
The example below shows optimization starting at an objective function value of 176, time 0.013 seconds, and gradually decreasing. Since the first optimization solution is 0.013 seconds, a Hard Timeout of 0.013 seconds is sufficient in this example.
![](https://www.nurse-scheduling-software.com/images/constraint_faqs/user_1995.png)
The optimization process is internally divided into several phases, each with a Soft Timeout. Typically, you should set it to 10-20 seconds.
Final Soft Timeout
The final Soft Timeout is the soft timeout value for the final phase of the optimization process.
The longer the soft timeout, the closer the exact solution will be. Adjust as needed.
Use Language Constraint
Check this box to see if you are using Python constraints.
https://www.nurse-scheduling-software.com/manuals/python_manuals/
Python Post Operation
Check this box if you want to output the solution in a formatted format in Python. (You also need to check Use Language Constraint).
Python Constraint is a separate process.
For example, you can use the onboard Pywin32 to output the solution in the user’s format to an Excel sheet as follows.
![](https://www.nurse-scheduling-software.com/images/constraint_faqs/user_1996.png)
Overwride allowable errors on Python
In the following Python constraint functions, allowable errors are fixed in the language and cannot be changed.
SeqError(min,max,allowable_errors,list)
SoftSeqComp(offset,allowable_errors,listA,listB)
SoftLinearComp(eq_mode, CoffA, CoffB, offset, allowable_errors,listA,listB);.
However, when Python allowable error override is turned on, the allowable error values for the quadrature parameters are Override. Checking the box allows you to vary the allowable errors without modifying the Python source.
In the example below, the Python source has a tolerance of 4, and the GUI sets it to 1, which means that the solution will be hard-constrained to 4 ± 1. As a result, the solution is also within that range.
![](https://www.nurse-scheduling-software.com/images/constraint_faqs/user_1993.png)
Error Analysis
Rest assured, Algorithm 1 has cause analysis, which is valid only for Algorithm 1. Please check it to ensure a thorough error analysis.
If checked, the cause analysis mechanism will work.
For example, as a continuation of the example above, let’s assume that the scheduled input is a hard constraint, and the allowed error of the Python constraint is 0.
![](https://www.nurse-scheduling-software.com/images/constraint_faqs/user_1997.png)
Then, everything becomes a hard constraint. As a result, no solution exists due to the inconsistency of the constraints.
However, causal analysis works, and we can enumerate the factors as hints, as shown in the figure below.
![](https://www.nurse-scheduling-software.com/images/constraint_faqs/user_1994.png)
Double-click to jump to the relevant constraint.
Other Items
Other Items are Obsolete and should be set to Default.