Exemple #1
0
def alpso_wrapper(opt_prob):
    alpso = ALPSO()
    alpso.setOption('SwarmSize', 10)  # default 40 -> 150
    alpso.setOption('maxOuterIter', 5)  # defualt 200
    # alpso.setOption('rinit', 1.)  # penalty factor
    alpso.setOption('fileout', 0)
    alpso.setOption('stopCriteria', 0)
    return alpso(opt_prob)
Exemple #2
0
def optimALPSO(opt_prob, swarmsize, maxiter,algo):
    if algo == 3:
        alpso_none = ALPSO(pll_type='SPM')
    else:
        alpso_none = ALPSO()
    alpso_none.setOption('fileout',1)
    alpso_none.setOption('filename',"test.out")
    alpso_none.setOption('SwarmSize',swarmsize)
    alpso_none.setOption('maxInnerIter',6)
    alpso_none.setOption('etol',1e-5)
    alpso_none.setOption('rtol',1e-10)
    alpso_none.setOption('atol',1e-10)
    alpso_none.setOption('vcrazy',1e-4)
    alpso_none.setOption('dt',1e0)
    alpso_none.setOption('maxOuterIter',maxiter)
    alpso_none.setOption('stopCriteria',0)#Stopping Criteria Flag (0 - maxIters, 1 - convergence)
    alpso_none.setOption('printInnerIters',1)
    alpso_none.setOption('printOuterIters',1)
    alpso_none.setOption('HoodSize',int(swarmsize/100))
    return(alpso_none(opt_prob))
Exemple #3
0
    def train(self, optimizer='pso'):
        #Define the optimization problem for training the kriging model
        opt_prob = Optimization('Surrogate Test', self.fittingObjective)
        for i in range(self.k):
            opt_prob.addVar('theta%d' % i,
                            'c',
                            lower=1e-3,
                            upper=1e2,
                            value=.1)
        for i in range(self.k):
            opt_prob.addVar('pl%d' % i, 'c', lower=1.5, upper=2, value=2)
        opt_prob.addVar('lambda', 'c', lower=1e-5, upper=1, value=1)
        opt_prob.addObj('f')
        opt_prob.addCon('g1', 'i')

        if optimizer == 'pso':
            optimizer = ALPSO()
            optimizer.setOption('SwarmSize', 150)
            optimizer.setOption('maxOuterIter', 150)
            optimizer.setOption('stopCriteria', 1)
            optimizer.setOption('filename', '{0}Results.log'.format(self.name))

        if optimizer == 'ga':
            optimizer = NSGA2()
            optimizer.setOption('PopSize', (4 * 50))

        while True:
            try:
                self.trainingOptimizer(optimizer, opt_prob)
            except Exception as e:
                print e
                print 'Error traning Model, restarting the optimizer with a larger population'
                if optimizer == 'ga':
                    optimizer.setOption('SwarmSize', 200)
                    optimizer.setOption('maxOuterIter', 100)
                    optimizer.setOption('stopCriteria', 1)
                if optimizer == 'ga':
                    optimizer.setOption('PopSize', 400)
            else:
                break
Exemple #4
0
    def infill(self, points, method='error'):
        ## We'll be making non-permanent modifications to self.X and self.y here, so lets make a copy just in case
        initX = np.copy(self.X)
        inity = np.copy(self.y)

        ## This array will hold the new values we add
        returnValues = np.zeros([points, self.k], dtype=float)

        for i in range(points):
            opt_prob1 = Optimization('InFillPSO',
                                     self.errorObjective_normalized)
            for k in range(self.k):
                opt_prob1.addVar('{0}'.format(k),
                                 'c',
                                 lower=0,
                                 upper=1,
                                 value=.5)

            pso1 = ALPSO()
            pso1.setOption('SwarmSize', 100)
            pso1.setOption('maxOuterIter', 100)
            pso1.setOption('stopCriteria', 1)
            pso1(opt_prob1)

            newpoint = np.zeros(self.k)

            for j in range(self.k):
                newpoint[j] = opt_prob1.solution(0)._variables[j].value
            returnValues[i][:] = self.inversenormX(newpoint)
            self.addPoint(returnValues[i],
                          self.predict(returnValues[i]),
                          norm=True)
            self.updateModel()
            del (opt_prob1)
            del (pso1)
        self.X = np.copy(initX)
        self.y = np.copy(inity)
        self.n = len(self.X)
        self.updateModel()
        return returnValues
Exemple #5
0
                         minstep=1e-8,
                         debug=1,
                         phip=0.5,
                         phig=0.5,
                         maxiter=maxiter)
    ##############################################################################
    ##############################################################################
    # solving the problem with yopt
    ##############################################################################
    ##############################################################################
swarmsize = comm.bcast(swarmsize, root=0)
maxiter = comm.bcast(maxiter, root=0)

if algo == 2:
    # Solve Problem (No-Parallelization)
    alpso_none = ALPSO()  #pll_type='SPM')
    alpso_none.setOption('fileout', 1)
    alpso_none.setOption('SwarmSize', swarmsize)
    alpso_none.setOption('maxInnerIter', 6)
    alpso_none.setOption('etol', 1e-5)
    alpso_none.setOption('rtol', 1e-10)
    alpso_none.setOption('atol', 1e-10)
    alpso_none.setOption('vcrazy', 1e-4)
    alpso_none.setOption('dt', 1e0)
    alpso_none.setOption('maxOuterIter', maxiter)
    alpso_none.setOption(
        'stopCriteria',
        0)  #Stopping Criteria Flag (0 - maxIters, 1 - convergence)
    alpso_none.setOption('printInnerIters', 1)
    alpso_none.setOption('printOuterIters', 1)
    alpso_none.setOption('HoodSize', swarmsize / 100)

# =============================================================================
#
# =============================================================================

# Instantiate Optimization Problem
opt_prob = Optimization('G08 Global Constrained Problem', objfunc)
opt_prob.addVar('x1', 'c', lower=5.0, upper=1e-6, value=10.0)
opt_prob.addVar('x2', 'c', lower=5.0, upper=1e-6, value=10.0)
opt_prob.addObj('f')
opt_prob.addCon('g1', 'i')
opt_prob.addCon('g2', 'i')

# Solve Problem (No-Parallelization)
alpso_none = ALPSO()
alpso_none.setOption('fileout', 0)
alpso_none(opt_prob)
if myrank == 0:
    print opt_prob.solution(0)
# end

# Solve Problem (SPM-Parallelization)
alpso_spm = ALPSO(pll_type='SPM')
alpso_spm.setOption('fileout', 0)
alpso_spm(opt_prob)
print opt_prob.solution(1)

# Solve Problem (DPM-Parallelization)
alpso_dpm = ALPSO(pll_type='DPM')
alpso_dpm.setOption('fileout', 0)
Exemple #7
0

# =============================================================================
#
# =============================================================================

# Instantiate Optimization Problem
opt_prob = Optimization('G08 Global Constrained Problem', objfunc)
opt_prob.addVar('x1', 'c', lower=5.0, upper=1e-6, value=10.0)
opt_prob.addVar('x2', 'c', lower=5.0, upper=1e-6, value=10.0)
opt_prob.addObj('f')
opt_prob.addCon('g1', 'i')
opt_prob.addCon('g2', 'i')

# Solve Problem (No-Parallelization)
alpso_none = ALPSO()
alpso_none.setOption('fileout', 0)
alpso_none(opt_prob)
if myrank == 0:
    print(opt_prob.solution(0))

# Solve Problem (SPM-Parallelization)
alpso_spm = ALPSO(pll_type='SPM')
alpso_spm.setOption('fileout', 0)
alpso_spm(opt_prob)
print(opt_prob.solution(1))

# Solve Problem (DPM-Parallelization)
alpso_poa = ALPSO(pll_type='POA')
alpso_poa.setOption('fileout', 0)
alpso_poa(opt_prob)
for i in range(x.shape[1]):
    opt_prob.addVar('theta%d' % i, 'c', lower=.05, upper=20, value=.2)
for i in range(x.shape[1]):
    opt_prob.addVar('pl%d' % i, 'c', lower=1, upper=2, value=1.75)

opt_prob.addObj('f')
opt_prob.addCon('g1', 'i')

#print out the problem
print opt_prob

#Run the GA
# nsga = NSGA2(PopSize=300, maxGen=500, pMut_real=.1)
# nsga(opt_prob)
#
pso = ALPSO()
pso.setOption('SwarmSize', 30)
pso.setOption('maxOuterIter', 100)
pso.setOption('stopCriteria', 1)
# pso.setOption('dt',1)
pso(opt_prob)

#print the best solution
print opt_prob.solution(0)

# Update the model variables to the best solution found by the optimizer
a.update([
    opt_prob.solution(0)._variables[0].value,
    opt_prob.solution(0)._variables[1].value,
    opt_prob.solution(0)._variables[2].value,
    opt_prob.solution(0)._variables[3].value,