def test_form_constraints_function(): # Test a nonlinear constraints example. string = """ x1*x2 = 1. x2 = x0 - 3. """ # print("building constraints function for:%s" % string.rstrip()) x0 = [0.8,1.2,-0.7] # print('initial parameters: %s' % asarray(x0)) cf = generate_constraint(generate_solvers(solve(string))) # print('constraints satisfied? %s' % issolution(cf, x0)) assert not issolution(cf, x0) x = cf(x0) # print('after imposing constraints: %s' % asarray(x)) # print('constraints satisfied? %s' % issolution(cf, x)) assert issolution(cf, x) x0 = [1.,1.,1.] # print('initial parameters: %s' % asarray(x0)) # print('constraints satisfied? %s' % issolution(cf, x0)) assert not issolution(cf, x0) x = cf(x0) # print('after imposing constraints: %s' % asarray(x)) # print('constraints satisfied? %s' % issolution(cf, x), "\n") assert issolution(cf, x)
def test_form_constraints_function(): # Test a nonlinear constraints example. string = """ x1*x2 = 1. x2 = x0 - 3. """ # print "building constraints function for:%s" % string.rstrip() x0 = [0.8,1.2,-0.7] # print 'initial parameters: %s' % asarray(x0) cf = generate_constraint(generate_solvers(solve(string))) # print 'constraints satisfied?', issolution(cf, x0) assert not issolution(cf, x0) x = cf(x0) # print 'after imposing constraints: %s' % asarray(x) # print 'constraints satisfied?', issolution(cf, x) assert issolution(cf, x) x0 = [1.,1.,1.] # print 'initial parameters: %s' % asarray(x0) # print 'constraints satisfied?', issolution(cf, x0) assert not issolution(cf, x0) x = cf(x0) # print 'after imposing constraints: %s' % asarray(x) # print 'constraints satisfied?', issolution(cf, x), "\n" assert issolution(cf, x)
def test_sumt1(): def costfunc(x): x1 = x[0] x2 = x[1] return x1**4 - 2.*x1**2*x2 + x1**2 + x1*x2**2 - 2.*x1 + 4. constraints_string = """ x1**2 + x2**2 - 2. = 0. 0.25*x1**2 + 0.75*x2**2 - 1. <= 0. """ ndim = 2 x0 = [3., 2.] npop = 25 # print("constraints equations:%s" % (constraints_string.rstrip(),)) from mystic.solvers import DifferentialEvolutionSolver from mystic.solvers import NelderMeadSimplexSolver from mystic.termination import VTR #solver = DifferentialEvolutionSolver(ndim, npop) solver = NelderMeadSimplexSolver(ndim) solver.SetInitialPoints(x0) term = VTR() #FIXME: sumt, issolution no longer take constraints strings end_solver = sumt(constraints_string, ndim, costfunc, solver,\ term, disp=True) soln = end_solver.Solution() assert issolution(constraints_string, soln)
def test_sumt1(): def costfunc(x): x1 = x[0] x2 = x[1] return x1**4 - 2.*x1**2*x2 + x1**2 + x1*x2**2 - 2.*x1 + 4. constraints_string = """ x1**2 + x2**2 - 2. = 0. 0.25*x1**2 + 0.75*x2**2 - 1. <= 0. """ ndim = 2 x0 = [3., 2.] npop = 25 # print "constraints equations:%s" % (constraints_string.rstrip(),) from mystic.solvers import DifferentialEvolutionSolver from mystic.solvers import NelderMeadSimplexSolver from mystic.termination import VTR #solver = DifferentialEvolutionSolver(ndim, npop) solver = NelderMeadSimplexSolver(ndim) solver.SetInitialPoints(x0) term = VTR() #FIXME: sumt, issolution no longer take constraints strings end_solver = sumt(constraints_string, ndim, costfunc, solver,\ term, disp=True) soln = end_solver.Solution() assert issolution(constraints_string, soln)
def test_sumt2(): def costfunc(x): return (x[0] - 1.)**2 + (x[1]-2.)**2 + (x[2]-3.)**4 x0 = [0., 0., 0.] ndim = 3 constraints_string = """ x2 > 5. 4.*x1-5.*x3 < -1. (x1-10.)**2 + (x2+1.)**2 < 50. """ print "constraints equations:%s" % (constraints_string.rstrip(),) from mystic.solvers import DifferentialEvolutionSolver from mystic.solvers import NelderMeadSimplexSolver from mystic.termination import VTR #solver = DifferentialEvolutionSolver(ndim, npop) solver = NelderMeadSimplexSolver(ndim) solver.SetInitialPoints(x0) term = VTR() #FIXME: sumt, issolution no longer take constraints strings end_solver = sumt(constraints_string, ndim, costfunc, solver,\ term, disp=True) soln = end_solver.Solution() print "final answer:", soln print "constraints satisfied:", issolution(constraints_string, soln) print "expected: [ 6.25827968 4.999961 5.20662288]", "\n"
def test_sumt2(): def costfunc(x): return (x[0] - 1.)**2 + (x[1] - 2.)**2 + (x[2] - 3.)**4 x0 = [0., 0., 0.] ndim = 3 constraints_string = """ x2 > 5. 4.*x1-5.*x3 < -1. (x1-10.)**2 + (x2+1.)**2 < 50. """ print "constraints equations:%s" % (constraints_string.rstrip(), ) from mystic.solvers import DifferentialEvolutionSolver from mystic.solvers import NelderMeadSimplexSolver from mystic.termination import VTR #solver = DifferentialEvolutionSolver(ndim, npop) solver = NelderMeadSimplexSolver(ndim) solver.SetInitialPoints(x0) term = VTR() #FIXME: sumt, issolution no longer take constraints strings end_solver = sumt(constraints_string, ndim, costfunc, solver,\ term, disp=True) soln = end_solver.Solution() print "final answer:", soln print "constraints satisfied:", issolution(constraints_string, soln) print "expected: [ 6.25827968 4.999961 5.20662288]", "\n"