Skip to content
Snippets Groups Projects
Commit c37e96c8 authored by Mikkel Friis-Møller's avatar Mikkel Friis-Møller
Browse files

Merge branch 'Increase_coverage_and_fail_under' into 'master'

Increase coverage and fail under

See merge request !68
parents 7fe03967 9e7dde32
No related branches found
No related tags found
1 merge request!94Handle disabled mpi
[run]
omit =
*/Colonel/*
topfarm/tests/*
\ No newline at end of file
topfarm/tests/*
[report]
fail_under = 80
\ No newline at end of file
......@@ -51,7 +51,7 @@ except ModuleNotFoundError:
class EasySimpleGADriver(MySimpleGADriver):
def __init__(self, max_gen=100, pop_size=25, Pm=None, Pc=.5, elitism=True, bits={}, debug_print=[], run_parallel=False):
def __init__(self, max_gen=100, pop_size=25, Pm=None, Pc=.5, elitism=True, bits={}, debug_print=[], run_parallel=False, random_state=None):
"""SimpleGA driver with optional arguments
Parameters
......@@ -75,3 +75,5 @@ class EasySimpleGADriver(MySimpleGADriver):
"""
MySimpleGADriver.__init__(self, max_gen=max_gen, pop_size=pop_size, Pm=Pm, Pc=Pc, elitism=elitism,
bits=bits, debug_print=debug_print, run_parallel=run_parallel)
if random_state is not None:
self._randomstate = random_state
......@@ -64,6 +64,12 @@ def test_update_state(turbineTypeOptimizationProblem, types, cost):
c, state = tf.evaluate({'turbineType': types})
npt.assert_equal(c, cost)
npt.assert_array_equal(state['turbineType'], types)
# wrong shape
c, state = tf.evaluate({'turbineType': [types]})
npt.assert_equal(c, cost)
npt.assert_array_equal(state['turbineType'], types)
# missing key
c, state = tf.evaluate({'missing': types})
def test_evaluate(turbineTypeOptimizationProblem):
......
......@@ -3,7 +3,8 @@ import numpy as np
import pytest
from topfarm.cost_models.dummy import DummyCost
from topfarm.plotting import NoPlot
from topfarm.easy_drivers import EasyScipyOptimizeDriver, EasyPyOptSparseIPOPT
from topfarm.easy_drivers import EasyScipyOptimizeDriver, EasyPyOptSparseIPOPT,\
EasySimpleGADriver
from topfarm.tests import npt, uta
......@@ -41,6 +42,7 @@ def topfarm_generator():
(EasyScipyOptimizeDriver(tol=1e-3, disp=False), 1e-2),
(EasyScipyOptimizeDriver(maxiter=14, disp=False), 1e-1),
(EasyScipyOptimizeDriver(optimizer='COBYLA', tol=1e-3, disp=False), 1e-2),
(EasySimpleGADriver(max_gen=10, pop_size=100, bits={'turbineX': [12] * 3, 'turbineY':[12] * 3}, random_state=1), 1e-1),
(EasyPyOptSparseIPOPT(), 1e-4),
][:])
def test_optimizers(driver, tol, topfarm_generator):
......@@ -48,14 +50,15 @@ def test_optimizers(driver, tol, topfarm_generator):
pytest.xfail("Driver missing")
tf = topfarm_generator(driver)
tf.evaluate()
_, _, recorder = tf.optimize()
cost, state, recorder = tf.optimize()
print(recorder.driver_cases.num_cases)
tb_pos = tf.turbine_positions[:, :2]
tf.plot_comp.show()
assert sum((tb_pos[2] - tb_pos[0])**2) > 2**2 - tol # check min spacing
assert tb_pos[1][0] < 6 + tol # check within border
np.testing.assert_array_almost_equal(tb_pos, optimal, -int(np.log10(tol)))
if isinstance(driver, EasySimpleGADriver):
assert cost == recorder['cost'].min()
else:
np.testing.assert_array_almost_equal(tb_pos, optimal, -int(np.log10(tol)))
@pytest.mark.parametrize('driver,tol,N', [
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment