Commit d1774a67 authored by Dr.李's avatar Dr.李

added tests from cvoptimizer

parent 6af6574d
...@@ -9,6 +9,7 @@ import unittest ...@@ -9,6 +9,7 @@ import unittest
import numpy as np import numpy as np
from alphamind.cython.optimizers import LPOptimizer from alphamind.cython.optimizers import LPOptimizer
from alphamind.cython.optimizers import QPOptimizer from alphamind.cython.optimizers import QPOptimizer
from alphamind.cython.optimizers import CVOptimizer
class TestOptimizers(unittest.TestCase): class TestOptimizers(unittest.TestCase):
...@@ -69,6 +70,90 @@ class TestOptimizers(unittest.TestCase): ...@@ -69,6 +70,90 @@ class TestOptimizers(unittest.TestCase):
[-0.02, 0.01, 0.03], [-0.02, 0.01, 0.03],
8) 8)
def test_cvoptimizer_without_cons(self):
objective = np.array([0.1, 0.2, 0.3])
cov = np.array([[0.05, 0.01, 0.02],
[0.01, 0.06, 0.03],
[0.02, 0.03, 0.07]])
lbound = np.array([-0.3, -0.3, -0.3])
ubound = np.array([0.5, 0.5, 0.5])
cons = np.array([[1., 1., 1.]])
clbound = np.array([0.])
cubound = np.array([0.])
target_vol = 0.1
optimizer = CVOptimizer(objective,
cov,
lbound,
ubound,
None,
None,
None,
target_vol,
target_vol)
# check against known good result
np.testing.assert_array_almost_equal(optimizer.x_value(),
[.0231776, 0.1274768, 0.30130881],
4)
def test_cvoptimizer_with_cons(self):
objective = np.array([0.1, 0.2, 0.3])
cov = np.array([[0.05, 0.01, 0.02],
[0.01, 0.06, 0.03],
[0.02, 0.03, 0.07]])
lbound = np.array([-0.3, -0.3, -0.3])
ubound = np.array([0.5, 0.5, 0.5])
cons = np.array([[1., 1., 1.]])
clbound = np.array([0.])
cubound = np.array([0.])
target_vol = 0.1
optimizer = CVOptimizer(objective,
cov,
lbound,
ubound,
cons,
clbound,
cubound,
target_vol,
target_vol)
# check against known good result
np.testing.assert_array_almost_equal(optimizer.x_value(),
[-0.3, -0.10919033, 0.40919033],
4)
def test_cvoptimizer_with_cons_and_ieq(self):
objective = np.array([0.1, 0.2, 0.3])
cov = np.array([[0.05, 0.01, 0.02],
[0.01, 0.06, 0.03],
[0.02, 0.03, 0.07]])
lbound = np.array([-0.3, -0.3, -0.3])
ubound = np.array([0.5, 0.5, 0.5])
cons = np.array([[1., 1., 1.]])
clbound = np.array([0.])
cubound = np.array([0.])
target_vol = 0.1
optimizer = CVOptimizer(objective,
cov,
lbound,
ubound,
cons,
clbound,
cubound,
0.,
target_vol)
# check against known good result
np.testing.assert_array_almost_equal(optimizer.x_value(),
[-0.3, -0.10919033, 0.40919033],
4)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment