def optimize(cost,lb,ub):
  from mystic.differential_evolution import DifferentialEvolutionSolver2
  from mystic.termination import CandidateRelativeTolerance as CRT
  from mystic.strategy import Best1Exp
  from mystic import getch, random_seed, VerboseSow, Sow

  random_seed(123)

  stepmon = VerboseSow(100)
 #stepmon = Sow()
  evalmon = Sow()

  ndim = len(lb) # [(1 + RVend) - RVstart] + 1

  solver = DifferentialEvolutionSolver2(ndim,npop)
  solver.SetRandomInitialPoints(min=lb,max=ub)
  solver.SetStrictRanges(min=lb,max=ub)
  solver.SetEvaluationLimits(maxiter,maxfun)

  tol = convergence_tol
  solver.Solve(cost,termination=CRT(tol,tol),strategy=Best1Exp, \
               CrossProbability=crossover,ScalingFactor=percent_change, \
               StepMonitor=stepmon, EvaluationMonitor=evalmon)

  print "solved: %s" % solver.Solution()
  fitness = solver.bestEnergy / scale  #XXX: scale != 0
  func_evals = len(evalmon.y)
  return fitness, func_evals
def optimize(cost, lb, ub):
    from mystic.differential_evolution import DifferentialEvolutionSolver2
    from mystic.termination import CandidateRelativeTolerance as CRT
    from mystic.strategy import Best1Exp
    from mystic import getch, random_seed, VerboseSow, Sow

    random_seed(123)

    stepmon = VerboseSow(100)
    #stepmon = Sow()
    evalmon = Sow()

    ndim = len(lb)  # [(1 + RVend) - RVstart] + 1

    solver = DifferentialEvolutionSolver2(ndim, npop)
    solver.SetRandomInitialPoints(min=lb, max=ub)
    solver.SetStrictRanges(min=lb, max=ub)
    solver.SetEvaluationLimits(maxiter, maxfun)

    tol = convergence_tol
    solver.Solve(cost,termination=CRT(tol,tol),strategy=Best1Exp, \
                 CrossProbability=crossover,ScalingFactor=percent_change, \
                 StepMonitor=stepmon, EvaluationMonitor=evalmon)

    print "solved: %s" % solver.Solution()
    fitness = solver.bestEnergy / scale  #XXX: scale != 0
    func_evals = len(evalmon.y)
    return fitness, func_evals
Exemplo n.º 3
0
  Use a linear regression to fit sparse data generated from:
            f(x) = a*x3**3 + b*x2**2 + c*x1 + d*x0
            a,b,c,d = 0.661, -1.234, 2.983, -16.5571

  Where the following information is utilized: 
            f(x) is a polynomial of order=3
            3*b + c > -0.75
            4.5*b - d > 11.0
"""
import numpy as np
from sklearn import preprocessing as pre
from sklearn import linear_model as lin
from mystic.symbolic import generate_constraint, generate_solvers, simplify
from mystic.constraints import vectorize
from mystic import random_seed
random_seed(123)

# define a model
a, b, c, d = 0.661, -1.234, 2.983, -16.5571


def model(x):
    x0, x1, x2, x3 = x
    return a * x3**3 + b * x2**2 + c * x1 + d * x0


# generate some sparse data
xtrain = np.random.uniform(0, 100, size=(10, 4))
target = model(xtrain.T).T
xtest = np.random.uniform(0, 100, size=(10, 4))
test = model(xtest.T).T
Exemplo n.º 4
0
#!/usr/bin/env python
#
# Author: Mike McKerns (mmckerns @caltech and @uqfoundation)
# Copyright (c) 2019-2021 The Uncertainty Quantification Foundation.
# License: 3-clause BSD.  The full license text is available at:
#  - https://github.com/uqfoundation/mystic/blob/master/LICENSE

from mystic.symbolic import denominator, _solve_zeros, equals, simplify, flip
from mystic import random_seed

random_seed(123)  #FIXME: should be commented out

var = list('BC')
eqn = 'A = (B + 1/C)/(B*C/tan(B))'
assert set(denominator(eqn, var)) == set(['C', 'tan(B)', '(B*C/tan(B))'])
eqn = 'A = 1/B + 1/(C + B*(B - 2))'
assert set(denominator(eqn, var)) == set(['B', '(C + B*(B - 2))'])
eqn = 'A = 1/B + 1/tan(B*C)'
assert set(denominator(eqn, var)) == set(['B', 'tan(B*C)'])
eqn = 'A = B - 3/(B-2)**2 - 1/(B+C)'
assert set(denominator(eqn, var)) == set(['(B-2)**2', '(B+C)'])
eqn = 'A = (B + 2)/C'
assert denominator(eqn, var) == ['C']
eqn = 'A = B/(C - 2)'
assert denominator(eqn, var) == ['(C - 2)']
eqn = 'A = (B*C/tan(B))'
assert denominator(eqn, var) == ['tan(B)']
eqn = 'A = (1 + 1/C)'
assert denominator(eqn, var) == ['C']
eqn = 'A = 4/(C*B)'
assert denominator(eqn, var) == ['(C*B)']
Exemplo n.º 5
0
    x_ = constraint(x)

#   print("target: %s, %s, %s" % (x1, x2, x3))
#   print("solved: %s, %s, %s" % (f1(x_), f2(x_), f3(x_)))
    assert round(f1(x_)) == round(x1)
    assert round(f2(x_)) == round(x2)
    assert round(f3(x_)) == round(x3)



   # case #2: couple constraints into a single constraint

    from mystic.math.measures import impose_product, impose_sum, impose_mean
    from mystic.constraints import as_penalty
    from mystic import random_seed
    random_seed(123)

    t = t1,t2,t3 = (impose_sum, impose_product, impose_mean)
   #c = [lambda x: ti(xi, x) for (xi,ti) in zip(x,t)] #XXX
    c1 = lambda x: t1(x1, x)
    c2 = lambda x: t2(x2, x)
    c3 = lambda x: t3(x3, x)
    c = (c1,c2,c3)
    
    k=1
    solver = 'buckshot' #'diffev'
    ptype = linear_equality #quadratic_equality

    p = [as_penalty(ci, ptype) for ci in c]
    penalty = and_(*p, k=k)
    constraint = as_constraint(penalty, solver=solver)
Exemplo n.º 6
0
from mystic.symbolic import denominator, _solve_zeros, equals, simplify, flip

from mystic import random_seed
random_seed(123) #FIXME: should be commented out

var = list('BC')
eqn = 'A = (B + 1/C)/(B*C/tan(B))'
assert set(denominator(eqn, var)) == set(['C', 'tan(B)', '(B*C/tan(B))'])
eqn = 'A = 1/B + 1/(C + B*(B - 2))'
assert set(denominator(eqn , var)) == set(['B', '(C + B*(B - 2))'])
eqn = 'A = 1/B + 1/tan(B*C)'
assert set(denominator(eqn , var)) == set(['B', 'tan(B*C)'])
eqn = 'A = B - 3/(B-2)**2 - 1/(B+C)'
assert set(denominator(eqn , var)) == set(['(B-2)**2', '(B+C)'])
eqn = 'A = (B + 2)/C'
assert denominator(eqn , var) == ['C']
eqn = 'A = B/(C - 2)'
assert denominator(eqn , var) == ['(C - 2)']
eqn = 'A = (B*C/tan(B))'
assert denominator(eqn , var) == ['tan(B)']
eqn = 'A = (1 + 1/C)'
assert denominator(eqn , var) == ['C']
eqn = 'A = 4/(C*B)'
assert denominator(eqn , var) == ['(C*B)']
eqn = 'A = C*B'
assert denominator(eqn , var) == []

eqn = 'A = (B - 1/C)/(1 - (B*C))'
assert set(_solve_zeros(eqn, var)) == set(['C = 0', 'B = 1/C'])
eqn = 'A = (B - 1/C)/(1 - sin(B*C))'
assert set(_solve_zeros(eqn, var)) == set(['C = 0', '(1 - sin(B*C)) = 0'])