#= The purpose of this is to set up a 2-firm, finite, dynamic orbit use model. # TODO LIST - [ ] Set up loss functions - [ ] Set up utility functions - [ ] Set up State×Choice → Utility matrix - [ ] Set up VFI - [ ] Run it - [ ] ? - [ ] Profit!!!! =# #= Model Description V({sʲₜ}, Dₜ) = max{xⁱ} U(sⁱₜ) - F(xⁱ) + β V({sʲₜ₊₁}, Dₜ₊₁) Utility Function: Similar to Rao Rondina U(s) = ηs - ρ Laws of motion sʲₜ₊₁ = (1-l({sʲₜ},Dₜ))sʲₜ + xʲₜ Dₜ₊₁ = (1-δ)Dₜ + g(Dₜ) + γ⋅ ∑ⱼ sʲₜ⋅l({sʲₜ},Dₜ) + Γ⋅∑ xʲₜ Loss Function: Similar to Rao Rondina lⁱ({sʲₜ},Dₜ) = 1-exp( -α₁⋅∑{i≠j}sʲₜ - α₂⋅sʲₜ - α₃⋅Dₜ ) Autofragmentation Function: See Rao Rondina for a description (pg48) g(Dₜ) = ζ⋅Dₜ⋅(1-exp(-α₄⋅Dₜ)) Launch Costs F(xⁱ) = F⋅xⁱ =# #Setup Model Constants const α1 = 1e-2 const α2 = 1e-2 const α3 = 1e-2 const α4 = 1e-2 const ζ = 3 const δ = 2e-2 const F = 5 const γ = 10 const Γ = 2 #= Potential Structs Maybe a view onto the state space? With methods which show own and other sizes as vectors? =# #Loss Function function loss(constellation_sizes::Vector{<:Int},debris::Float64,owner::Int) 1-exp(-α1*sum(constellation_sizes) + (α1-α2)*constellation_sizes[owner] - α3*debris) end