Tank Loading


    {  Exmpl9.3-1_TankLoading.mpl  }

    {  Applications of Optimization with Xpress-MP  }

    {  Chapter 9.3,  Tank Loading,  Size: 12x35,  Page 175 }


#define minUse
!#define minNum

TITLE
    TankLoading;

INDEX
    tank := 1..9;
    liq := (benzol,butanol,propanol,styrene,thf);
    Tinit[liq,tank] := ((benzol,2),(thf,7));

DATA
    Cap[tank]   := (500,400,400,600,600,900,800,800,800);
    Qinit[tank] := (0,100,0,0,0,0,300,0,0);
    Arr[liq]    := (1200,700,1000,450,1200);
    Rest[liq]   := FORMULA(Arr - SUM(tank IN Tinit: Cap - Qinit));

VARIABLE
    Load[liq,tank] WHERE (Qinit = 0);

MODEL
#ifdef minUse
    MIN TankUse = SUM(liq,tank: Cap * Load);
#endif

#ifdef minNum
    MIN TankNum = SUM(liq,tank: Load);
#endif

SUBJECT TO

    DonotMixLiq[tank] -> NOMX:
        SUM(liq: Load) <= 1;

    LoadEmptyTanks[liq] -> EMP:
        SUM(tank: Cap * Load) >= Rest;

BINARY
    Load;

END


Back To Top | Maximal Home Page | List of Models | Previous Page | Next Page