#!/usr/bin/python

import amoeba

def minFunc(X,data):
    """A user function calculating the value at X

    This can be as simple or as complex as required.  
    """
    value = (X[0]-2)**2 + (X[1]+2)**2 + 2
    return value

print "Minimize a function wrt two variables"
result = amoeba.minimize([1,10],[1,1],minFunc)
print "   Parameter values: (%f, %f)" % (result[0][0], result[0][1])
print "   Function value: %f" % (result[1])
print "   Interations: %d" % (result[2])

def maxFunc(X,data):
    """A user function calculating the value at X

    This can be as simple or as complex as required.  
    """
    value = (X[0]-2)**2 + (X[1]+2)**2 + 2
    return -value

print "Maximize a function wrt two variables"
result = amoeba.maximize([2,10],[1,1],maxFunc)
print "   Parameter values: (%f, %f)" % (result[0][0], result[0][1])
print "   Function value: %f" % (result[1])
print "   Interations: %d" % (result[2])

