MAGNET(ID:2869/)

Linear programming with matrix capabilities 


Linear programming systen with matrix manipulation capabilities
Shell Oil, 1960



References:
  • Buckland, J. A. "Input/output generators in mathematical programming" pp101.301-101.304 view details Abstract: The solution of a Mathematical Programming problem may be considered in three parts. These are the data processing problem of maintaining a technical file and of transforming and assembling information from it into the matrix format of the code, the technical computing problem of the mathematical programming code itself, and the final data processing problem of transforming the numerical output into an understandable form. Many mathematical codes do some data checking and modification. Also, a translation matrix of information from the input to the output data processing may effectively tie the two together. The three parts are obviously one problem, but may be considered separately. The most efficient way to run a mathematical programming code, of course, is to neglect generalization and to write a special program to suit the problem. This would also be the quickest to write for a single use. One cannot always afford the luxury of running with a hand-tailored program, however. There may be a variety of problem formulations, with some customers developing new approaches, while others have markedly varied models. It becomes worthwhile to generalize, and to develop general-purpose input/output generators.

    Extract: MAGNET, MATRAN
    Raw technical data normally appears as variable-length sets or arrays, and there is little connection from one set to another. If the data are to remain in such disconnected order, then essentially the Input Generator must be hand-tailored to it. Several efficient programs handle data in this way. In some applications, data are kept in column vectors ready to enter directly into the computation matrix. These sets may be physically picked up as a set of cards and entered into the problem. In other applications, changes or entries are made by knowing the exact "x, y" address of the elements in the computation matrix for each variable element. Some elements are kept fixed to make the approach practical. Then when a change of an element is called, its exact address, or possibly the bounds of a sub-array are specified in the program. These approaches require not only a detailed knowledge of the matrix structure in the machine, but also a fixed model formulation which is difficult to change. As an advantage, they use minimum memory locations.

    The listed technical data may also be handled as Fortran-like consecutive lists. The great advantage of this approach is that statements may be written in Fortran form, or a similar language, and an input generator may be quickly structured. The MATRAN program is such a modification of Fortran. The familiar coding method together with extra general operations make it possible to write a new Input Generator rapidly. One disadvantage of this method is that Fortran-like languages require consecutive lists, or looping through consecutive indices, to realize their best effect. Selection of spot items from lists require individualized statements. Also, such programs require data to be numerically listed, with a dictionary of numbers to names. This is not always a disadvantage, as it can help with sorts.

    The listed technical data, the subsequent computation matrix and the output matrix may be handled as threaded lists. These need not be strongly cross-connected lists such as used in many list-processing languages for problem-solving studies. They need only be threads that allow quick search through scattered elements. By "threaded list" is meant a list of data which are not necessarily in consecutive storage locations, but which have part of their storage word used to indicate the locations of the next element in the list. Each list is headed by a name, and the names are readily locatable. Various schemes can be worked for such threaded lists, depending on the density of the elements in the matrix, and their "strictness', or the amount they occupy consecutive locations. In such an approach, a higher language may be constructed to handle a search for a named element or group in a named array with simple statements. The operations of this language can with a single statement search a list, transform the desired elements and rethread another list for later sorting. Such a language has been specified in a group of programs called MAGNET for the data processing around the LP/90 Linear Programming Code. It is being programmed. Its advantage is that both consecutive data and scattered data are handled with similar statements. The operators can call out data that are scalars~ that are part of vectors, or are part of larger arrays. Operators will handle named or numbered data interchangeably. The disadvantage of the program is that it becomes a special problem-oriented language that requires learning by the problem coder.
          in Proceedings of the 16th ACM National Conference, January 1961 view details