https://github.com/bbopt/solar

The SOLAR blackbox optimization problem

https://github.com/bbopt/solar

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.5%) to scientific vocabulary

Keywords

benchmarking blackbox-optimization blackbox-problem blackbox-testing solar-energy solar-plant
Last synced: 6 months ago · JSON representation

Repository

The SOLAR blackbox optimization problem

Basic Info
  • Host: GitHub
  • Owner: bbopt
  • License: lgpl-2.1
  • Language: C++
  • Default Branch: master
  • Homepage:
  • Size: 164 MB
Statistics
  • Stars: 18
  • Watchers: 0
  • Forks: 5
  • Open Issues: 0
  • Releases: 2
Topics
benchmarking blackbox-optimization blackbox-problem blackbox-testing solar-energy solar-plant
Created almost 6 years ago · Last pushed 7 months ago
Metadata Files
Readme License

README.md

SOLAR v1.0.7 (August 2025)

The SOLAR blackbox optimization benchmarking framework.

Compilation

In the following, $SOLAR_HOME denotes the directory where SOLAR has been downloaded. Go to the $SOLAR_HOME/src directory and type make. It will generate the binary executable solar located in $SOLAR_HOME/bin.

For Windows users, it is possible to directly use a binary executable.

Validation

Your SOLAR installation must be validated. For this, type ./bin/solar -check. This will execute several tests during 10 to 20 minutes.

If the validation fails, please send an email to nomad@gerad.ca with the full output.

Execution

Type ./bin/solar and you will be guided with the following help:

``` Run SOLAR (basic) : solar pbid x.txt (add -v for verbose mode) Run SOLAR (advanced): solar pbid x.txt -seed=S -fid=F -rep=R -v S: Random seed: integer >=0 or "diff"; Default=0 F: Fidelity: real in [0;1]; Default=1.0 (truth) R: Replications: integer >= 1 or real in ]0;1[ ; Default=1

Validation: solar -check (can take several minutes) Help(1) : solar -h Help(2) : solar -h pbid Info : solar -i `` To run a simulation, type$SOLARHOME/bin/solar pb_id x.txt -seed=S -fid=F -rep=R -v (optional)`.

The different options are:

``` pb_id: Problem ID (see list of problems below)

x.txt: Input vector: Point at which the simulator is evaluated Values separated with spaces It is possible to specify several vectors: Use one line for each

-v: Verbose option

 S: Random seed:
      Some SOLAR instances are stochastic. This parameter impacts the value of stochastic outputs
      The seed is a natural integer
      If SOLAR is run twice at the same point with the same seed, it will give the same outputs
      The default value is 0
      Use -seed=diff to let SOLAR use a different random seed each time
      The random number generator can be validated by running 'solar -check'

 F: Fidelity of the simulator
      Real value in [0;1]
      Default: 1.0, which corresponds to the "true blackbox", or the "truth"
      Any value in ]0;1[ corresponds to a "static surrogate" of the truth
      With -fid=0.0, only the a priori constraints and analytical objectives are computed
      The execution time increases with the fidelity
      A good default static surrogate is -fid=0.5

 R: Replications
      Integer >= 1 or real in ]0;1[, default=1
      If R is integer, it is the number of times that the simulator is run at the same point
      If R is real, it corresponds to a probability that the outputs are stabilized after a variable number of replications
      Each replication uses a different random seed dependent on the -seed option
      The mean value of stochastic outputs is displayed
      It is not possible to use R>1 with deterministic instances

Help for a problem: solar pbid or solar -h pbid ```

The list of instances is:

# pb_id obj.(f) #of obj.(p) #of var.(n) #of constr.(m) 1 MAXNRG_H1 total solar energy on the receiver 1 9 5 2 MINSURF_H1 total heliostats field surface 1 14 13 3 MINCOST_C1 total investment cost 1 20 13 4 MINCOST_C2 total investment cost 1 29 16 5 MAXCOMP_HTF1 compliance to a demand profile 1 20 12 6 MINCOST_TS cost of storage 1 5 6 7 MAXEFF_RE receiver efficiency 1 7 6 8 MAXHF_MINCOST heliostat field performance and cost 2 13 9 9 MAXNRG_MINPAR power and losses 2 29 17 10 MINCOST_UNCONSTRAINED cost of storage + penalties 1 5 0 11 MINCOST_CH total investment cost 1 31 16 List of best know values for single-objective instances (one replication, full fidelity, default seed of zero): SOLAR1 -902,503.692418 SOLAR2 841,839.671915 SOLAR3 62,775,886.3251 SOLAR4 108,197,236.146 SOLAR5 -28.8817193932 SOLAR6 43,954,935.1836 SOLAR7 -4,972.88689831 SOLAR10 42.416671 SOLAR11 TBD

SOLAR3 best solution found by Xavier Lebeuf. SOLAR10 best solutions found by Jeff Larson and GOOMBAH in the IBCDFO package, and Tom Ragonneau with COBYQA.

Example

The command $SOLAR_HOME/bin/solar 1 ./tests/1_MAXNRG_H1/x0.txt should display

-122505.5978 -10881140.57 -1512631.39776 -134 -4.5 0

which corresponds to the feasible point (8, 8, 150, 7, 7, 250, 45, 0.5, 5) of value -122,505.5978.

Other points and NOMAD parameters files can be found in the ./tests directory.

It is also possible to modify the main() function in ./src/main.cpp to call SOLAR from a code. A minimal example is provided.

How to cite

@techreport{solar_paper, Author = {N. Andr\'{e}s-Thi\'{o} and C. Audet and M. Diago and A.E. Gheribi and S. {Le~Digabel} and X. Lebeuf and M. {Lemyre~Garneau} and C. Tribes}, Title = {{{\tt solar}: A solar thermal power plant simulator for blackbox optimization benchmarking}}, Institution = {Les cahiers du GERAD}, Number = {G-2024-37}, Year = {2025}, Doi = {10.1007/s11081-024-09952-x}, Url = {https://dx.doi.org/10.1007/s11081-024-09952-x}, ArxivUrl = {http://arxiv.org/abs/2406.00140}, Note = {To appear in {\em Optimization and Engineering}} }

Owner

  • Name: Blackbox Optimization
  • Login: bbopt
  • Kind: organization
  • Email: nomad@gerad.ca
  • Location: Montréal, Qc, Canada

GitHub organization of the research group from Polytechnique Montréal and GERAD for derivative-free and blackbox optimization

GitHub Events

Total
  • Watch event: 4
  • Member event: 1
  • Push event: 10
  • Pull request event: 1
  • Fork event: 1
Last Year
  • Watch event: 4
  • Member event: 1
  • Push event: 10
  • Pull request event: 1
  • Fork event: 1

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 73
  • Total Committers: 2
  • Avg Commits per committer: 36.5
  • Development Distribution Score (DDS): 0.384
Past Year
  • Commits: 19
  • Committers: 2
  • Avg Commits per committer: 9.5
  • Development Distribution Score (DDS): 0.421
Top Committers
Name Email Commits
Sébastien Le Digabel 3****l 45
Sebastien Le Digabel S****l@g****a 28
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: about 2 years ago

All Time
  • Total issues: 3
  • Total pull requests: 3
  • Average time to close issues: 20 days
  • Average time to close pull requests: 2 minutes
  • Total issue authors: 2
  • Total pull request authors: 2
  • Average comments per issue: 0.67
  • Average comments per pull request: 1.0
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 0.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • paulapatience (2)
  • ragonneau (1)
Pull Request Authors
  • sebastienledigabel (2)
  • amontoison (1)
  • montplaisir (1)
  • XavierLebeuf (1)
Top Labels
Issue Labels
Pull Request Labels
bug (1)