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
|
[class=Input name=x1 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x2 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x3 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x4 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x5 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x6 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x7 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x8 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x9 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x10 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x11 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x12 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x13 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x14 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x15 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x16 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x17 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x18 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x19 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07, class=Input name=x20 value=0 description= distribution=class=Uniform name=Uniform dimension=1 a=0 b=1 finiteDifferenceStep=1e-07]
class=MorrisAnalysis name=aMorris physicalModel=MorrisModel interestVariables=[y] number of trajectories=4 bounds=class=Interval name=Unnamed dimension=20 lower bound=class=Point name=Unnamed dimension=20 values=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] upper bound=class=Point name=Unnamed dimension=20 values=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] finite lower bound=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] finite upper bound=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] level=4 seed=2
error message=
result= class=MorrisResult name=Unnamed inputs selections =[[1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,1,1,1]] no effect boundaries =class=Point name=Unnamed dimension=1 values=[3.31443] ee mean= class=Sample name=Unnamed implementation=class=SampleImplementation name=Unnamed size=1 dimension=20 data=[[15.2911,-20.2674,9.58904,51.9031,16.493,38.612,55.7186,35.5755,41.3717,40.5778,3.46456,3.02507,-1.21817,0.228778,1.50345,1.98003,0.878264,-3.83339,-6.20619,1.72736]] absolute ee mean= class=Sample name=Unnamed implementation=class=SampleImplementation name=Unnamed size=1 dimension=20 data=[[64.661,48.6508,21.9031,51.9031,16.493,38.612,55.7186,35.5755,41.3717,40.5778,3.46456,3.02507,3.40685,3.80306,2.41175,2.04517,1.62762,4.21211,6.20619,3.62001]] ee std= class=Sample name=Unnamed implementation=class=SampleImplementation name=Unnamed size=1 dimension=20 data=[[75.6693,59.2558,26.4239,8.67149,7.36253,4.57369,7.5879,2.63215,3.53769,4.09501,1.05127,1.57059,4.59981,4.86444,2.80863,2.86666,1.88527,3.183,4.02771,5.04727]]
meanAbsEE = [64.661,48.6508,21.9031,51.9031,16.493,38.612,55.7186,35.5755,41.3717,40.5778,3.46456,3.02507,3.40685,3.80306,2.41175,2.04517,1.62762,4.21211,6.20619,3.62001]#20
#!/usr/bin/env python
import openturns as ot
import persalys
myStudy = persalys.Study('myStudy')
persalys.Study.Add(myStudy)
dist_x1 = ot.Uniform(0, 1)
x1 = persalys.Input('x1', 0, dist_x1, '')
dist_x2 = ot.Uniform(0, 1)
x2 = persalys.Input('x2', 0, dist_x2, '')
dist_x3 = ot.Uniform(0, 1)
x3 = persalys.Input('x3', 0, dist_x3, '')
dist_x4 = ot.Uniform(0, 1)
x4 = persalys.Input('x4', 0, dist_x4, '')
dist_x5 = ot.Uniform(0, 1)
x5 = persalys.Input('x5', 0, dist_x5, '')
dist_x6 = ot.Uniform(0, 1)
x6 = persalys.Input('x6', 0, dist_x6, '')
dist_x7 = ot.Uniform(0, 1)
x7 = persalys.Input('x7', 0, dist_x7, '')
dist_x8 = ot.Uniform(0, 1)
x8 = persalys.Input('x8', 0, dist_x8, '')
dist_x9 = ot.Uniform(0, 1)
x9 = persalys.Input('x9', 0, dist_x9, '')
dist_x10 = ot.Uniform(0, 1)
x10 = persalys.Input('x10', 0, dist_x10, '')
dist_x11 = ot.Uniform(0, 1)
x11 = persalys.Input('x11', 0, dist_x11, '')
dist_x12 = ot.Uniform(0, 1)
x12 = persalys.Input('x12', 0, dist_x12, '')
dist_x13 = ot.Uniform(0, 1)
x13 = persalys.Input('x13', 0, dist_x13, '')
dist_x14 = ot.Uniform(0, 1)
x14 = persalys.Input('x14', 0, dist_x14, '')
dist_x15 = ot.Uniform(0, 1)
x15 = persalys.Input('x15', 0, dist_x15, '')
dist_x16 = ot.Uniform(0, 1)
x16 = persalys.Input('x16', 0, dist_x16, '')
dist_x17 = ot.Uniform(0, 1)
x17 = persalys.Input('x17', 0, dist_x17, '')
dist_x18 = ot.Uniform(0, 1)
x18 = persalys.Input('x18', 0, dist_x18, '')
dist_x19 = ot.Uniform(0, 1)
x19 = persalys.Input('x19', 0, dist_x19, '')
dist_x20 = ot.Uniform(0, 1)
x20 = persalys.Input('x20', 0, dist_x20, '')
y = persalys.Output('y', '')
inputs = [x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20]
outputs = [y]
code = r'''
import openturns as ot
def _exec(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20):
ot.RandomGenerator.SetSeed(123)
b0 = ot.DistFunc.rNormal()
alpha = ot.DistFunc.rNormal(10)
beta = ot.DistFunc.rNormal(6*14)
gamma = ot.DistFunc.rNormal(20*14)
# b1
b1 = [20] * 10 + list(alpha)
# b2
b2 = [[0] *20] * 20
for i in range(6):
for j in range(6):
b2[i][j] = -15.0
# Take into account beta
k = 0
for i in range(6):
for j in range(14):
b2[i][j + 6] = beta[k]
k = k + 1
# Take into account gamma
k = 0
for i in range(6, 20):
for j in range(20):
b2[i][j] = gamma[k]
# b3
b3 = [[[0]*20]*20]*20
for i in range(5):
for j in range(5):
for k in range(5):
b3[i][j][k] = -10.0
# b4
b4 = [[[[0]*20]*20]*20]*20
for i in range(4):
for j in range(4):
for k in range(4):
for l in range(4):
b4[i][j][k][l] = 5
# X is a list, transform it into array
X = ot.Point([x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20])
w = (X - [0.5]*20)*2
for k in [2,4,6]:
w[k] = 2.0 * (1.1 * X[k] / (X[k] + 0.1) - 0.5)
y = w.dot(b1)
# Morris function
for i in range(19):
for j in range(i + 1, 20):
y += b2[i][j] * w[i] * w[j]
for i in range(18):
for j in range(i + 1, 19):
for k in range(j + 1, 20):
y += b3[i][j][k] * w[i] * w[j] * w[k]
for i in range(17):
for j in range(i + 1, 18):
for k in range(j + 1, 20):
for l in range(k + 1, 20):
y += b4[i][j][k][l] * w[i] * w[j] * w[k] * w[l]
y = y + b0
y_fake = 0.
return y
'''
MorrisModel = persalys.PythonPhysicalModel('MorrisModel', inputs, outputs, code)
myStudy.add(MorrisModel)
aMorris = persalys.MorrisAnalysis('aMorris', MorrisModel)
aMorris.setTrajectoriesNumber(4)
aMorris.setBounds(ot.Interval([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]))
aMorris.setLevel(4)
aMorris.setSeed(2)
myStudy.add(aMorris)
|