One embodiment is directed generally to a computer system, and in particular to a computer system that displays a graphical user interface for optimized selection of a project team.
A responsibility of a project manager is to forecast the resource demand profile that will be required by a project before the work begins. The resource demand profile can be defined as the roles, skills and number of resources that will be necessary to complete the work on a project. The project manager may work in conjunction with other members of the Project Management Office (“PMO”), the planner/scheduler, and/or field personnel to create this resource demand profile at the project level, and then work together with resource managers and procurement managers to fulfill the resource needs of the project in a timely fashion.
The staffing can be done by running a manual search on each of the requirements. The search then generates a list of resources to choose from based on their availability. Then, the project/resource manager could choose from the list of resources and could choose to staff the corresponding role requirement.
Resource finding is one of the key areas in staffing the resource demand profile requirements of a project, and manually searching for role staffing as described above may be time consuming, inefficient, and/or costly.
One embodiment is a system that manages resource staffing. The system receives requirements for one or more positions to be staffed for a project team and an allocated budget for staffing the project team. For each position, the system selects eligible resources that meet the requirements of the position. Based on a selected optimization method, the system determines optimal resource assignments for the project team such that the optimal resource assignments include, for each position, a resource assignment of one of the corresponding eligible resources to the position. The system then displays a graphical user interface (“GUI”) that includes the positions, the optimal resource assignments, and the eligible resources. In some embodiments, the system receives modified requirements for one or more positions, and, in response, updates the eligible resources based on the modified position requirements, determines updated optimal resource assignments based on at least the updated eligible resources and the selected optimization method, and updates the GUI to reflect the modified position requirements and to display the updated optimal resource assignments.
One embodiment is a system that provides a graphical user interface for dynamically searching resources to staff a project team and optimizes the assignment of resources to the project team. The system can determine an optimal combination of resources to staff a project team based on the allocated budget for a project and/or other project variables that are defined in a resource demand profile. The system can determine the optimal combination of resources using a cost optimizer and/or proficiency optimizer, as chosen by a user (e.g., a project/resource manager). The system can enable the user to manually assign a resource and/or manually cancel an assignment and re-calculate the optimal combination taking into account the user's manual selections and the user's chosen optimization method (e.g., by cost and/or by proficiency).
Computer readable media may be any available media that can be accessed by processor 22 and includes both volatile and nonvolatile media, removable and non-removable media, and communication media. Communication media may include computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
Processor 22 is further coupled via bus 12 to a display 24, such as a Liquid Crystal Display (“LCD”), for displaying information to a user. A keyboard 26 and a cursor control device 28, such as a computer mouse, is further coupled to bus 12 to enable a user to interface with system 10.
In one embodiment, memory 14 stores software modules that provide functionality when executed by processor 22. The modules include an operating system 15 that provides operating system functionality for system 10. The modules further include a project team assignment interface (or “project team assignment optimizer interface”) (or “resource staffing”) module 18 that generates optimal project teams based on a user selected optimization method and/or provides a graphical user interface for assigning resources to a project team, as disclosed in more detail below. System 10 can be part of a larger system, such as an enterprise resource planning (“ERP”) system. Therefore, system 10 will typically include one or more additional functional modules 19 to include the additional functionality. A database 17 is coupled to bus 12 to provide centralized storage for modules 18 and 19 and store project management information, resource information, etc.
In one embodiment, system 10 assists a user (e.g., a project/resource manager) in choosing resources for staffing project team positions by providing a graphical user interface that presents the user with an auto-generated selection (or assignment) of resources that is optimized using a cost optimizer and/or a skills/proficiency optimizer, as chosen by the user. The cost optimizer can, for example, optimize resource selection by cost to select the cheapest resource available that meets a minimum desired proficiency for each position. The proficiency optimizer can, for example, optimize resource selection by proficiencies to select a combination of resources that maximizes total team proficiency while staying within the available budget. The graphical user interface can allow the user to change a position's requirements (e.g., skills, minimum proficiency, start date, finish date, etc.) and then automatically update the auto-generated optimal assignment of resources taking the updated position requirements into account. The graphical user interface can include a screen that includes a list of the positions, a list of eligible resources for each position (i.e., resources meeting the position's requirements), as well as the optimum/assigned choice among those resources. The graphical user interface can allow the user to manually override any assignments and then automatically update the auto-generated optimal assignment of resources taking the user's manual assignments into account to permit the user to see the new optimum team that results after incorporating the repercussions of the change. The graphical user interface can also provide detailed information about each resource from the same screen to help the user to make more informed staffing decisions.
In some embodiments, system 10 can provide a graphical user interface that allows the user to manually assign a particular resource to a position, lock/unlock a resource to a position, and/or cancel a resource with respect to a position. Such embodiments enable a hybrid-optimization by, for example, allowing the user to staff some positions with highly proficient but expensive resources, locking those assignments, and selecting the cost optimizer to cause system 10 to auto-generate assignments for the remaining positions that are the most cost-effective choices.
In some embodiments, system 10 can provide a graphical user interface that allows the user to specify multiple skills for a position, minimum proficiencies for each skill, and weights for each skill.
Position column 310 shows the position requirements such as, for example, the role, the minimum proficiency (out of 5), skills, and assignment dates. Each cell can include an edit button 314 at the top right corner that, upon user selection (e.g., clicking), causes a dialog box to be displayed to allow the user to change the requirements, as shown, for example, in
Team member column 312 shows the resource assigned to the position (either an auto-generated assignment or a manual assignment). In some embodiments, cells of team member column 312 can be left blank to indicate that the position is unstaffed. Cells of team member column 312 can display the following details: resource name, cost, and/or proficiency (out of 5). Cells of team member column 312 can include a cross button 316 to cancel the assignment, and a lock/unlock button 318 to hold (or release) the resource in position when the optimizer service runs. Cells of team member column 312 can also include a details button, which launches a details dialog showing more information about the resource, as shown, for example, in
Each row in resource pool grid 304 corresponds to the position shown in position column 310 of project team grid 302. Each row of resource pool grid 304 shows all the resources that fulfil the corresponding position's requirements, and can be sorted, for example, by cost. In some embodiments, when sorting resources by cost, if two resources have the same cost, the one with higher proficiency is ranked ahead. Each cell of resource pool grid 304 displays, for example, the following information about the resource: name, cost, and/or proficiency. Each cell of resource pool grid 304 includes a hide button 320 and a details button (similar to the details button of each cell of team member column 312) which pops up a details dialog showing more information about the resource.
In operation, a user can select a resource to be assigned to the corresponding position by double-clicking its cell. Upon selection, the cell is shifted from resource pool grid 304 to team member column 312 and is “locked”, as shown, for example, in
When the requirements for a position are updated to require multiple skills, the assigned resource and the resources available for that position shown in the corresponding row of team member column 312 and resource pool grid 304 are each updated to show skills and skill proficiencies, and the overall proficiency for each resource is calculated as the weighted average of the resource's skill proficiencies for those skills required by the position.
At 1102, resource requirements are defined for each position to be staffed. In some embodiments, a resource demand profile is provided that specifies the requirements for one or more positions to be staffed for a project team. The resource demand profile can also specify the allocated budget for staffing the project team. In some embodiments, module 18 can provide a graphical user interface to allow the user to enter the resource requirements or load previously entered resource requirements (e.g., by entering or loading a resource demand profile similar to resource demand profile 200).
At 1104, module 18 determines which resources meet the criteria for each position by scanning/searching a pool of available resources to generate, for each position, a list of resources that meet the criteria for that position.
Although not shown, in some embodiments, once module 18 has generated a list of eligible resources for each open position, the user is asked whether he wants the system to optimize the selection by cost or by overall proficiency. In some other embodiments, an optimizer is set as the default optimizer.
At 1106, module 18 determines optimal resource assignments for each unlocked position based on a user specified (or a default) optimization method. A cost optimizer fills each open or unlocked position with the cheapest eligible resource to minimize the overall budget consumed. Cost optimizer mode can be activated, for example, when the user selects the “Minimize Expenses” option of optimization mode slider 308 shown in
At 1108, module 18 displays/updates a graphical user interface such as, for example, graphical user interface 300 shown in
At 1112, a user edits criteria for a position. Module 18 can allow users to edit position requirements by displaying an edit requirements dialog such as edit requirements dialog 402 of
At 1114, a user manually selects a resource to be assigned to a position. Module 18 can allow users to manually assign a resource to a position when users double click on a resource as shown, for example, in
At 1116, a user cancels an assignment. Users can cancel auto-generated assignments or manual user assignments by, for example, clicking the resource's cross button 316 as shown in
At 1118, a user unlocks a locked assignment. Users can unlock a locked assignment by, for example, clicking lock icon 608 as shown in
At 1120, a user changes the selected optimization method. The user can change the selected optimization method by, for example, sliding optimization mode slider 308 to select a different optimization mode. Changing the optimization mode causes module 18 to update all unlocked assignments based on the new mode chosen.
At 1110, a user accepts the present assignment of resources to the positions for the project team.
Although not shown, a user can lock an assignment to indicate that the selected optimizer should not change the particular resource assignment when generating auto-generated optimal assignments.
In some embodiments, the functionality of the flow diagram of
At 1202, module 18 initially staffs all empty or unlocked positions with the cheapest eligible resources (minimizing budget consumption). If the number of unlocked positions in the project team is n, consider the resultant project team assignments to be denoted by R1, R2, R3, . . . Rn.
At 1204, module 18 filters out non-beneficial items from resource selection pool. For each given position p (pε{1, 2, 3, . . . n}), the available resource pool is narrowed down to a set S(p) by removing those resources from further consideration, that either have a lower proficiency than Rp or will cause overshooting of the total project budget if assigned.
At 1206, module 18 computes a fitness value (“MPD”) for each of the possible replacements. For a given position p (pε{1, 2, 3, . . . n}), each of the k(p) possible replacements is considered one by one (k(p) denotes the number of resources present in S(p)). Fitness values fp,1, fp,2, . . . fp,k(p) are determined by computing the proficiency gained per additional dollar spent on the replacement. For every xε{1, 2, 3, . . . k(p)}:
This can be thought of as a way to measure “bang for your buck” and will be referred to as the MPD factor (Marginal Proficiency per Dollar).
At 1208, module 18 selects the fittest replacement. For each position p (pε{1, 2, 3, . . . n}), the replacement that yields the highest MPD factor is marked as R′p and stored along with its MPD (fitness value, fp), into an n×2 array (at the pth position).
The following replacement array results: [[R′1, f1], [R′2, f2], [R′3, f3], . . . [R′n, fn]].
At 1210, module 18 determines the position with the best fit resource, across all project team assignments. From the replacement array in turn, the resource R′m which has the maximum fitness value or MPD (mε{1, 2, 3, . . . n} such that fm=fmax=max(f1, f2, . . . fn)) is found. The corresponding project team assignment Rm is replaced with R′m. 1204, 1206, and 1208 are repeated exclusively for the mth position to update the corresponding values in the replacement array with the next fittest replacement resource. For all other positions, 1204 is repeated. If it is found that for a position (or positions), the fittest choice (R′p in the replacement array) has been excluded, 1206 and 1208 are repeated for that/those position(s).
At 1212, module 18 determines whether processing should terminate or whether 1210 should be repeated (including repeating 1204-1208 as needed) to iteratively update the project team until a replacement with higher proficiency can no longer be afforded within the available budget (i.e. until effectively out of budget), or the highest proficiency resources have already been selected. At that point, the optimum team in terms of proficiency has been determined, given the budget constraint.
The superior performance of the functionality of
Embodiments provide a novel approach of optimizing the staffing of a project team based on position requirements using Cost Optimization and/or Proficiency Optimization. Such embodiments can include a graphical user interface that displays position information, optimal assignments for each position, and other available resources for each position. The graphical user interface can allow a user to select/change the optimization method, edit resource requirements, and manually override an optimal assignment; and the selected optimization method can be re-run based on and taking into account the user's changes and/or manual overrides.
As disclosed, embodiments comprise a system that auto-generates optimal resource assignments for project team staffing based on a user selected optimization mode and re-calculates optimal assignments based on user input such as modification of position requirements and/or overriding an auto-generated assignment.
Several embodiments are specifically illustrated and/or described herein. However, it will be appreciated that modifications and variations of the disclosed embodiments are covered by the above teachings and within the purview of the appended claims without departing from the spirit and intended scope of the invention.