Commit 6c148f53 authored by Dr.李's avatar Dr.李

added tests for base optimizer

parent 71c388ea
......@@ -1852,5 +1852,5 @@ class FactorCorrelation(Base):
if __name__ == '__main__':
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqldb://root:we083826@localhost/alpha')
engine = create_engine('mysql+mysqldb://root:password@localhost/alpha')
Base.metadata.create_all(engine)
# -*- coding: utf-8 -*-
"""
Created on 2017-11-1
@author: cheng.li
"""
import unittest
import numpy as np
from alphamind.cython.optimizers import LPOptimizer
from alphamind.cython.optimizers import QPOptimizer
class TestOptimizers(unittest.TestCase):
def test_lpoptimizer(self):
objective = np.array([1., 2.])
lower_bound = np.array([0., 0.2])
upper_bound = np.array([1., 0.8])
optimizer = LPOptimizer(np.array([[1., 1., 1., 1.]]),
lower_bound,
upper_bound,
objective)
self.assertAlmostEqual(optimizer.feval(), 1.2)
np.testing.assert_array_almost_equal(optimizer.x_value(), [0.8, 0.2])
def test_mvoptimizer(self):
objective = np.array([0.01, 0.02, 0.03])
cov = np.array([[0.02, 0.01, 0.02],
[0.01, 0.02, 0.03],
[0.02, 0.03, 0.02]])
ids_var = np.diag([0.01, 0.02, 0.03])
cov += ids_var
lbound = np.array([0., 0., 0.])
ubound = np.array([0.4, 0.4, 0.5])
cons = np.array([[1., 1., 1.],
[1., 0., 1.]])
clbound = np.array([1., 0.3])
cubound = np.array([1., 0.7])
optimizer = QPOptimizer(objective,
cov,
lbound,
ubound,
cons,
clbound,
cubound)
# check against matlab result
np.testing.assert_array_almost_equal(optimizer.x_value(), [0.1996,
0.3004,
0.5000],
4)
if __name__ == '__mai__':
unittest.main()
......@@ -32,6 +32,7 @@ from alphamind.tests.execution.test_naiveexecutor import TestNaiveExecutor
from alphamind.tests.execution.test_thresholdexecutor import TestThresholdExecutor
from alphamind.tests.execution.test_targetvolexecutor import TestTargetVolExecutor
from alphamind.tests.execution.test_pipeline import TestExecutionPipeline
from alphamind.tests.cython.test_optimizers import TestOptimizers
if __name__ == '__main__':
......@@ -55,6 +56,7 @@ if __name__ == '__main__':
TestNaiveExecutor,
TestThresholdExecutor,
TestTargetVolExecutor,
TestExecutionPipeline],
TestExecutionPipeline,
TestOptimizers],
alpha_logger)
runner.run()
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