Rozdział 1
W chwili obecnej istnieje bardzo dużo systemów służących do rozwiązywania różnorodnych problemów programowania matematycznego, bądź bardziej ogólnych problemów optymalizacji. Są one szeroko wykorzystywane nie tylko przez placówki naukowe, lecz również przez instytucje badawcze, agencje konsultingowe i innego rodzaju organizacje o charakterze komercyjnym. Trudno się temu dziwić, zważywszy na to, iż rozwiązania pewnych problemów mogą mieć bezpośrednią i dużą wartość biznesową. Pozwalają one na maksymalizowanie zysków lub minimalizowanie kosztów w procesach, które da się ściśle - matematycznie -zdefiniować, w kategoriach celu, ograniczeń i zmiennych decyzyjnych.
Przy pomocy tego typu narzędzi można zarówno modelować złożone procesy chemiczne i fizyczne, symulować wyniki finansowo-ekonomiczne przedsiębiorstw, jak i wykorzystywać je do tworzenia prognoz rynkowych, energetycznych czy ekologicznych. A zatem zakres ich możliwych zastosowań jest szeroki - wśród nich można nawet znaleźć przykłady takie jak optymalizacja strategii ochrony ekosystemów przed emisjami zanieczyszczeń, czy kreowanie scenariuszy rozwoju gospodarczego całego kraju.
Systemy te są bardzo różnorodne i niezależne od siebie. Często nie są również funkcjonalnie dobrze rozdzielone - łączą w sobie interfejs użytkownika, narzędzia do tworzenia modeli optymalizacji i programy rozwiązujące zdefiniowane problemy - tzw. solvery. Niekiedy nawet z jednym pakietem związany jest specyficzny język do definiowania problemów matematycznych - jak np. w systemie GAMS. Te fakty niestety prowadzą do związania klienta z konkretnymi narzędziami z jednego zestawu. Brak jest systemu, który byłby ujednoliconą warstwą abstrakcji pomiędzy różnymi użytkownikami a wieloma typami narzędzi związanych z optymalizacją problemów matematycznych i stanowił podstawę dla pełnego wykorzystania ich wielości i różnorodności.
1