coco-experiment 2.7.3__tar.gz → 2.7.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/PKG-INFO +1 -1
  2. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/meson.build +1 -0
  3. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/src/cocoex/_version.py +1 -1
  4. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/src/cocoex/coco.c +1 -1
  5. coco_experiment-2.7.5/src/cocoex/download_example.py +45 -0
  6. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/src/cocoex/noiser.py +2 -1
  7. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/src/cocoex/utilities.py +11 -1
  8. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/.gitignore +0 -0
  9. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/LICENSE +0 -0
  10. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/README.md +0 -0
  11. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/pyproject.toml +0 -0
  12. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/scripts/run-doctest.py +0 -0
  13. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/src/cocoex/__init__.py +0 -0
  14. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/src/cocoex/bare_problem.pyx +0 -0
  15. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/src/cocoex/coco.h +0 -0
  16. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/src/cocoex/exceptions.py +0 -0
  17. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/src/cocoex/interface.pyx +0 -0
  18. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/src/cocoex/solvers.py +0 -0
  19. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/tests/bbob2009_testcases.txt +0 -0
  20. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/tests/bbob2009_testcases2.txt +0 -0
  21. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/tests/test_bare_problem.py +0 -0
  22. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/tests/test_regression.py +0 -0
  23. {coco_experiment-2.7.3 → coco_experiment-2.7.5}/tests/test_suite.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coco-experiment
3
- Version: 2.7.3
3
+ Version: 2.7.5
4
4
  Summary: Benchmarking framework for all types of black-box optimization algorithms.
5
5
  Project-URL: Homepage, https://github.com/numbbo/coco-experiment
6
6
  Project-URL: Documentation, https://numbbo.github.io/coco-doc/apidocs/cocoex/
@@ -64,6 +64,7 @@ dep_numpy = declare_dependency(include_directories: inc_numpy, compile_args: cfl
64
64
  python_sources = [
65
65
  'src/cocoex/__init__.py',
66
66
  'src/cocoex/_version.py',
67
+ 'src/cocoex/download_example.py',
67
68
  'src/cocoex/exceptions.py',
68
69
  'src/cocoex/noiser.py',
69
70
  'src/cocoex/solvers.py',
@@ -1,7 +1,7 @@
1
1
  # file generated by fabricate
2
2
  # Do not change, do not track in version control!
3
3
 
4
- __version__ = "2.7.3"
4
+ __version__ = "2.7.5"
5
5
  version = __version__
6
6
 
7
7
  if __name__ == "__main__":
@@ -31526,7 +31526,7 @@ void coco_archive_free(coco_archive_t *archive) {
31526
31526
  * don't change, don't track in version control!
31527
31527
  */
31528
31528
 
31529
- const char *coco_version = "2.7.3";
31529
+ const char *coco_version = "2.7.5";
31530
31530
  #line 1 "coco_runtime_c.c"
31531
31531
  /**
31532
31532
  * @file coco_runtime_c.c
@@ -0,0 +1,45 @@
1
+ """Download example scripts from GitHub to a local folder, by default `cocoex-example`
2
+ in the current folder.
3
+
4
+ Usage::
5
+
6
+ python -m cocoex.download_example [folder_name]
7
+
8
+ """
9
+ import os
10
+ import sys
11
+
12
+ default_local_folder = 'cocoex-example'
13
+
14
+ remote_folder = 'https://raw.githubusercontent.com/numbbo/coco-experiment/main/build/python/example/'
15
+
16
+ file_names = ['mkl_bugfix.py',
17
+ 'example_experiment_simple.py',
18
+ 'example_experiment_complete.py',
19
+ 'example_experiment_non_anytime.py',
20
+ 'example_experiment_parameter_sweep.py',
21
+ ]
22
+
23
+ def main(folder=None):
24
+ """download example scripts from GitHub into `folder`, by default `./cocoex-example`"""
25
+ try:
26
+ import urllib.request
27
+ except ImportError:
28
+ print('Install urllib (`pip install urllib`) to download example')
29
+ raise
30
+ if folder is None:
31
+ folder = default_local_folder
32
+ if os.path.exists(folder):
33
+ raise ValueError('local target folder {0} already exists. Remove the folder\n'
34
+ 'or pass another folder name as argument to `cocoex.download_example`'
35
+ .format(folder))
36
+ os.mkdir(folder)
37
+ for file_name in file_names:
38
+ with urllib.request.urlopen(remote_folder + file_name) as f:
39
+ d = f.read().decode('utf-8')
40
+ with open(folder + '/' + file_name, 'w') as f:
41
+ f.write(d)
42
+ print(' example scripts have been downloaded to {0}'.format(folder))
43
+
44
+ if __name__ == '__main__':
45
+ main(sys.argv[1] if len(sys.argv) > 1 else None)
@@ -70,7 +70,8 @@ class Noisifier:
70
70
  noise generator and the numbers scaled by pi/2 such that P(number > k)
71
71
  equals about 1/k when k >= 5.
72
72
 
73
- See also https://github.com/numbbo/coco-experiment/blob/main/build/python/example/example_experiment_complete.py
73
+ See also https://github.com/numbbo/coco-experiment/issues/36 and
74
+ https://github.com/numbbo/coco-experiment/blob/main/build/python/example/example_experiment_complete.py
74
75
 
75
76
  """
76
77
  def __init__(self, p_add=0.2, p_subtract=0.0, p_epsilon=0, epsilon=1e-4,
@@ -722,6 +722,10 @@ class ExperimentRepeater:
722
722
  return [ii for ii in d if not d[ii]] # list of instance numbers with no data
723
723
  return []
724
724
  @property
725
+ def sweep(self):
726
+ """current sweep/repetition number (starts with 1)"""
727
+ return self._sweeps
728
+ @property
725
729
  def n_problems(self):
726
730
  """current number of tracked problems (different ``(id_function, dimension)``)"""
727
731
  return sum(len(self.trials(k)) > 0 for k in self._data)
@@ -742,7 +746,13 @@ class ExperimentRepeater:
742
746
  return sum(self.trials(problem))
743
747
  return sum(self.all(self.n_trials).values())
744
748
  def track(self, problem):
745
- """record problem instance evaluations and success (target hit)"""
749
+ """record problem instance evaluations and success (final target hit).
750
+
751
+ Track data to decide (later) whether more experiments or sweeps are
752
+ needed. `track` requires `problem` to have the attributes
753
+ ``id_function, dimension, id_instance, evaluations`` and
754
+ ``final_target_hit``.
755
+ """
746
756
  fun, dim, iinst = self.problem_to_ids(problem)
747
757
  if (fun, dim) not in self._data:
748
758
  self._data[(fun, dim)] = _collections.defaultdict(list)
File without changes