Notes from Kathy's Desk

Guidance, Ruminations, Thoughts, Miscellaneous Points and Suggestions

Notes from Kathy's Desk

Welcome. This is a space for us to share with you some of the interesting questions that come across our desks.  There are general articles about optimization -- Linear Programming, MIP, SLP, recursion -- as well as specific tips and best practice suggestions for GRTMPS. I hope there will be something here that will help you make a success of your Successive Linear Programming models.

17th September 2017:  Apologies for the long gap.   After sorting out my conference papers for MUG and updating the intermediate GRTMPS course that I'm teaching after, I ran out of steam for writing a technical article.  But here I am in San Diego, wide awake from 3 am, so I've put the jet lag to some constructive use and inspired by the choice of films on the flight over, here is a list of movies and books that I have enjoyed which feature mathematics or computing in the story-line.

Kathy 

New entries will appear fortnightly or thereabouts - Use the feedback form to ask to subscribe to the mailing list.
Comments, suggestions gratefully received via the usual e-mail addresses or here.

(Who is Kathy?)


Maths boring?  Never!  Here are some books and movies that illustrate the dramatic (and even comic) potential of a story that revolves around mathematics and computing
This is a guide to the hierarchy of data types in the GRTMPS input database: Model, Case, and Base/Alternate.
19 Butterfly  A butterfly flaps its wings in the Andes and ….
  
Do you ever find yourself grumbling because you got the scaling wrong on a set of numbers, or reversed your positives and negatives? The Multiply and Divide options in Paste Special allow you to sort the problem out with just a few clicks.
If you are working with GRTMPS database models and entering your data via the interface panels the older GRTMPS data table system may be something of a mystery to you.   However since the database information is exported into these tables before being processed it can be very helpful to be able to recognize the connections between panels and tables. Debugging tools such as data check, run time messages and file compare all refer to data in the internal tables, so knowing how the names work will make you more efficient.  Here is a brief guide.
Every variable and equation in an LP matrix generated via GRTMPS has a unique name built from user assigned codes and internal elements. Understanding them will help in debugging model problems, such as infeasibilities.
14 fast mouse

It is time for a new computer! What should I get?

We are often asked for computer hardware recommendations to reduce the time required to solve a GRTMPS planning case. Let's answer the hardware question and throw in some additional suggestions that can reduce run times. 

If you’ve ever wasted a few hours debugging a broken Excel workbook, then you will be as excited as I was when I learned about Go To Special last year. This does a lot of really interesting things, including finding all the cells in a worksheet with errors in them.   FindSelectMenu
If you have a model with multiple locations and / or periods, you may want to create limits that control sub-totals across all or some of these places and times.   If you can buy a stream at 3 locations in 3 periods, how many constraints would you need to cover every possible sub-set? How do you put them in the model?
 Are you using the “spooling” option when you submit runs? It might save you some run time. 
 10 SpoolTickBoxCloseUp
Have you ever entered a formula into Excel only to have it treat it as text and just sit there displaying what you typed without resolving it?
PTextFormat03 FormulaNotProcessed
When you are setting up the case data for your monthly plan, what price should you use for the crude or other materials that you have already bought?     Quite a few people I have asked thought the answer was obvious, but they did not all come up with the same answer.  
 
Distributed Recursion SLP* models require initial estimates for the pool properties that are being optimized and the pool’s distribution factors.  By default the pool property values are taken from the blending data and the error distribution is an even division over all the ways the pool can be used.  However, you can override these numbers by using a “181 file” as an additional input to the model.   Sometimes this helps the optimization converge sooner and may find you a better value.
 
Use181JustTopForHeader
Sorting your stream list can help you manage your data and make your reports easier to read.   In most full database models, this is quite a long list and it can be challenging to use and maintain as it is unlikely to fit on one screen.  (Even if you use a table-based model, you probably have a list of crude streams here – so read on.)
StreamstForHeader
 
The trend towards larger and larger models works against our desire for fast run times.  If you are adding many crudes, periods and / or locations, adjusting the OMNI settings for your GRTMPS model might help speed things up again.  It might even be essential to keep it running.
 
This is an introduction to the fundamental issue that brought recursion into refinery planning models and how this approximation allows us to optimize the qualities of products where some of the components are themselves mixtures of varying qualities. 
HOW DO YOU SEARCH FOR "*", "?" and "~" ?
If you are working with GRTMPS data in a spreadsheet -  data tables, SSIs, etc. -  you probably have some cells that contain asterisks(*) and question marks (?) since GRTMPS uses these as wild cards, replacing them with specific period, location and crude codes when the data is processed. The challenge on doing a Find for a specific entry with one of these characters is that Excel uses them as wild cards in search terms, “?” for any single character and “*” for any group of characters (as does the find in Windows Explorer and many editors).
WHAT DO YOU DO WHEN H/XPRESS FREEZES OVER?
Have you had a run that appears to freeze in the optimize step?  It might well have already done some recursion passes, but now it’s just sitting there in the Queue Manager like it is never going to finish.

Have you ever wondered why pool qualities sometimes have marginal values, even when there is no specification?

PoolMarginalValueOneLine