Giter VIP home page Giter VIP logo

chemos's Introduction

chemos's People

Contributors

florianhase avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chemos's Issues

ChemOS parameters problem

Hi,

I am completing my final degree project on Bayesian Optimisation. I am implementing your ChemOS software to optimise a mixture of gold nanoparticles of different shapes to match spectra fingerprint of predefined objective extinction spectrum.
Conceptually, my experiment is very much the same as you RGB experiment in your PlosOne paper (Figure 2 in that paper).

Optimisation experiment:
In typical experiment I am having two different mixtures (two parameters, see input file below). The objective is the spectra of the mixture of both input solutions in 1 to 3 volume ratio. Therefore, Phoenics should find the right volume ration between two available solutions. Note, there is no more solution to be chosen by Phoenics. Once the Phoenics generates the proposed list of parameters, a home-made script scales (normalize) this list and submit it to corresponding pump. In doing so, the total volume of each consecutive mixture is kept constant.

Problem:
Although I can run the system in close-loop fashion using Phoenics algorithm, I am unable to bring the Phoenics back to the parameter combination that corresponds to the low-value loss during alternate explore/exploit cycles. That is, the Phoenics finds a spot in the surface of a low loss value, but it is unable to re-visiting this spot in next exploit runs (For detailed information on the parameters use see below).

Figure 1 shows the set of parameters (2) for Phoenics and Random Search.

image

Figure 1. Left: coordinates of 2 parameters proposed by Phoenics in consecutive runs. The numbers indicate the iteration.
The size of spot corresponds to the value of loss: the smallest the spot, the lowest is the loss value. Right: similar analysis for Random Search algorithm.

Analysing Figure 1, I can conclude that Phoenics is capable of exploring the parameter surface, it is able to reach the border of the parameter surface, but it is unable to exploit the areas of the minimum loss once they were visited.

Figure 2 shows the change of loss value for different iterations.

image

Figure 2. The evolution of the average loss value for 15 runs with 3 repetitions for Phoenics and Random Search.

Analyzing Figure 2, I can conclude that apparently until experiment 4 Phoenics works find but after that, it starts doing strange things.

Question: Can lambda value in the script alter the way Phoenics explore/exploit?

Thank you,

==========================================================================
Input parameters used for Phoenics algorithm:
_ALGORITHM_NAME = 'phoenics'
#_ALGORITHM_NAME = 'random_search'
#_ALGORITHM_NAME = 'spearmint'
#_ALGORITHM_NAME = 'smac'

#==============================================================

_DEFAULT_SETTINGS = {'algorithm': {'name': _ALGORITHM_NAME,
'num_batches': 1,
'batch_size': 2,
'random_seed': 100691},

				 'account_details': {},

				 'scratch_dir': '%s/.scratch' % _HOME,

				 'bot_database': {'path': _DB_BOT_PATH,
				 				  'database_type': _DB_BOT_TYPE},
				 'param_database': {'path': _DB_PARAM_PATH,
							   		'database_type': _DB_PARAM_TYPE},
				 'request_database': {'path': _DB_REQUEST_PATH,
				 					  'database_type': _DB_REQUEST_TYPE},
				 'results_database': {'path': _DB_RESULTS_PATH,
				 					  'database_type': _DB_RESULTS_TYPE},
				 'feedback_database': {'path': _DB_FEEDBACK_PATH,
				 					   'database_type': _DB_FEEDBACK_TYPE},

				 'communicator': {'type': 'auto', 'port': 'PORT', 'channel_id': 'CHANNEL_ID', 'bot_id': 'BOT_ID'},


				 'experiments': [{'name': 'phoenics_low0high1โ€™,
				 				  'variables':  [{'name': 'param0', 'type': 'float', 'low': 0.0, 'high': 1.0, 'size': 1},
				 				  			     {'name': 'param1', 'type': 'float', 'low': 0.0, 'high': 1.0, 'size': 1}],

								  'objectives': [{'name': 'obj_0', 'operation': 'average', 'hierarchy': 0, 'type': 'minimum', 'tolerance': 0.0}],

				 				  'repetitions': 3,
								  'description': 'description of the experiment'}],

				 'bots': [{'name': 'default_bot',
				 		   'parameters': ['param0', 'param1'],
						   'communication': {'dump_path': '~/Dropbox/Aplicaciones/bot_input/', 'pick_up_path': '~/Dropbox/Aplicaciones/bot_output/',
						   					 'status_file': 'chemos/ChemOS_status.pkl',
											 }}]

				 												   }

Input parameters used for Random Search algorithm:
#_ALGORITHM_NAME = 'phoenics'
_ALGORITHM_NAME = 'random_search'
#_ALGORITHM_NAME = 'spearmint'
#_ALGORITHM_NAME = 'smac'

#==============================================================

_DEFAULT_SETTINGS = {'algorithm': {'name': _ALGORITHM_NAME,
'num_batches': 1,
'batch_size': 2,
'random_seed': 100691},

				 'account_details': {},

				 'scratch_dir': '%s/.scratch' % _HOME,

				 'bot_database': {'path': _DB_BOT_PATH,
				 				  'database_type': _DB_BOT_TYPE},
				 'param_database': {'path': _DB_PARAM_PATH,
							   		'database_type': _DB_PARAM_TYPE},
				 'request_database': {'path': _DB_REQUEST_PATH,
				 					  'database_type': _DB_REQUEST_TYPE},
				 'results_database': {'path': _DB_RESULTS_PATH,
				 					  'database_type': _DB_RESULTS_TYPE},
				 'feedback_database': {'path': _DB_FEEDBACK_PATH,
				 					   'database_type': _DB_FEEDBACK_TYPE},

				 'communicator': {'type': 'auto', 'port': '3000', 'channel_id': 'C01NLGGFQBY', 'bot_id': 'U01P18KQXA6'},


				 'experiments': [{'name': 'random_search_low0high1',
				 				  'variables':  [{'name': 'param0', 'type': 'float', 'low': 0.0, 'high': 1.0, 'size': 1},
				 				  			     {'name': 'param1', 'type': 'float', 'low': 0.0, 'high': 1.0, 'size': 1}],

								  'objectives': [{'name': 'obj_0', 'operation': 'average', 'hierarchy': 0, 'type': 'minimum', 'tolerance': 0.0}],

				 				  'repetitions': 3,
								  'description': 'description of the experiment'}],

				 'bots': [{'name': 'default_bot',
				 		   'parameters': ['param0', 'param1'],
						   'communication': {'dump_path': '~/Dropbox/Aplicaciones/bot_input/', 'pick_up_path': '~/Dropbox/Aplicaciones/bot_output/',
						   					 'status_file': 'chemos/ChemOS_status.pkl',
											 }}]

				 												   }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.