> | restart: |
The Automobile Problem
Straightforward solution of optimization problem.
R = rebate (so profit per car is 1500-R)
N = number of cars sold
K = number of cars sold without rebate
P = total profit
> | N := ( 1 + R/100*0.15 ) * K; |
> | P := (1500-R) * N; |
> | dPdR := diff( P, R ); |
> | dPdR := simplify( diff( P, R ) ); |
The optimal rebate is ...
> | Rstar := solve( dPdR=0, R ); |
Total profit with optimal rebate is ...
> | Pstar := subs( R=Rstar, P ); |
Number of cars sold with optimal rebate is ...
> | Nstar := subs( R=Rstar, N ); |
That's a lot of extra cars!
The car manufacturer will want to know the impact of the optimal rebate on the number of cars that will need to be manufactured!
Graphical sensitivity analysis.
i = increase in sales (in percent, so i was set to 15 in the model above)
> | N := ( 1 + R/100*i/100 ) * K; |
> | P := (1500-R) * N; |
> | dPdR := simplify( diff( P, R ) ); |
> | Rstar := solve( dPdR=0, R ); |
So we now know how Rstar depends on i.
A visual representation of this formula would be helpful.
What does a graph of Rstar versus i look like?
> | plot( Rstar, i = 0.. 30, -100..1000, color=black ); |
Interesting.
The model says that if sales only increase say 5% for every $100 of rebate offered, then it is best not to offer any rebate!
Where is the exact cutoff?
Set Rstar to zero, and solve for i ...
> | solve( Rstar=0, i ); |
Also, it appears that the amount of rebate levels off, even if sales really increase with every $100 of rebate offered.
Investigate the asymptotic value of the rebate with a limit ...
> | limit( Rstar, i=infinity ); |
This says that the automobile manufacturer never needs to offer a rebate greater than $750, no matter how eager people are to buy a car when a rebate is offered. That also seems like a worthwhile bit of information to pass back to the car manufacturer.
We can also investigate how the total profit and the total number of cars sold under optimal conditions depend on the value of i.
By optimal conditions, we mean with the rebate offered being equal to Rstar.
> | Pstar := subs( R=Rstar, P ); |
> | Nstar := subs( R=Rstar, N ); |
Note that we cannot plot P nor N, since these functions involve K for which we have no value.
But K is just a scaling factor, and we can scale it out.
> | plot( Pstar/K, i=0..30, color=black ); |
> | plot( Nstar/K, i=0..30, color=black ); |
Quantitative sensitivity analysis, using the definition of S(x,r).
> | sens_R_i := diff( Rstar, i ) * i / Rstar; |
> | subs( i=15, sens_R_i ); |
> | sens_P_i := diff( Pstar, i ) * i / Pstar; |
> | subs( i=15, sens_P_i ); |
> | sens_N_i := diff( Nstar, i ) * i / Nstar; |
> | subs( i=15, sens_N_i ); |
The manufacturer might want to see some specific values for the rebate, the profit, and the number of cars sold under different conditions, say i =10, 15, 20 ...
> | subs( i=10, [Rstar, Pstar, Nstar ] ); |
> | evalf(%); |
> | evalf( subs( i=15, [ Rstar, Pstar, Nstar ] ) ); |
> | evalf( subs( i=20, [ Rstar, Pstar, Nstar ] ) ); |
> |