A car manufacturer is looking to bring a new range of electric vehicles (EV) in the next fifive years. This will require an initial investment of £500M and has running costs of £100M per year after that. The predicted incomes from this range are:
Notice that the initial expenditure takes place in 2020.
1. Assume a discount rate of 1% per year, and perform analysis of discounted cashflflow. You should create a data table in R with variables Year, Outflflow and Inflflow in the fifirst three columns:
Write a function to analyse the cashflflow table
This function should modify the table by adding columns showing the net returns, the numbers of years to discount, the present value factors and the discounted returns. Your function must be able to take difffferent cashflflow tables and discount rates as the input, print the modifified cashflflow table and return the (total) net present value (NPV) for the investment. Include your code into the report. 5 marks
2. Decide whether or not this is a worthwhile investment, justifying your answer by your results. 1 mark
3. Calculate the NPV for discount rates of 2%, 3%, 4% and 5%, giving your answers to two decimal places. 1 mark
4. Plot NPV against the discount rates ranging from 0% to 5%. 1 mark
5. Use your graph to estimate the discount rate that would give an NPV of zero. What is the signifificance of this discount rate? (Hint: What happens at discount rates lower and higher than this fifigure?) 2 marks
2 Optimisation and linear programming (20%)
2.1 Solution using analysis and graphs (10%)
A car manufacturer produces conventional cars, which generate £4,000 profifit per car, and a newly developed EVs, which generate £5,000 per car. The objective is to maximise profifit by selecting the right combination of conventional cars and EVs, subject to the following constraints:
- The factory can produce up to 1,000 conventional cars and up to 500 EVs per day.
- The logistics and warehouse facilities do not allow for production of more than 750 vehicles per day in total (i.e. both conventional and EVs).
- The manufacturer has a contract to produce at least 100 conventional and 50 EVs per day.
Your task is to:
- Write the objective function. 1 mark
- Write the constraints for production and logistics. 2 marks
- Plot or draw the feasible region and the isoprofifit line. 3 marks
- Find the optimal numbers of conventional cars and EVs to be produced (the solution) in order to achieve the maximum profifit (the optimal value). 2 marks
- Explain the solution analytically or using the graph. 2 marks
2.2 Solution using solver (10%)
Assume that the manufacturer adds hybrid vehicles to their range, which generate £4,500 profifit per car. The factory can produce up to 1,000 hybrid cars per day, and there are no obligations to the smallest number. The warehouse constraints remain the same.
Your task is to:
- Write the updated objective function. 1 mark
- Write the updated constraints for production and logistics. 2 marks
- Use the lpSolve library in R to fifind the solution (an optimal combination of three types of cars) and the optimal value (the maximum profifit) to this problem. Include your code into the report. 5 marks
- What happens if the contract to supply at least 100 conventional cars is replaced by the same number of hybrid cars? 2 marks
3 Data import, plotting and transformation (20%)
In this task, you should use the crypto-candles dataset, which contains daily exchange rates between major crypto-currencies between Jan 2019—Sept 2020. This dataset can be downloaded from the data folder on the course’s webpage (My Learning). There are two versions of this dataset:
The fifirst is a comma separated values (csv) fifile, and the second is an SQLite database. You can read the csv fifile with the read.csv command. Alternatively, you can connect to the database and read table candles from the db fifile using the dbReadTable command. You should assign the result to a variable, which you may call candles. Note that if you read data from the database, then the timestamps have to be converted into dates by the command: