コード例 #1
0
ファイル: MINLP.py プロジェクト: javafx2010/OOSuite
 def _Prepare(self):
     if hasattr(self, 'prepared') and self.prepared == True:
         return
     NonLinProblem._Prepare(self)
     self.prepared = True
     if self.isFDmodel:
         r = {}
         for iv in self.freeVars:
             if iv.domain is None: continue
             ind1, ind2 = self._oovarsIndDict[iv]
             assert ind2 - ind1 == 1
             r[ind1] = iv.domain
         self.discreteVars = r
     # TODO: use something else instead of dict.keys()
     new_discr = {}
     for key, fv in self.discreteVars.items():
         if type(fv) not in [list, tuple, ndarray
                             ] and fv not in ('bool', bool):
             self.err(
                 'each element from discreteVars dictionary should be list or tuple of allowed values'
             )
         if fv is not bool and fv is not 'bool':
             new_discr[key] = sort(fv)
         lowest = 0 if fv is bool or fv is 'bool' else fv[0]
         biggest = 1 if fv is bool or fv is 'bool' else fv[-1]
         if lowest > self.ub[key]:
             self.err('variable ' + str(key) +
                      ': smallest allowed discrete value ' + str(fv[0]) +
                      ' exeeds imposed upper bound ' + str(self.ub[key]))
         if biggest < self.lb[key]:
             self.err('variable ' + str(key) +
                      ': biggest allowed discrete value ' + str(fv[-1]) +
                      ' is less than imposed lower bound ' +
                      str(self.lb[key]))
     self.discreteVars.update(new_discr)
コード例 #2
0
ファイル: MINLP.py プロジェクト: AlbertHolmes/openopt
 def _Prepare(self):
     if hasattr(self, 'prepared') and self.prepared == True:
         return
     NonLinProblem._Prepare(self)    
     if self.isFDmodel:
         r = {}
         for iv in self.freeVars:
             if iv.domain is None: continue
             ind1, ind2 = self._oovarsIndDict[iv]
             assert ind2-ind1 == 1 
             r[ind1] = iv.domain
         self.discreteVars = r
     # TODO: use something else instead of dict.keys()
     for key in self.discreteVars.keys():
         fv = self.discreteVars[key]
         if type(fv) not in [list, tuple, ndarray] and fv not in ('bool', bool):
             self.err('each element from discreteVars dictionary should be list or tuple of allowed values')
         if fv is not bool and fv is not 'bool': fv = sort(fv)
         lowest = 0 if fv is bool or fv is 'bool' else fv[0] 
         biggest = 1 if fv is bool or fv is 'bool' else fv[-1] 
         if lowest > self.ub[key]:
             self.err('variable '+ str(key)+ ': smallest allowed discrete value ' + str(fv[0]) + ' exeeds imposed upper bound '+ str(self.ub[key]))
         if biggest < self.lb[key]:
             self.err('variable '+ str(key)+ ': biggest allowed discrete value ' + str(fv[-1]) + ' is less than imposed lower bound '+ str(self.lb[key]))
         self.discreteVars[key] = fv
コード例 #3
0
    def _Prepare(self):
        self.X = atleast_2d(self.X)
        self.Y = array(self.Y, float)
        if self.X.shape[0] != self.Y.shape[0]:
            if self.X.shape[1] != self.Y.shape[0]:
                self.err('incorrect shape of input data')
            else:
                self.X = self.X.T
        NonLinProblem._Prepare(self)
        #if self.Y.ndim

        if self.userProvided.df:
            assert len(self.user.df) == 1
            self.dfff = self.user.df[0]

            def dff(x):
                r = zeros(self.n)
                for i in range(self.Y.shape[0]):
                    #print asfarray(self.fff(x, self.X[i])-self.Y[i]), asfarray(self.dfff(x, self.X[i]))
                    r += dot(
                        2.0 * asfarray(self.fff(x, self.X[i]) - self.Y[i]),
                        asfarray(self.dfff(x, self.X[i])))
                return r

            self.df = self.user.df = dff
コード例 #4
0
ファイル: DFP.py プロジェクト: PythonCharmers/OOSuite
    def _Prepare(self):
        self.X = atleast_2d(self.X)
        self.Y = array(self.Y, float)
        if self.X.shape[0] != self.Y.shape[0]:
            if self.X.shape[1] != self.Y.shape[0]:
                self.err('incorrect shape of input data')
            else:
                self.X = self.X.T
        NonLinProblem._Prepare(self)
        #if self.Y.ndim

        if self.userProvided.df:
            assert len(self.user.df) == 1
            self.dfff = self.user.df[0]
            def dff(x):
                r = zeros(self.n)
                for i in range(self.Y.shape[0]):
                    #print asfarray(self.fff(x, self.X[i])-self.Y[i]), asfarray(self.dfff(x, self.X[i]))
                    r += dot(2.0 * asfarray(self.fff(x, self.X[i])-self.Y[i]), asfarray(self.dfff(x, self.X[i])))
                return r        
            self.df = self.user.df = dff