Welcome to Hava

What is Hava?

Hava is a computer application that evaluates collections of interrelated, recursively defined, mathematical rules.
Like a spreadsheet, it can define a value in terms of neighboring values.
Unlike a spreadsheet, it exposes definitions in a text-based source file, and it permits values to be arranged more generally than a rectangular grid.
It is particularly well-suited to solving staged optimization problems that occur in industrial logistics, economics and finance.

Hava is intended primarily for classroom use. It cannot solve large-scale, real-world problems.
However, it is easy to learn and easy to use, and it can be used to solve many prototypical problems
that would otherwise be too difficult to assign as homework.

How do I get started with Hava?

Hava requires Java 1.5 or later. Click here to make sure your browser is so enabled.
If you are new to Hava, please read the language tutorial. It won't take more than 5 minutes.
Once you have a sense of the language, you can simply run Hava from this website.

What can Hava do?

Each of the following pages shows how Hava can be used to solve a familiar problem.
Financial option Determine the value today of a future payoff that depends on the average price of an asset.
Knapsack Choose a set of objects to maximize value subject to a resource constraint.
Machine repair Decide whether to repair a machine, without knowing for sure whether it has failed.
Market survey Determine whether the value of information justify the cost of collecting it.
Nash equilibrium Find the equilibrium states of a non-cooperative game.
Natural resource Determine the value of a lease to develop a gold mine.
Newsvendor Choose the initial inventory for a period of uncertain demand.
Number theory Find prime numbers, and more.
Poker Estimate probabilities of winning hands from samples.

The final page presents an extensive example that requires several Hava source files.
Portfolio Analysis Choose a mix of assets to balance risk vs. return.

More Information

For language details, consult the technical reference.
If you are wondering what distinguishes Hava from other computational methods, read our essay on Why Hava?
To run Hava as an application on your computer, download the JAR executable.
(Unlike the web version, the application can open and save Hava files to your local drive.)
You can even write your own Java program that incorporates Hava functionality - see example and API.

Software developed by Steven T. Hackman and Loren K. Platzman. If you are interested in contributing, please let us know.
The name "Hava" is a play on the words "Hashtable" and "Java", technical building blocks from which Hava is constructed.
Feedback is always welcome. Please send your comments to me at shackman@isye.gatech.edu.