1 """
2 softConstraint Class
3
4 Usage
5 -----
6 Usage: c = softConstraint()
7
8
9 History:
10 -------
11 1) Ziwen Fu. 01/08/2009
12
13 """
14 __docformat__ = "restructuredtext en"
15
16 import numpy
17
18
19
21 """
22 SoftConstraint Class
23 """
24 - def __init__(self, F=None, Flo = 0, Fhi = numpy.inf, sigma=1.25):
25 self.F = F
26 self.Flo = Flo
27 self.Fhi = Fhi
28 self.sigmaLo = sigma
29 self.sigmaHi = sigma
30
32 Fx = self.F(x)
33 if Fx < self.Flo:
34 return (Fx - self.Flo)/self.sigmaLo
35 elif Fx > self.Fhi:
36 return (Fx - self.Fhi)/self.sigmaHi
37 else:
38 return 0
39
42
43
44
45
47 """
48 SoftConstraints Class
49 """
52
55
57 m = len(self.C)
58 delta = 0
59 for i in xrange(m):
60 delta += self.C[i].delta(x)**2
61 return delta
62
64 Fs = numpy.zeros( len(self.C) )
65 for i in xrange(len(self.C)):
66 Fs[i] = self.C[i].getFx(x)
67 return Fs
68
70 F1s = numpy.zeros( len(self.C) )
71 for i in xrange(len(self.C)):
72 F1s[i] = self.C[i].Flo
73 return F1s
74
76 F2s = numpy.zeros( len(self.C) )
77 for i in xrange(len(self.C)):
78 F2s[i] = self.C[i].Fhi
79 return F2s
80
82 s = numpy.zeros( len(self.C) )
83 for i in xrange(len(self.C)):
84 s[i] = self.C[i].sigmaLo
85 return s
86
88 s = numpy.zeros( len(self.C) )
89 for i in xrange(len(self.C)):
90 s[i] = self.C[i].sigmaHi
91 return s
92
93
94
95
98
100 return x[0]**2 + x[1]**2 - 25
101
102 if __name__ == '__main__':
103 s = SoftConstraints()
104 s.add( SoftConstraint( F=hsc18_1, Flo=0, Fhi=numpy.inf) )
105 s.add( SoftConstraint( F=hsc18_2, Flo=0, Fhi=numpy.inf) )
106 print s.C
107 print len(s.C)
108 print s.r( [1,1] )
109 print s.F( [1,1] )
110 print s.F1( )
111 print s.F2( )
112