|
|
|
|
@ -0,0 +1,58 @@
|
|
|
|
|
#=
|
|
|
|
|
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
|