-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
142 lines (139 loc) · 5.23 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/usr/bin/env python
import sim
import sim.thinning.thinningSim as TH
import sim.planting.PM as PM
import sim.forwarder.forwSim as FW
import sim.tools as tools
import functions as fun
from math import *
import random
import copy
import time
import os, sys, shutil
import numpy as np
##########################################################
## MAIN FUNCTION
##########################################################
"""
It would be nice with some comments here describing the different input arguments
that can be given and how to use the file...
"""
if __name__=='__main__':
anim=False
iterations=2 #default
if len(sys.argv)>1 and sys.argv[1] == 'anim':
anim=True
elif len(sys.argv)>2:
a=eval(sys.argv[2])
iterations=a
if len(sys.argv)>3:#this should be only for the bashscript
head=str(sys.argv[3])
nCranes=eval(sys.argv[4])
bundler=eval(sys.argv[5])
twigCrack=eval(sys.argv[6])
simNumber=eval(sys.argv[7])
rowNumber=eval(sys.argv[8])
treeFile=eval(sys.argv[9])
if not anim and len(sys.argv)>1:
if sys.argv[1] == 'tryItAll': #tests for all simulations so far. See if they throw exception
for i in range(4):
s=PM.PlantmSim(vis=False,anim=anim,mtype=random.choice(['1a1h', '1a2h', '2a2h', '2a4h']))
assert s.productivity>10
s=TH.ThinningSim(vis=False,anim=anim, head=random.choice(['convAcc', 'BC']), nCranes=random.choice([1,2]), bundler=random.choice([True, False]), twigCrack=random.choice([True, False]))
assert s.stats['productivity']>10
FW.ForwarderSim(vis=False, anim=anim)
print "--------------"
print "you passed the test. Feel free to commit."
elif sys.argv[1]=='varyCrane':
rMax=np.linspace(9,12,15)
rMin=4
rList=[]
for R in rMax:
rList.append((rMin,R))
for ttype in [1,2,'2b',3,4,5,6,7]:
PM.varyCraneRadius(i=20, mtype='2a2h', ttype=str(ttype), G=None, rList=rList)
elif sys.argv[1]=='VaryCraner':
PM.VaryCraneRadiusPMachine()
elif sys.argv[1]=='VaryTerrain':
PM.VaryTerrain(iterations)
elif sys.argv[1]=='VaryAutoPM':
for ttype in [1,2,'2b',3,4,5,6,7]:
PM.VaryAutomationPMachine(i=40,ttype=str(ttype), G=None)
elif sys.argv[1]=='VaryAutoTh':
TH.varyAutomationThinningMachine(it=iterations)
elif sys.argv[1]=='thinningMovies':
TH.createThinningMovies()
elif sys.argv[1]=='VaryBladeW':
for ttype in [1,2,'2b',3,4,5,6,7]:
PM.VaryBladeWidthPMachine(i=15,ttype=ttype)
elif sys.argv[1]=='VaryAng':
th1List=np.linspace(-15, 15, 16)
th2=45
aList=[]
for th1 in th1List:
aList.append([th1*pi/180., th2*pi/180.])
PM.varyAnglesPMachine(ttype=3, i=30, aList=aList)
th2List=np.linspace(30, 60, 16)
th1=0
aList=[]
for th2 in th2List:
aList.append([th1*pi/180., th2*pi/180.])
varyAnglesPMachine(ttype=3, i=30, aList=aList)
elif sys.argv[1]=='corrStat':
TH.corridorStatistics(i=100)
elif sys.argv[1]=='VaryAttachLoc':
PM.VaryAttachLoc(iterations)
elif sys.argv[1]=='VaryDegrees':
PM.VaryDegrees(iterations)
elif sys.argv[1]=='VaryDibbleDist':
PM.VaryDibbleDist(iterations)
elif sys.argv[1]=='VaryMoundingbladeWidth':
PM.VaryMoundingbladeWidth(iterations)
elif sys.argv[1]=='VaryTargetStockingrate':
PM.VaryTargetStockingrate(iterations)
elif sys.argv[1]=='VaryMinDist':
PM.VaryMinDist(iterations)
elif sys.argv[1]=='VaryOperatorSwitchFocusSkill':
PM.VaryOperatorSwitchFocusSkill(iterations)
elif sys.argv[1]=='VaryAutomation':
PM.VaryAutomation(iterations)
elif sys.argv[1]=='VaryRadialCraneSpeed':
PM.VaryRadialCraneSpeed(iterations)
elif sys.argv[1]=='BestCase':
PM.BestCase(iterations)
elif sys.argv[1]=='WorstCase':
PM.WorstCase(iterations)
elif sys.argv[1]=='varyAll':
PM.varyAll(iterations)
elif sys.argv[1]=='tDCTM':#tryDiffConfigThinningMachinetunately this one does not work due to memory issues. For morethan one iteration use 'btDCTM' instead.
TH.tryDiffConfigThinningMachine(iterations)
elif sys.argv[1]=='btDCTM':#bashtryDiffConfigThinningMachine
TH.bashTryDiffConfigThinningMachine(it=iterations, head=head, nCranes=nCranes, bundler=bundler, twigCrack=twigCrack, simNumber=simNumber, rowNumber=rowNumber, treeFile=treeFile)
elif sys.argv[1]=='articleThree':
PM.articleThree(iterations)
else:
raise Exception('could not read input argument %s'%str(sys.argv[1]))
else:
import cProfile
from sim.planting.plantMTerrain import PlantMTerrain
seed=int(random.uniform(0,100000))
#seed=70974
random.seed(seed)
print "seed:", seed
G=tools.globalVar()
G.noMonitors=True
G.seed=seed
#TH.testMemory()
G.terrain=PlantMTerrain(G, ttype='5')
#s=PM.PlantmSim(vis=True,anim=anim,G=G, mtype='2a4h')
#TH.ThinningSim(vis=True,anim=anim,G=G, head='BC', nCranes=2)
#G.plotDelay=20
#s=PM.VaryTerrain(1)
#s=PM.doTheSenseAn(i=1)
s=PM.PlantmSim(vis=True,anim=anim,G=copy.deepcopy(G), mtype='1a4h')
#TH.ThinningSim(vis=True,anim=anim,G=G, head='convAcc', nCranes=2, bundler=False, twigCrack=True, observer=True)
#TH.ThinningSim(vis=True,anim=anim,G=G, head='convAcc', nCranes=2, bundler=False, twigCrack=False, observer=True)
#FW.ForwarderSim(vis=True, anim=anim, G=G)
#FW.simRandomRoad(vis=True, anim=anim, G=G)
#cProfile.run('FW.ForwarderSim(vis=True, anim=anim, G=G)')
#cProfile.run('''PM.PlantmSim(vis=False,G=G,anim=anim, mtype='2a2h', ttype=4)''')