ORMSwareTM Suite is a product of Ushar Enterprises Inc, Littleton, Colorado, USA

Objects in this document may appear out of sequence if not viewed with Internet Explorer

Product Overview Home Primer Hands-on tutorial and ORMSware downloads
ORMSware NMOD Modeling Examples

If you want to dig deeper into the underpinnings of various aspects of a model, you may want to explore NMOD Primer for topics of interest to you as well as go through the Hands-on Tutorial. Chapter 1 of the tutorial contains instructions on downloading and test-driving fully functional ORMSware modeling environment and all models presented at this site.

Every solution is easy once you know what it is and how it is done. If you want to assure as objective an assessment of the modeling power, flexibility and ease of use of NMOD as possible, it is a good idea to reflect on and map out first how you would solve these example problems using other tools with which you are familiar, before checking out the NMOD solutions presented here.

Example Problem 1: Equipment Replacement Plan

This is a model for determining top n alternative strategies for replacing a machine in a production operation. Decision choices in the problem involve buying new or older model of the machine with the option of replacing it any given year with another new or older model, repeating this process over a desired planning horizon. Older models have lower purchase costs, but higher maintenance costs and lower trade-in values.

This example shows the ease with which alternative solution threads can be recorded and retrieved in NMOD. The reader will also be able to see how the model can be easily expanded to accommodate more equipment age choices, price changes of new equipment over time, present value of alternatives, changeover costs, etc.

Some of the concepts introduced in this example:

  • Automatic expansion of NMOD environment to accommodate the growing size of a problem.
  • Use of Microsoft Excel tables in NMOD models.
  • OR arcs (cause target nodes to fire as soon as flows along these arcs reach the nodes -- i.e. zero wait).
  • Transformation of execution thread properties as they traverse model's network.
  • Use of Duration property of network objects and Event queue to easily order alternatives by cost.
  • Trivial short path method to rank alternative solution paths.
  • TravelNotes method to record decision-consequence path of each solution alternative.
  • ShowTravelNotes method to retrieve decision-consequence path of each solution alternative.
  • Use of Dummy nodes.
  • Extending a network object's content beyond what can be entered through Visio interface.
  • Declaring model level user-defined variables.
  • Cycles.
  • Start node.
  • Normal node.
  • Role property of network objects (nodes and arcs).
  • Using IF-THEN-ELSE construct.

Example Problem 2: Fleet Migration/State Transition

This is a descriptive model for determining fleet migration of a rent-a-car operation, given the probability of where a customer is likely to drop off a vehicle picked up at one of its outlets.

The reader will be able to see how this simple model can be easily extended to formulate pricing strategies, perform tradeoff analyses to determine charges and discounts for improving profitability, develop cost-effective operational plans, etc.

Some of the concepts introduced in this example:

  • Parallel/multiple arcs between any given pair of nodes.
  • AND arcs and AND arc multipliers.
  • Changing AND arc multipliers programmatically (using ChangeConvergenceRequirement function).
  • Convergence node (node with at least one AND arc terminating in it).
  • Incorporating user-defined variables and procedures at model level.
  • Working with user-defined vectors/matrices/arrays.
  • Using the DO construct.
  • Writing results to external files.

Example Problem 3: Capacity Planning and Analysis

This is a quick-and-dirty deterministic model for sizing daily tax returns processing capacities of IRS Regional Centers. The objective of the model was to make a contract bid competitive by minimizing investment costs while meeting all required performance specs.

The reader will be able to see how the model can be extended to accommodate the probabilistic nature of of tax returns arrival rates and service (returns processing) rates, network architecture and performance for supporting returns processing, workload balancing among the centers, etc., all with the objective of reducing costs while meeting performance specs.

Some of the concepts introduced in this example:

  • Using NMOD's Optimization Module.
  • Goal-seeking.
  • Temporal arc -- a connection that comes into existence temporarily to connect a node or arc to another node or arc. Temporal arc disappears once the connection is complete.

Example Problem 4: Order Processing Operations

This is a simplified, truncated version of a back-office operations tool which a small business uses to transform orders received over the Internet to packages to be shipped.

This example also demonstrates NMOD's hierarchical modeling capabilities. The reader will be able to see how the tool can be expanded to connect the business's order processing operations to financial performance analysis, inventory management, etc.

Some of the concepts introduced in this example:

  • Network node.
  • Subnets to create hierarchical networks.
  • Mixing physical process and logical process objects in networks.
  • Recursive network referencing.
  • NMOD's table lookup function.
  • Return node.
  • Arrival node.
  • Departure node.
  • One of the ways NMOD compresses modeling process cycle time.
  • Using inputs from ASCII text files.
  • Using CASE construct.

Example Problem 5: Fleet Flow

This is a descriptive model for calculating total costs driven by fleet size of a dedicated trucking services operation.

We show how this descriptive (what-if) model is turned into a prescriptive (optimization/if-what) model for finding minimum cost fleet size by having the model respond to Fibonacci search stimuli from NMOD's Optimization Module.

The reader will also be able to see how the simple model presented here can be expanded to include maintenance operations, driver availability, etc. to improve financial and operational performance of a truck fleet dedicated to a customer; and, still, in spite of the increased complexity of the what-if model, be able to use the same Fibonacci search with no additional effort to find optimum fleet size.

Some of the concepts introduced in this example:

  • Optimization of an integer control/decision/... variable using Fibonacci search.
  • Using Trivial Search to demonstrate to stakeholders validity of Fibonacci search results.
  • Temporal arcs with Duration greater than zero.
  • User-defined data structures/derived types.
  • Tracking extrema of performance variables and values of related variables.
  • Adding to built-in convergence logic.
  • Using MergeSum function at Convergence nodes.
Example Problem 6: Minimizing Transportation Costs from Distribution Centers to Stores

A retail chain in UK with 772 stores and 9 distribution centers (DCs) wanted a system for computing minimum-cost distribution of roughly 13 million cases of goods every week. Rather than exploring all 6948 links the company wanted the program to pick only one of 3 closest DCs to supply each store, limiting DCs-to-stores supply links to just 2316.

We first show you an algorithm attempted by an IT consultant bidding on the project. Most people are likely to try such an approach, only to discover that there will not be enough time in their lifetime to get an answer to the problem.

We then we go on to show an Operations Research/Management Science (dynamic programming) formulation of the problem and the ease with which the solution was implemented with ORMSware. It produces a quick-and-dirty Initial Plan in a split-second and the Final Plan in a few seconds on a Windows 7 HP 2400 MHz notebook computer.

Some of the concepts introduced in this example:

  • More examples of creating and using derived types (data structures)
  • Using queues to sort items and hold entities (Store and Retrieve)
  • Procedures and functions available for getting status information about queues
  • More use signals and signal targets (temporal arcs/connections)
  • Using Events Queue to sequence entities according to cost factors
  • Dynamic memory allocation
  • Use of pointers

Example Problem N: Sequencing and traveling salesman with time, rests and costs

Operations management problems such as machine scheduling, vehicle routing, crew scheduling, tool path design, and numerous others, involve the issue of knowing how to systematically find all possible ways any given set of items or activities can be ordered/arranged/sequenced, even if all sequences may not be explicitly and exhaustively explored.

The focus of this example is not the sequences (permutations) generating algorithm developed with ORMSware or its expansion to solve an asymmetric traveling salesman problem (ATSP). Rather, the focus is the general process of getting to the final formulation of a model using typical ORMSware thinking.

If you are not familiar with existing permutation algorithms, we have provided a link to show you a programming language implementation of a permutations algorithm for comparison with the ORMSware solution.  

Some of the concepts covered in this example:

  • BeenAt functions and procedures that initialize, track and set node visitation histories of surrogates.
  • Notation for, and working with, array sections (e.g. vector out of a table/matrix).
  • Reading tables from Excel, which have non-default lower limits for rows and columns.
  • Echo statement ({?|variable}) for tracking and collecting values of a given property or variable.

Note: Just for fun after demonstrating the ORMSware thinking process, we have extended the Permutations model to solve some asymmetric TSPs with complex cost/performance functions. The algorithm is dirty-but-quick, and can be refined to reduce computational loads for solving larger problems.

Click link above to review Problem N.

Downloads

Downloads of all examples are available in Chapter 1 of the Hands-on Tutorial. However, you can also view all of the examples and their results online without downloading anything.

If you wish to change inputs and execute these models on your PC, or modify them in someway, you will have to NETrans them and create their EXEcutables. To do that you will need to download and install ORMSware and its support components, all of which are available for free trial. Instructions for all of that are available at the above link as well.