(!******************************************************
Mosel Example Problems
======================
file h4retire.mos
`````````````````
Financing an early retirement scheme
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, Mar. 2002
*******************************************************!)
model "H-4 Retirement"
uses "mmxprs"
declarations
BONDS = {"SNCF","Fujitsu","Treasury"} ! Set of bonds
NT = 7 ! Length of planning period
YEARS = 1..NT
DEM: array(YEARS) of integer ! Annual payments for retirement
VALUE: array(BONDS) of real ! Unit price of bonds
RATE: array(BONDS) of real ! Remuneration rates paid by bonds
RET: array(BONDS) of real ! Unit annual interest of bonds
DUR: array(BONDS) of real ! Duration of loans
INTEREST: real ! Interest for other secure investment
buy: array(BONDS) of mpvar ! Number of bonds acquired
invest: array(YEARS) of mpvar ! Other annual investment
capital: mpvar ! Total capital required
end-declarations
initializations from 'h4retire.dat'
DEM VALUE RATE DUR INTEREST
end-initializations
forall(b in BONDS) RET(b):= VALUE(b)*RATE(b)/100
! Annual balances
capital - sum(b in BONDS) VALUE(b)*buy(b) - invest(1) = DEM(1)
forall(t in 2..NT)
sum(b in BONDS | DUR(b)+1>=t) (RET(b)*buy(b) +
if(DUR(b)+1=t, VALUE(b)*buy(b), 0)) +
(1+INTEREST/100)*invest(t-1) - if(t