This tutorial describes the use and options of UDESS application.

Creating a new project

In order to create a new project on UDESS, the first step is to name the new project and select a working folder somewhere in your computer. Once this folder has been selected you need a text file with the activities information. Once the file is loaded the program display the first ten lines of this.

udess project tab

The activity file must have at least:

  1. A column with the name of the activity (Activity ID).
  2. A column with the value of the activity (Total profit, if positive, or cost, if negative).
  3. A column with the maximum rate performed by month of the activity. This value is assumed to be greater than zero.

Additionally we can use columns with the following attributes:

  1. Pre Cost Attr: Cost of starting the activity.
  2. Post Cost Attr: Cost of ending the activity.
  3. Length: Of the activity (in meters, for example).
  4. MinRate: Minimum rate (in percentage) to be performed by month if the activity starts.
  5. SubActivity: If the activity is a sub-activity this column must have the name of the parent activity.
  6. Data for others attributes must be numeric.

udess activity attributes

The next tab correspond to Time Periods, here we can modify the number of periods of the project and the length (in month) of each one. Furthermore we can select different discount rate by period, for our project.

The option "One Year, Monthly..." adds twelve period of length 1 and the option "3 Months, Weekly..." adds 12 periods of length 0.25. Additionally you can add or remove period pressing the "Add Period" and "Remove Period" buttons, respectively. In all these cases the default value for the discount rate is zero. To modify the length of some period or the value of the discount rate you have to double-click in the box and write the desired value. The decimal separator is the point.

udess time periods 3 months weekly

Once you are satisfied with the Project settings click the "Next" button and the precedence tab is appears.

udess precedence list of activities

The fastest way to create the precedence is through a text file using the "Import for Textfile" option. The first row of the file precedence is reserved for the names of the columns: "predecessor", "successor", "group". An example of precedence file.

udess example precedence file

The group column must have the group index of the predecessor-successor pair. Each successor activity can have several groups with several predecessor activities each one. The group index can be -1, 1, 2, 3, 4, ... and the index -1 is used when only individual arcs. In this case, in the optimization process, these groups are associated with the index zero.

Moreover we can add groups using the "Add Precedence" option. To do this you need to provide the name of the successor activity and the name of the predecessor activity in the respective boxes, then click the "Add Precedences" button and the next dialog window will appear.

udess add precedence

If you are just adding individual arcs you can press "No", otherwise press "Yes". In this case the next dialog window will appear. The image shows a successor activity with a predecessor already incorporated. For the new predecessor we can assign a new group or add to an existing group. Once you have selected the group of new predecessor press "OK" and it will appear in the list of predecessors of the activity.

udess precedence group dialog

It is also possible to save these new groups in to a file using the "Save To TextFile" option.

When we save the project at this stage or when we move to the next tab by pressing "Next" precedence groups are saved in a file called "projectName.prec".

In the constraints tab we can add different types of constraints which are described below. In any constraint tab you can add new constraints pressing the "+" button and you can remove constraints selecting the constraint you want to remove and click on the "-" button.

  • Operational Resource Constraint: Implements a resource constraint that limits the overall consumption of activities for a given resource. You must select an attribute representing the consumption of the activities of the given resource. Resource limits must be specified in a per month basis. This constraint is applied to all activities in the instance. The "None" attribute represents a consumption of one.

udess operational resource constraint

  • Starting Resource Capacity Constraint: Implements a resource constraint that limits the overall consumption of starting activities for a given resource. This constraint is applied to the starting variables of the activities. You must select an attribute representing the consumption of the activities of the given resource. Resource limits must be specified in a per month basis. This constraint is applied to all activities in the instance. The "None" attribute represents a consumption of one.

udess starting resource capacity constraint

  • Progress Limit Constraint: Implements a constraint that forces a certain progress of an activity upon a certain time range. "Minimum Progress" and "Maximum Progress" must be number between zero and one.

udess progress limit constraint 2

udess progress limit constraint

  • Range Resource Constraint: Implements a resource constraint that limits the overall consumption of activities for a given resource. Activities must have an attribute representing the consumption of the given resource. Resource limits must be specified in a per month basis. Unlike Operational Resource Constraint this constraint limits the amount of consumption in the time range and not specified for each time-period. As you can see, for this type of constraint you can select a list of activities to be applied.

udess range resource constraint

  • Activity Incompatibility Constraint: Corresponds to a constraint that limits the simultaneous development of a group of activities in a given time range. "Amount" means the maximum number of activities that can be performed simultaneously.

udess activity incompatibility constraint

  • Starting Period Constraint: Implements a constraint limiting the interval of time in which a group of activities should start.

udess starting period constraint

Once you click "Next" the information of the added constraints is saved and the "Solver Tab" appears.

udess solver settings

In the "Select Solver" window you can choose which solver do you want to use between the solvers available (Gurobi and CBC) .

In the "Select Method" option you can choose which method do you want to use to solve the problem. The "Full MIP" method solves the problem of scheduling by solving a mixed integer programming problem. By the time the Heuristic method is not available, use "Full MIP" instead.

Among the advanced options you can choose a MIPGap (in percentage). The default value is 5%. Also you can check if you want to write the LP File of this problem. If so, a file called "projectName.lp" is created in the project folder. Finally, if the finish flag if check , force to finish activities within the project horizon.

In the output frame you can choose a name for the output schedule. The default value is "output.txt" and the file is created in the project folder. The first line of the output file has the value of the NPV. Below is a list of activities to periods beginning and end of them and progress developed in each period.

If the model is optimized the "View Schedule" option is available. The first part of this view shows the progress of each activity in each time period, in a 0-1 scale. If Operational Resource Constraints, Range Resource Constraints or Starting Capacity Constraints are in the model, the used resources are available in the second part of this view. When a resource is added the second table shows the accumulated consumption of the resource at each time period.

udess schedule view

Loading a Project

You can load a project via the "Load Project" from the "Project" menu. The project is opened in the last tab that you were working on it. You can see previous tabs and change their information by clicking on "Edit" but when you do this all subsequent information is removed.

udess load project