Flexibility Structure Analyzer

Team leads: Sigrún Andradóttir, Hayriye Ayhan, Douglas G. Down
Student contributors of the initial version: Matt Fielding, Edward Peng, and Alvin Poon
Design & development of the new version: Hanane Zlitni

Introduction

The Flexibility Structure Analyzer is a web-based tool that allows people who wish to design a flexible system to check and verify whether their designed system's structure is as efficient or robust as a fully flexible system and to compare it with systems. Thus, the analyzer not only provides a quick way for users to check their designed flexible systems, but also facilitates the design process.

Definitions

Flexibility structure: The training of each server.

Number of tasks: The number of tasks in the system.

Number of servers: The number of servers in the system.

Arrival rate: The rate at which a task arrives in the system. It is denoted by λ.

Service rate: The rate at which a server can process each task. It is denoted by μ. In the service rates matrix, the rows represent the servers and the columns represent the tasks.

F matrix: A binary matrix in which the rows represent servers and the columns represent tasks. The value 1 means that the corresponding server is trained to perform the corresponding task. Otherwise, the value is 0.

Configuration: A vector in which the index corresponds to the server number while the entry corresponds to the task number. The entries are specifi ed depending on the value of the corresponding task and server in the F matrix. Confi gurations are especially useful to check whether the structure meets the speci fied constraints. If a con figuration violates the constraints, the corresponding service rates are set to 0.

Efficient structure: The system can handle the same load as a fully flexible system (i.e. all servers are trained to perform all tasks).

Robust structure: The system is able to shift excess capacity from any task to any other task.

Reference: S. Andradottir, H. Ayhan, and D.G. Down, Design Principles for Flexible Systems Production and Operations Management, 2013 (volume 22, issue 5), 1144-1156.

Importing Structures


The "Import a Structure" variation of the tool allows importing inputs as a CSV file as well as entering inputs on-screen. For guidance, a sample file is provided and can be downloaded by clicking the button above. The inputs must be entered row-by-row in the CSV file, or line-by-line on-screen, in the following order:

  1. Number of Tasks:
  2. *number of tasks*
  3. Number of Servers:
  4. *number of servers*
  5. Arrival Rates:
  6. *arrival rates vector*
  7. Service Rates:
  8. *service rates matrix*
  9. F Matrix:
  10. *F matrix*

Important note: If you wish to re-import a structure, please make sure to click the "Clear All" button first so previous inputs are deleted.

Importing Large Structures

Large structures and structures with many task-server assignments (i.e. the number of 1's in the F matrix) produce a very large number of configurations, which can cause errors in the tool as it's running on a browser.

To prevent such errors, please follow the steps below to compute the configurations and the corresponding service rates locally on your computer:

  1. Node.js is required to run the script. It can be downloaded at: https://nodejs.org/en/download/
  2. Download the script that generates the configurations and service rates by clicking the "Script" button above.
  3. Using the command line/terminal, navigate to the directory where the script is located.
  4. Copy the following command and execute it in the command line/terminal:

    node -p "require('./configs.js').computeConfigurations(*number of servers*,*number of tasks*,*f matrix*,*service rates*)"


    Below is an example of using the command to compute the configurations of a 3x3 structure:

    node -p "require('./configs.js').computeConfigurations(3,3,[[1,1,1],[1,0,1],[0,1,0]],[[2,1,4],[4,0,1],[0,2,0]])"

  5. A CSV file containing the configurations and the corresponding service rates should be generated in the same directory where the script is located. After adding the required additional inputs (see sample file in the next section), the generated CSV file can be imported to the tool for analysis.

Importing Configurations


The "Import Configurations" variation of the tool allows directly importing the configurations and service rates as a CSV file. For guidance, a sample file is provided and can be downloaded by clicking the button above. The inputs must be entered row-by-row in the CSV file in the following order:

  1. Number of Tasks:
  2. *number of tasks*
  3. Number of Servers:
  4. *number of servers*
  5. Arrival Rates:
  6. *arrival rates vector*
  7. Configurations:
  8. *configurations*
  9. Service Rates:
  10. *service rates*

Important note: If you wish to re-import a structure, please make sure to click the "Clear All" button first so previous inputs are deleted.

Importing Constraints

Both variations of the tool allow importing the minimum and maximum number of servers at a task as CSV files. For guidance, a sample file is provided and can be downloaded by clicking the button above. The constraints are imported row-by-row in the CSV files in the following order:

  1. Constraints:
  2. *constraints vector*

The indeces in the constraints vector represent the task number, while the entry in each index represents the minimum or maximum number of servers at the corresponding task.

Important note: If you wish to re-import constraints, please make sure to click the "Clear All" button first so previous constraints are deleted.