ALLO Limbaj Algebric pentru Optimizare Lineara

     Limbajul ALLO este un limbaj specializat pentru modelarea matematica lineara. El permite modelatorului sa scrie cu usurinta modele lineare daca pentru acestea se cunoaste o formulare algebrica in care toate constantele implicate in constructie sunt cunoscute aprioric si nu necesita intrebari relativ la valoare altele decit cele impuse in conditia de validare permisa. S-a dorit ca acest limbaj sa fie cit mai aproapiat de limbajul algebric (cunoscut modelatorilor) lucru ce usureaza invatarea  sa si mentine o oarecare asemanare vizuala a celor doua exprimari. Limbajul algebric inseamna pentru noi limbajul formulelor matematice fara alte cuvinte straine de acestea care ar imbunatati forta de exprimare a oricarui limbaj. Exista o limitare a fortei de exprimare care se resimte in scrierea unor modele complexe si mai mult a unor prototipuri de modele ce necesita intrebari multiple si cai de selectie pentru coeficienti sau chiar pentru variabile model, functii obiectiv sau restrictii. Totusi prezenta fisierelor secundare si a functiilor implicite percepute ca actiuni intermediare in diverse puncte ale modelului permit scrierea in ALLO chiar a unor prototipuri.
    In limbajul ALLO modelatorul poate sa-si defineasca variabilele auxiliare, variabilele modelului, functiile modelului precum si restrictiile acestuia. Variabilele auxiliare pot primi valori in momentul definirii si pot fi supuse unor conditii de validare. Aceste valori se pot gasi direct in fisierul sursa principal dar ele pot fi in diverse fisiere secundare cu date citate in fisierul sursa principal lucru ce permite construirea de prototipuri.
     Ca variabilele auxiliare avem acces la domenii intregi sau la domenii reale din care unele pot fi cunoscute abia in faza de "executie" a unor instructiuni de definire variabile model,functii model sau restrictii model.
     Modelatorul dispune de doua instructiuni compuse FOR si SUM care permit initializarea unor masive auxiliare pe baza unor date cunoscute pina in acel punct, scierea de conditii concentrate de validare a componentelor unor variabile auxiliare de tip masiv, scrierea unor conditii concentrate de bounds pentru variabile model de tip masiv, definirea unor expresii simbolice concentrate care participa la construirea si definirea functiilor obiectiv si a restrictiilor scalare sau de tip masiv.
     Tipurile de date auxiliare recunoscute sunt : intregi, reali, domenii intregi, domenii reale si indici. Un tip special de data auxiliara este nume intern de fisier care admite ca valoare o specificatie de fisier DOS. Acest nume de variabila auxiliara poate sa fie citat in celelalte instructiuni de definire variabile auxiliare si anume atunci cind dorim ca pentru aceasta sa-i atribuim valoarea/valorile din fisierul concret pe care il reprezinta. Definirea numelor interne de fisier secundar cu date poate fi facuta oriunde in sectiunea variabilelor auxiliare. Dupa referire un asemenea fisier este deschis si poate fi citit pentru asignare de date prin comanda  READ <numele intern > ce poate sa apartina unei instructiuni de tip INTEGER sau REAL. Revenirea dintr-un astfel de fisier pe textul din fisierul principal se produce ca urmare a satisfacerii comenzii de initializare a variabilei auxiliare respective sau ca urmare a unei erori sintactice sau semantice.
     Variabilele auxiliare de tip intreg sau de tip real pot fi organizate si in structuri compuse de tip masiv. In structura masiv pot fi definite dupa dorinta sau necesitate si unele variabile model, functii obiectiv sau restrictii model. Un tip special de variabila auxiliara care nu trebuie sa fie definit explicit este variabila indice utilizata in instructiunile ce contin blocuri FOR sau SUM.
 Limbajul ALLO este un limbaj cu libertate maxima fata de zone albe sau neproductive formate din linii vide, taburi, spatii si comentarii care pot sa se desfasoare pe una sau mai multe linii sursa.
     Limbajul ALLO nu este senzitiv la litere mari sau mici. El impune restrictii de utilizare numai in scopul precizat asupra unui set cuvinte cheie care pot fi scrise cu litere mari/mici sau in combinatie dupa cum agreaza modelatorul.
     O problema speciala in implementarea translatorului a fost aceea a generarii de nume pentru linii si coloane in fisierul standard MPS avind in vedere limita de 8 caractere impusa pentru acestea. O varianta a fost liniarizarea completa a tuturor liniilor/coloanelor si generarea de nume lineare cu dictionar specific atasat fiecarui model. A doua varianta a fost acea de a utiliza nume de cel mult 8 caractere (pentru variabile model, functii obiectiv, restrictii model care fac obiectul utilizarii ulterioare). Mai mult pentru variabilele model, variabilele functii obiectiv sau restrictii de tip masiv numele trebuie sa fie mai scurt de 8 caractere in asa fel incit sa permita ca in diferenta de caractere a numelui si pina la 8 sa se poata reprezinta liniar toate celulele acestui masiv care vor avea ca nume MPS numele masivului concatenat cu indicele liniar corespunzator. Utilizatorul trebuie sa-si aleaga cu grija aceste nume generice.
     Translatorul ALLO este un task independent integrat in sistemul de optimizare lineara (SAMO) functional sub WINDOWS 3.1. Sistemul mai are in componenta un manager de fisiere, un editor de fisiere text si un optimizator pentru rezolvarea problemelor lineare. Prin comanda de apel translator sistemul transmite acestuia numele fisierului principal de procesat care este transmis mai departe optimizatorului daca faza de translatare s-a terminat corect (fara erori) si a fost generat fisierul MPS corespunzator.
     Limbajul ALLO a aparut dintr-o necesitate practica. Cu ajutorul lui am  scris chiar modele de mari dimensiuni pe care nu le-am fi putut scrie altfel decit cu un efort considerabil. Pe baza echivalentului MPS rezultat din procesul de translatare am obtinut solutia optima lucru ce ne-a fost de un real folos in cercetarile noastre.