File: t_MorrisAnalysis_std.expout

package info (click to toggle)
persalys 19.1%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 46,900 kB
  • sloc: xml: 97,263; cpp: 61,701; python: 4,109; sh: 397; makefile: 84
file content (140 lines) | stat: -rw-r--r-- 8,313 bytes parent folder | download | duplicates (2)
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)