Choice of Loans
Contents
Problem description
Mr Chic, director of a chain of shops selling clothes, wishes to open three new shops: one in London, one in Munich, and one in Rome. To open a new shop costs respectively $ 2.5 million, $ 1 million and $ 1.7 million. To finance his project, he calls at three different banks.
Rates offered by the banks for the different projects
+------+------+------+----+ | |London|Munich|Rome| +------+------+------+----+ |Bank 1| 5.0% | 6.5% |6.1%| |Bank 2| 5.2% | 6.2% |6.2%| |Bank 3| 5.5% | 5.8% |6.5%| +------+------+------+----+
Depending on the location of the shops and the evaluation of the related risks, each bank decides to finance at most $ 3 million over 8 years with different interest rates for the shops. Determine the amount to borrow from each bank for financing each shop in order to minimize the total expenses of Mr Chic.
Variables
rates The rates costs Cost per site maxloan Max loan per bank loanlength Length of the loan in years
Reference
Applications of optimization... Gueret, Prins, Seveaux
% Marcus Edvall, Tomlab Optimization Inc, E-mail: tomlab@tomopt.com % Copyright (c) 2005-2009 by Tomlab Optimization Inc., $Release: 7.2.0$ % Written Oct 7, 2005. Last modified Apr 8, 2009.
Problem setup
rates = [ 5.0 6.5 6.1 ;... 5.2 6.2 6.2 ;... 5.5 5.8 6.5 ]; costs = [2.5 1.0 1.7]'*1e6; maxloan = 3e6; loanlength = 8; b = size(rates,1); s = size(rates,2); borrow = tom('borrow',b,s); % No variables are binary. bnds = {0 <= borrow}; % Shop constraints con1 = {sum(borrow,1)' == costs}; % Bank constraints con2 = {sum(borrow,2) <= maxloan}; % Objective rates = rates/100; objective = sum(sum(borrow.*(rates./(1-(1+rates).^(-loanlength))))); constraints = {bnds, con1, con2}; options = struct; options.solver = 'cplex'; options.name = 'Depot Location'; sol = ezsolve(objective,constraints,[],options); PriLev = 1; if PriLev > 0 temp = sol.borrow; for i = 1:s, site = temp(:,i); idx = find(site); disp(['To finance shop at site ' num2str(i)]) for j = 1:length(idx), disp([' take a loan of ' num2str(site(idx(j))) ... ' in bank ' num2str(idx(j))]) end end end % MODIFICATION LOG % % 051130 med Created. % 060116 per Added documentation. % 090308 med Converted to tomSym
Problem type appears to be: lp ===== * * * =================================================================== * * * TOMLAB - Tomlab Optimization Inc. Development license 999001. Valid to 2010-02-05 ===================================================================================== Problem: --- 1: Depot Location f_k 822180.656176676160000000 f(x_0) 0.000000000000000000 Solver: CPLEX. EXIT=0. INFORM=1. CPLEX Dual Simplex LP solver Optimal solution found FuncEv 4 Iter 4 To finance shop at site 1 take a loan of 2500000 in bank 1 To finance shop at site 2 take a loan of 1000000 in bank 3 To finance shop at site 3 take a loan of 500000 in bank 1 take a loan of 1200000 in bank 2