Praktyczne wykorzystanie programu GenMachine do optymalnej selekcji portfela papierów wartościowych, których oczekiwana stopa zwrotu reprezentowana jest przez przedziały ostre wymagało zaimplementowania dodatkowego obiektu C++ klasy Interval, w której znalazły się funkcje operatorowe realizujące działania arytmetyczne oraz porównywanie przedziałów.
Podane poniżej deklaracje metod klasy Interval pozwalaj ą na wykonywanie czterech podstawowych działań pomiędzy dwoma przedziałami oraz pomiędzy przedziałem i liczbą rzeczywistą. Ich implementacja oparta jest na tzw. “naiwnym” podejściu do problemu działań arytmetycznych, wyjaśnionym w rozdziale 3 [cytowanej pracy magisterskiej].
Interval operator += (const Interval &inter); // dodaj i przypisz Interval operator -= (const Interval &inter); // odejmij i przypisz Interval operator *= (const Interval &inter); // pomnóż i przypisz Interval operator /= (const Interval &inter); // podziel i przypisz
Interval operator += ( real r ); Interval operator -= ( real r ); Interval operator *= ( real r ); Interval operator /= ( real r );
Ciekawym zagadnieniem okazała się implementacja metod porównywania wartości przedziałów na podstawie tabeli 3.1. Schemat blokowy na rysunku 4.2. pokazuje sposób porównania wartości przedziałów [ a1 , a2 ] i [ b1 , b2 ], obejmując wszystkie również trywialne przypadki względnego położenia przedziałów. Klatki wyjścia oznaczone symbolami od $1 do $6 wskazują na kolejne wzory w tabeli 3.1. Zaimplementowana w ten sposób funkcja operatorowa zwraca w wyniku liczbę rzeczywistą równą.
Rys. 4.2. Schemat blokowy operatora porównywania przedziałów [ ai , a2 ] i [ bi , b2 ]