You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Orbits/Code/Testing_combined.ipynb

384 lines
8.5 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "pleasant-equation",
"metadata": {},
"outputs": [],
"source": [
"import torch\n",
"from torch.autograd.functional import jacobian\n",
"import itertools\n",
"import math"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "moved-christian",
"metadata": {},
"outputs": [],
"source": [
"import combined as c"
]
},
{
"cell_type": "markdown",
"id": "pressed-slope",
"metadata": {},
"source": [
"So, this contains a bunch of initial tests of my abstractions. I eventually need to change these to assertions and package them."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "capable-equality",
"metadata": {},
"outputs": [],
"source": [
"#Instantiate some objects\n",
"pm = c.PhysicalModel(1.0,1e-6,0.01,2.0,1e-8)\n",
"s = c.States(torch.tensor([1.0,2,3]), torch.tensor([0.0]))\n",
"lp = c.LinearProfit(0,0.95,torch.tensor([1.0,0,0]), 5)\n",
"est_int = c.EstimandInterface(torch.tensor([[1.0,2,3,2]\n",
" ,[4,5,6,2]\n",
" ,[7,8,9,2]\n",
" ,[1,3,5,7]]\n",
" ),torch.ones(3))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "written-experience",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"stocks\ttensor([1., 2., 3.]) \n",
"debris\t tensor([0.])\n",
"3\n",
"1\n"
]
}
],
"source": [
"#test State object \n",
"print(s)\n",
"print(s.number_constellations)\n",
"print(s.number_debris_trackers)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "twelve-arthur",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Launch Decisions and Partial Derivativs of value function with\n",
"\tlaunches\n",
"\t\t tensor([1., 1., 1.])\n",
"\tPartials\n",
"\t\ttensor([[1., 2., 3., 2.],\n",
" [4., 5., 6., 2.],\n",
" [7., 8., 9., 2.],\n",
" [1., 3., 5., 7.]])\n",
"tensor([1., 1., 1.]) tensor([[1., 2., 3., 2.],\n",
" [4., 5., 6., 2.],\n",
" [7., 8., 9., 2.],\n",
" [1., 3., 5., 7.]])\n",
"tensor(1.)\n",
"tensor([0., 1., 0.])\n",
"tensor([2., 5., 8., 3.])\n",
"tensor([[0., 2., 0., 0.],\n",
" [0., 5., 0., 0.],\n",
" [0., 8., 0., 0.],\n",
" [0., 3., 0., 0.]])\n"
]
}
],
"source": [
"#Test estimand interface\n",
"print(est_int)\n",
"print(est_int.launches,est_int.partials)\n",
"\n",
"print(est_int.launch_single(1))\n",
"print(est_int.launch_vector(1))\n",
"print(est_int.partial_vector(1)) \n",
"print(est_int.partial_matrix(1)) #TODO: double check orientation"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "impressive-tribe",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"1.0\n",
"1e-06\n",
"0.01\n",
"2.0\n",
"1e-08\n",
"tensor([1.0133e-06, 2.0266e-06, 2.9802e-06])\n",
"tensor([1., 2., 3.]) tensor([0.])\n",
"tensor([1.0000, 1.0000, 1.0000]) tensor([12.0000])\n"
]
}
],
"source": [
"#Test physical model methods\n",
"print(pm)\n",
"print(pm.survival(s))\n",
"s2 = pm.transition(s,est_int)\n",
"print(s.stocks,s.debris)\n",
"print(s2.stocks,s2.debris)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "stretch-reward",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"LinearProfit\n",
" Benefit weights:\ttensor([1., 0., 0.])\n",
" launch cost:\t5\n",
" Deorbit cost:\t0\n",
"tensor(-4.)\n"
]
}
],
"source": [
"#test linear profit object\n",
"print(lp)\n",
"print(lp.period_benefit(s,est_int))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "advance-folder",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([1., 0., 0., 0.])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lp._period_benefit_jacobian_wrt_states( s.stocks, s.debris, est_int.launches)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "posted-subscriber",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([-5., 0., 0.])"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lp._period_benefit_jacobian_wrt_launches( s.stocks, s.debris, est_int.launches)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "divine-agenda",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([1., 0., 0., 0.])"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lp.period_benefit_jacobian_wrt_states( s, est_int)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "surgical-direction",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([[1., 2., 3., 2.],\n",
" [4., 5., 6., 2.],\n",
" [7., 8., 9., 2.],\n",
" [1., 3., 5., 7.]])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"est_int.partials"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "mounted-roots",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(tensor([-7.5676e+05, 2.8893e+05, 4.6783e+05, 1.5236e+00]),\n",
" <combined.States at 0x7f8c3c9c54f0>)"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c.single_transition(pm,lp,s,est_int)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "pediatric-iceland",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([-718920.5625, 274490.1562, 444444.6250])"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minimand, iterated_partials, iterated_state = c.optimality(pm,lp,s,est_int)\n",
"minimand"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "isolated-cleveland",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([-2285563., -2285557., -2285557.])"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"est_int2 = c.EstimandInterface(iterated_partials,torch.ones(3))\n",
"\n",
"minimand2, iterated_partials2, iterated_state2 = c.optimality(pm,lp,iterated_state,est_int2)\n",
"minimand2"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "relevant-romance",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([-2405858.5000, -2405852.5000, -2405852.5000])"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"est_int3 = c.EstimandInterface(iterated_partials2,torch.ones(3))\n",
"\n",
"minimand3, iterated_partials3, iterated_state3 = c.optimality(pm,lp,iterated_state2,est_int3)\n",
"minimand3"
]
},
{
"cell_type": "markdown",
"id": "israeli-oracle",
"metadata": {},
"source": [
"So, this succesfylly let me link the two. I'm going to move to another notebook, clean up, and start integrating the system"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}