D'une manière générale, la plupart des sociétés pétrolières, afin de faire des prévisions à long terme, à moyen terme et à court terme, établissent des plans sur l'approvisionnement en bruts, sur l'utilisation de leurs outils de travail et sur l'alimentation de leur débouchés potentiels.
Pour ce faire, elles font appel à la recherche opérationnelle basée sur l'utilisation de la programmation linéaire en flux continu (ou en variables continues), le seul inconvénient étant l'écriture d'une matrice linéaire. En effet, très souvent, les grandes compagnies internationales possèdent des dizaines de raffineries réparties à travers le monde entier. Si une telle matrice devait être écrite à la main, il faudrait une équipe de dizaines d'ingénieurs spécialistes et des mois de travail en continu.
Heureusement, il existe des langages spécialisés qui permettent de générer une telle matrice avec plus de facilité et moins de temps. Un de ces langages existe depuis 1968 et a été créé par une petite société basée à New Jersey (USA), Haverly Systems Inc. (HSI), créée par Harry Haverly.
Au départ, HSI a créé deux langages différents, l'un pour être utilisé par des ordinateurs de Control Data et appelé PDS, Problem Descriptor System, et l'autre pour être utilisé par des ordinateurs IBM et appelé OMNI. Mais par la suite, le PDS a été abandonné au profit d'OMNI qui tourne à l'heure actuelle sur toutes les machines.
OMNI est un générateur de matrice linéaire bidimensionnelle et en même temps un langage pour créer des rapports en clair. Moyennant une définition précise des contraintes, ainsi que le sens de celles-ci, des variables, des données techniques physiques, chimiques, financiers, etc., on peut générer des matrices de très grande taille avec des milliers d'équations en un laps de temps très court.
Dans le langage du métier, une matrice linéaire (voir programmation linéaire) comporte deux entrées :
En plus il y a ce qu'on appelle des « seconds membres » (Right Hand Side, RHS) pour entrer les valeurs des contraintes et des bornes (ou bounds) pour entrer des valeurs dans les variables pour l'optimisation.
Nous allons décrire ci-après, et de manière simplifiée, la structure d'un générateur de matrice linéaire de PL (programmation linéaire). On commence par créer un dictionnaire, dans lequel on décrit les différentes classes de :
puis on crée un certain nombre de tables contenant :
À partir de ces données, on crée des contraintes, puis des variables utilisant ces contraintes et enfin, les valeurs des contraintes et celles des variables.
En général, l'écriture d'une telle matrice, entre le moment où l'on collecte les premières données et celui où l'on lance la première optimisation, demande environ 9 mois pour une seule raffinerie complexe.
Presque toutes les grandes compagnies utilisent cet outil. Bien sûr, il existe à l'heure actuelle des progiciels générateurs automatiques de matrice linéaire et de rapports en clair (PIM'S de Bechtel par exemple), mais ce ne sont que des boîtes noires où l'utilisateur ne sait pas très bien ce qui se passe à l'intérieur. Par comparaison, disons que ces derniers sont des vêtements en prêt à porter tandis que OMNI est un vêtement sur mesure. Ces progiciels sont réservés aux personnes qui répugnent les mathématiques et les générateurs de matrices par écritures sont réservés aux personnes qui considèrent que les mathématiques sont une distraction.
OMNI est donc un générateur de matrice linéaire et un outil pour créer des rapports en clair, c’est-à-dire des tableaux reproduisant les résultats obtenus après optimisation et dont tout commun des mortels peut lire et comprendre. En effet, pour l'optimisation du problème, toutes les contraintes (ou lignes ou rows) sont codées. Il en est de même pour les variables (ou colonnes ou columns). En écrivant les tableaux de rapports en clair, le spécialiste en programmation et en pétrole va traduire et transformer ces codes en langage clair et normal compréhensible pour tout le monde.
C'est à l'aide de la matrice linéaire qu'on fait de la recherche opérationnelle servant de guide dans l'établissement des plans d'approvisionnement, de production et de distribution.
En effet, afin de prévoir à long, moyen et court termes, l'approvisionnement en bruts, l'utilisation des unités de raffinage et l'alimentation des débouchés, on construit :
Pour faire un modèle linéaire, il faut d'abord avoir des données techniques et économiques concernant le problème. Aussi, la plupart des compagnies ont des bases de données diverses pour alimenter en données, le modèle linéaire. Ci-après se trouve une de ces bases de données ; ce n'est pas la seule base qui existe, mais c'est l'une des bases indispensables :