Deprecated: Optional parameter $args declared before required parameter $parser is implicitly treated as a required parameter in /var/www/vhosts/rave.gatech.edu/httpdocs/help/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.class.php on line 70

Deprecated: Optional parameter $prefix declared before required parameter $code is implicitly treated as a required parameter in /var/www/vhosts/rave.gatech.edu/httpdocs/help/languages/Language.php on line 4270

Warning: Private methods cannot be final as they are never overridden by other classes in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/actions/Action.php on line 67

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/json/FormatJson.php on line 397

Deprecated: Return type of ResultWrapper::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/db/DatabaseUtility.php on line 174

Deprecated: Return type of ResultWrapper::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/db/DatabaseUtility.php on line 192

Deprecated: Return type of ResultWrapper::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/db/DatabaseUtility.php on line 185

Deprecated: Return type of ResultWrapper::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/db/DatabaseUtility.php on line 202

Deprecated: Return type of ResultWrapper::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/db/DatabaseUtility.php on line 163

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/vhosts/rave.gatech.edu/httpdocs/help/languages/LanguageConverter.php on line 703

Deprecated: Return type of FormOptions::offsetExists($name) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/FormOptions.php on line 381

Deprecated: Return type of FormOptions::offsetGet($name) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/FormOptions.php on line 390

Deprecated: Return type of FormOptions::offsetSet($name, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/FormOptions.php on line 399

Deprecated: Return type of FormOptions::offsetUnset($name) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/FormOptions.php on line 407

Deprecated: Optional parameter $label declared before required parameter $alt is implicitly treated as a required parameter in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/Linker.php on line 730

Deprecated: Optional parameter $attribs declared before required parameter $contents is implicitly treated as a required parameter in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/Xml.php on line 131

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/FormOptions.php:35) in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/Feed.php on line 234

Deprecated: header(): Passing null to parameter #3 ($response_code) of type int is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/FormOptions.php:35) in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Deprecated: header(): Passing null to parameter #3 ($response_code) of type int is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/FormOptions.php:35) in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Deprecated: header(): Passing null to parameter #3 ($response_code) of type int is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/FormOptions.php:35) in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37
https://rave.gatech.edu/help/index.php?title=Special:NewPages&feed=atom&hideredirs=1&limit=50&offset=&namespace=0&username=&tagfilter= Rave Documentation - New pages [en] 2024-04-24T05:20:38Z From Rave Documentation MediaWiki 1.25.5 https://rave.gatech.edu/help/index.php?title=List_of_functions_that_add_rows_to_the_data_set List of functions that add rows to the data set 2015-01-10T19:42:46Z <p>Admin: Created page with &quot;This page lists all Rave functions that can add rows to a data set. If you add a new feature (e.g. field of handles) that needs to grow any time rows are added, you need t...&quot;</p> <hr /> <div>This page lists all Rave functions that can add rows to a [[data set]]. If you add a new feature (e.g. field of handles) that needs to grow any time rows are added, you need to update all of these functions.<br /> <br /> *ravemakedataset - creates a new [[data set]] or completely overwrites an existing one<br /> *raveappendrows - appends rows to an existing [[data set]]<br /> **Called by: <br /> ::&quot;appendbutton_callback&quot; in rowtab.m (for appending the current point to [[data set]])<br /> ::ravesamplinggui.m (for adding structured or random samples to a [[data set]])<br /> ::&quot;appendbutton_callback&quot; in managedatagui.m (for appending a new data file to an existing [[data set]])<br /> ::ravecreateappendcurrentpointbutton.m - same function as rowtab button, but placed on workspace<br /> ::exportappenddatagui.m - append optimizer results to a [[data set]].</div> Admin https://rave.gatech.edu/help/index.php?title=Optimization_animation_preferences Optimization animation preferences 2015-01-09T18:35:53Z <p>Admin: </p> <hr /> <div>This page describes (some of) the [[preferences]] related to optimizer animation.<br /> <br /> ==Pause between iterations==<br /> Checking this box causes the optimizer to pause after each &quot;iteration,&quot; which for the purposes of this function means each time the animation updates. (Different optimizers may have different criteria for running the animation update function, and for the Matlab toolbox optimizers we can&#039;t control these criteria). <br /> <br /> This option is intended to let you slow down the progress of an optimizer so you can more clearly see what it is doing. This may be useful for giving classroom demonstrations about how different optimizers work. <br /> <br /> Pressing any key on the keyboard will cause the optimizer to proceed to the next iteration, OR pressing the Esc key will cause the optimizer to finish without stopping again at any subsequent iterations.<br /> <br /> ==Update analysis after each iteration==<br /> Checking this box causes Rave to set the current analysis&#039;s (i.e. the analysis of the graph on which the animation is being shown) Current point to equal the optimizer&#039;s current best solution (different optimizers may define this in different ways). Then, all [[workspace objects]] belonging to this analysis are updated.<br /> <br /> This option is used to watch the optimizer&#039;s progress on ALL [[workspace objects]], instead of just the selected object. However, other [[workspace objects]] won&#039;t show the usual optimizer animation markers, they will show their typical response to updating the Current point. <br /> <br /> Note that using this option may significantly slow down otherwise fast optimizers (if the optimizer is already slow you won&#039;t notice much difference), so don&#039;t leave this option turned on when you don&#039;t really need it.</div> Admin https://rave.gatech.edu/help/index.php?title=Optimizer_animation_settings Optimizer animation settings 2014-11-04T20:38:09Z <p>Admin: Created page with &quot; ==Pause between iterations until mouse/key is pressed== This option is intended to be used in a classroom setting in which you are trying to describe the behavior of the opti...&quot;</p> <hr /> <div><br /> ==Pause between iterations until mouse/key is pressed==<br /> This option is intended to be used in a classroom setting in which you are trying to describe the behavior of the optimizer as it is running. This option pauses the optimizer after each iteration until you press a key, giving you an arbitrary amount of time to explain whatever behavior you wish to explain. <br /> <br /> ==Update Analysis&#039;s &quot;Current Point&quot; after each iteration==<br /> This option updates the &quot;Current Point&quot; to match the optimizer&#039;s current point after each iteration. This allows the optimizer&#039;s progress to be shown on ALL [[workspace objects]] that belong to the current analysis. (Whereas normally the optimizer&#039;s progress is shown only on the currently selected object.) The other objects won&#039;t show the full optimizer animation, they will instead show an animation similar to what you would see if you use an [[Independent variable]] sliders control to trace along the optimizer&#039;s path.</div> Admin https://rave.gatech.edu/help/index.php?title=Coding_with_raveevaluatefunction Coding with raveevaluatefunction 2014-10-17T14:27:05Z <p>Admin: </p> <hr /> <div>This page describes the format of the outputs of raveevaluatefunction, particularly the format of the outputs when working with [[random variables]].<br /> <br /> Raveevaluatefunction has two outputs. If you&#039;re not working with [[random variables]], then things are easy: the first output is an array of function values and the second output is {[]} (a single empty cell). When using [[random variables]], the columns of the first array will instead be statistics whenever the corresponding variable is a function of [[random variables]], and the second array will be a cell array of vectors of random values that were used to calculate those statistics. This is explained in more detail below.</div> Admin https://rave.gatech.edu/help/index.php?title=Coding_distributions_for_use_in_Rave Coding distributions for use in Rave 2014-10-14T16:56:55Z <p>Matt: </p> <hr /> <div>To create a new distribution, make a new folder under rave\distributions\ whose name is the KEYWORD that identifies your distribution. See below for the limitations on how you must code this distribution, in particular the requirement to use the inverse-transform sampling method. <br /> <br /> Inside this folder, you must place the following files:<br /> <br /> <br /> *&#039;&#039;&#039;distributioninfo.txt&#039;&#039;&#039; - A two-line text file. The first line contains a (short) name for this distribution. The second line contains a slightly longer description of the distribution. <br /> <br /> *&#039;&#039;&#039;distributionsettingsKEYWORD.m&#039;&#039;&#039; - a SCRIPT that creates a scalar structure named &quot;settings&quot; whose fields are the settings/parameters that define this distribution. Rave will display both the field names and values to the user, so make the fieldnames meaningful. Some fieldnames are reserved for use by Rave and must not appear in this script. These are: &quot;type&quot;, &quot;name&quot;, &quot;serialnumber&quot;<br /> <br /> *&#039;&#039;&#039;distributionupdatesettingsKEYWORD.m&#039;&#039;&#039; - a function that takes in a settings structure provided by the user and returns a new settings structure that is guaranteed to be valid, or returns an empty array to indicate a total failure (in which case Rave will revert to the last valid settings structure it had). For now there is no standard way to handle errors in this function, so you can report them to the user as warnings or with dialog boxes (for things that the user REALLY needs to know). Try to avoid making this function cause actual errors that will stop matlab execution. &#039;&#039;&#039;Note:&#039;&#039;&#039; Rave adds some additional fields to the settings structure, so this function should only modify the input settings structure, not create a new one from scratch. This ensures that any fields added by Rave are unchanged by this function. <br /> **Example 1, for a normal distribution the value settings.sigma must be non-negative. So if the input settings structure has settings.sigma = -1, this function prints a warning to the command window and returns an empty array... this causes rave to revert to the last valid settings structure that existed for this variable. <br /> **Example 2, for a triangular distribution, the values settings.a, .b, .c must be monotonically increasing. If the user inputs these out of order, this function simply reorders them so that they are monotonically increasing. This function then returns the new settings array, which Rave uses. It also prints a warning to the command window. <br /> <br /> <br /> *&#039;&#039;&#039;distributionsampleKEYWORD.m&#039;&#039;&#039; - an inverse-cdf function that returns x given y such that y=P(x). Must have the signature: x=distributionsamplenormal(settings,y). Where n is a scalar number of points to sample, settings is the settings structure, and yis a vector of length n numbers between 0 and 1. In practice, Rave will construct the y vector depending on the user&#039;s desired sampling method (e.g. random or quasi-monte carlo).<br /> <br /> *&#039;&#039;&#039;distributionpdfKEYWORD.m&#039;&#039;&#039; - a function that returns y given x such that y=p(x). Must have the signature: y = distributionKEYWORD(x,settings), where x is a vector of arbitrary length. The output y is a same-size vector whose values are y = p(x). <br /> <br /> *&#039;&#039;&#039;distributionfitdataKEYWORD.m&#039;&#039;&#039;(optional) - A function that creates this distribution from a vector of data. Must have the signature: settings=distributionfitdataKEYWORD(data,settings). The input settings structure will be the default settings (in case this function does not recalculate all of the settings). If this function does not exist then Rave won&#039;t let users create your distribution automatically from data.</div> Matt https://rave.gatech.edu/help/index.php?title=Data_sets_and_analyses Data sets and analyses 2013-11-13T16:05:08Z <p>Admin: </p> <hr /> <div>Rave uses two parallel mechanisms to store your information: [[Data sets]] and [[Analyses]]. Each of these is described on its own page. <br /> <br /> The summary is: <br /> *&#039;&#039;&#039;[[Data sets]]&#039;&#039;&#039; contain your actual data and the supporting information needed to interpret it. This includes the data itself, the name of each variable, the type of each variable (continuous, discrete, string, etc.), and the names of any functions that are used to calculate the data.<br /> *&#039;&#039;&#039;[[Analyses]]&#039;&#039;&#039; contain supporting information related to how you are using your [[data sets]]. This includes things like a list of which rows of the [[data set]] are selected, what color to use to draw each row (in some visualizations), what ranges of the [[independent variables]] to use when running [[optimization]], and what values of the [[independent variables]] define the &quot;current point&quot; for drawing continuous visualizations. <br /> <br /> When you start Rave, you must load one or more [[data sets]] before you can do anything else. An initial analysis (named &quot;Default Analysis&quot;) is created for you. Each time you load a new [[data set]], all your [[Analyses]] are updated with initial values for the new [[data set]] (i.e. your [[Analyses]] will never become outdated). Each Analysis stores information related to every one of your [[data sets]], so most of the time you will only need one analysis.<br /> <br /> The only reason to create a new Analysis is so that you can manage multiple sets of the information that [[Analyses]] contain, which effectively lets you create groups of interactive visualizations that are linked within each group but not across groups. Since by default all visualizations belong to the same Default Analysis, they will all be linked to each other until you create additional [[Analyses]] and assign different (groups of) visualizations to each Analysis.</div> Admin https://rave.gatech.edu/help/index.php?title=Selecting_Data Selecting Data 2013-11-13T15:36:28Z <p>Admin: Admin moved page Selecting Data to Selecting data</p> <hr /> <div>Many discrete visualizations let you select data by clicking on the visualization. The effect of selecting data is to highlight the selected data in a different color in order to make it visually distinguishable. (You can change this color on the [[Row tab]].)<br /> <br /> Three data selection modes are available. You can change the selection mode on the [[Row tab]]. Not all visualizations support all selection modes; those that require a certain selection mode will always use that mode regardless of which mode you have activated on the [[Row tab]].<br /> <br /> The selection modes are:<br /> *&#039;&#039;&#039;Lasso selection&#039;&#039;&#039; - click and drag to draw an arbitrary boundary; points within this boundary are selected.<br /> *&#039;&#039;&#039;Box selection&#039;&#039;&#039; - click and drag to define the vertices of a rectangular boundary; points within this boundary are selected.<br /> *&#039;&#039;&#039;Point selection&#039;&#039;&#039; - click a single point to select it; you cannot drag to select additional points.<br /> <br /> In any selection mode, clicking an empty space on the visualization will deselect all data. In scatter plot-type visualizations, when using Lasso or Box selection mode, clicking a single data point (without dragging) will select that point as if you were using Point selection mode. <br /> <br /> The following keyboard combos can be used:<br /> *&#039;&#039;&#039;Shift + click&#039;&#039;&#039; - Add newly selected data to the current selection (union)<br /> *&#039;&#039;&#039;Alt + click&#039;&#039;&#039; - Subtract newly selected data from the current selection<br /> *&#039;&#039;&#039;Ctrl + click&#039;&#039;&#039; - Select data that was previously selected AND is newly selected (intersection)<br /> <br /> (Note that during ctrl+click selection, the previously selected points are unhighlighted. This may change in the future).<br /> <br /> You can also select data using the [[Main table]]. We are still working on getting keyboard combos to work correctly with the [[main table]]. The [[main table]] also allows you to select only a subset of the columns, which is useful for copying regions of your data table to the clipboard. For the purpose of highlighting data in visualizations, Rave considers a row of your [[data set]] to be selected if it is selected in any column of the [[main table]].</div> Admin https://rave.gatech.edu/help/index.php?title=Filtering_Data Filtering Data 2013-11-08T19:41:12Z <p>Admin: Admin moved page Filtering Data to Filtering data</p> <hr /> <div>The default row state is &quot;unfiltered&quot;. Each variable has an associated filter control:<br /> *For continuous variables, the filter control defines an upper and lower limit on the range of the variable. Values within this range are considered unfiltered, variables outside this range are considered filtered.<br /> *For discrete variables, the filter control defines a list of allowable values. Values that appear in this list are considered unfiltered, values not in this list are considered filtered. <br /> <br /> (The important difference being that for continuous variables, filtering is defined by a single contiguous range of values, whereas for discrete variables filtering is completely general.)<br /> <br /> Things to note:<br /> *Rows are considered to be unfiltered unless they explicitly fall outside the range of a filtered variable. This means that missing data values are considered unfiltered.<br /> *Filters for continuous variables use inequality constraints such that points exactly on the border are considered unfiltered. <br /> *The function used to determine if values are filtered or not is named ravecalculatefilteredstate. See the source code of this function to see exactly how Rave enforces filters.</div> Admin https://rave.gatech.edu/help/index.php?title=Non-deterministic_user-supplied_functions Non-deterministic user-supplied functions 2013-10-17T15:02:27Z <p>Admin: Created page with &quot;Rave provides a random variable capability that you can use to define and parameterize random variables, generate samples from these variables&#039; distributions, and use ...&quot;</p> <hr /> <div>Rave provides a [[random variable]] capability that you can use to define and parameterize [[random variables]], generate samples from these variables&#039; distributions, and use these samples as inputs to deterministic functions to generate distributions of function variables. <br /> <br /> That&#039;s not what this page is about.<br /> <br /> An alternative way to work with [[random variables]] in Rave is to handle the randomness entirely within the functions that you supply. In this case, your function is non-deterministic in the sense that it is not guaranteed to always calculate the same value of the output, &#039;&#039;y&#039;&#039;, for the same values of the input(s), &#039;&#039;x&#039;&#039;.<br /> <br /> If you do this, your function must obey the normal Rave rule that a single value of the inputs (i.e. one &quot;row&quot; of data) corresponds to a single value of the output. Thus, if your function calculates a distribution of values for the output, y, it must aggregate these values into a single (statistic) value before returning it to rave, for example mean(y). <br /> <br /> Note that if you use non-deterministic functions, you cannot use any features (including visualizations) in Rave that are specific to [[random variables]], as these features depend on using Rave&#039;s built-in mechanism for handling [[random variables]].</div> Admin https://rave.gatech.edu/help/index.php?title=Coding_explore_methods Coding explore methods 2013-10-11T18:31:57Z <p>Admin: /* Overloading Explore Methods for Particular Workspace Objects */</p> <hr /> <div>=Introduction=<br /> An &quot;explore method&quot; is a customization that can be applied to a workspace object to specialize it in some way. Yes, that is a vague definition. More importantly, explore methods provide a way for you to add a custom tab to a workspace object, which you can use to do pretty much anything.<br /> <br /> Explore methods are the things that you access from the [[Specialize tab]]. I call them explore methods because the [[Specialize tab]] used to be called the &quot;Explore tab,&quot; and all the references in the code still use &quot;explore&quot;. (Including that the tab itself is created in exploretab.m) <br /> <br /> Explore methods live in the rave\exploremethods\ folder. Just like everything other rave plugin, each explore method goes in its own folder, whose name serves as the KEYWORD. All the files related to the explore method will also contain this KEYWORD, which is how Rave knows which files to use for which purposes. <br /> <br /> In order for an explore method to be useable on a particular workspace object, one of the following conditions must be true:<br /> *The explore method keyword is listed in [[the workspace]] object&#039;s graphproperties file under properties.exploremethods<br /> *[[The workspace]] object key word is listed in the explore method&#039;s exploreproperties file under properties.workspaceobjects<br /> <br /> This way, if you code a new workspace object you can let it access exising explore methods without having to change the explore methods&#039; code, and if you code a new explore method you can let it access existing [[workspace objects]] without changing [[the workspace]] objects&#039; code.<br /> <br /> =Required Files=<br /> Each explore method requires 2 files, but will probably also have several &quot;update&quot; files that run in response to certain user actions and maybe other functions used by your uicontrol callbacks. <br /> <br /> &#039;&#039;&#039;Required files:&#039;&#039;&#039;<br /> * &#039;&#039;&#039;exploreproperties&lt;KEWORD&gt;&#039;&#039;&#039; - this is similar to the graphproperties file used by [[workspace objects]], although it contains fewer properties. Note that the properties stored in this file should all be static. You should not add your own properties to this file... those things should be stored in [[the workspace]] object&#039;s udata.explore field as described below. This file must contain the following properties:<br /> **properties.longname = the string that appears in the menu on the [[Specialize tab]]. This is the name of this method that the user will see.<br /> **properties.updates = a cell array of strings that lists the [[events and updates]] that trigger an update for this explore method. This list should contain all events that require an update for ANY workspace object, i.e. if the event causes some [[workspace objects]] to require an update, but others to not require an update, the event SHOULD appear in this list.<br /> *&#039;&#039;&#039;makeuicontrols&lt;KEYWORD&gt;&#039;&#039;&#039; - this file creates the uicontrols on the [[Specialize tab]] that appear when the user selects this explore method from the menu on the [[Specialize tab]]. You can also store the callbacks for these uicontrols in this file, or you can put them in their own files. The output of this function is a row vector (must be a row) of handles of all objects that were created. (Rave will append this to handles.tabobjects for you; you shouldn&#039;t do that in this function). For most explore methods, this function should create a button that toggles the method on and off (although this doesn&#039;t make sense for all methods and is by no means required).<br /> <br /> Everything else is optional, but you will probably have one or more &quot;update&quot; files with filenames using this naming convention:<br /> <br /> &#039;&#039;&#039;raveupdateexplore&lt;EXPLORE METHOD KEYWORD&gt;&lt;UPDATE TYPE&gt;&#039;&#039;&#039;<br /> <br /> Rave will automatically run such files in response to the [[Events and updates|event]] specified by &quot;update type&quot;.<br /> <br /> You may also have other files containing functions that are used by this explore method, for example callbacks for the uicontrols created by the makeuicontrols function. Rave DOES NOT automatically run these functions, they would only run in response to being called as a uicontrol callback you define, or called from one of your other functions. For example, many explore methods have an &quot;Enable&quot; button created in their makeuicontrols function, and they have a function named &quot;raveenable&lt;KEYWORD&gt;&quot;. Rave does not recognize this function name as being meaningful... it could be called anything. It is only referenced in the code for makeuincontrols as the callback function of the Enable button.<br /> <br /> <br /> <br /> <br /> <br /> =Overloading Explore Methods for Particular [[Workspace Objects]]=<br /> <br /> You can also &quot;overload&quot; the makeuicontrols function or any &quot;update&quot; function for a particular workspace object by including a file named:<br /> *&#039;&#039;&#039;makeuicontrols&lt;EXPLORE METHOD KEYWORD&gt;&lt;WORKSPACE OBJECT KEYWORD&gt;&#039;&#039;&#039;<br /> *&#039;&#039;&#039;raveupdateexplore&lt;EXPLORE METHOD KEYWORD&gt;&lt;WORKSPACE OBJECT KEYWORD&gt;&lt;UPDATE TYPE&gt;&#039;&#039;&#039;<br /> <br /> If you include any of these files, they will be used when you are working with the specified workspace object in place of the corresponding &quot;generic&quot; version of the function. You can use this syntax as an alternative to creating an entirely new explore method for a particular workspace object(s). This option may be preferable when the customization required for a particular workspace object is fairly minor. (Note: You are allowed to include only files named using this syntax and not include any generic versions of these functions. Just make sure that you include a function for every workspace object that uses this explore method, otherwise Matlab will give you a &quot;function not found&quot; error in any situation where Rave would normally have used the generic version of the function.)<br /> <br /> &#039;&#039;&#039;Note:&#039;&#039;&#039; You cannot include a specialized version of the exploreproperties function. If you need to specialize the properties for a particular workspace object, you must create an entire new explore method.<br /> <br /> For example, if your explore method&#039;s keyword is &quot;zoomzoom&quot; and it updates in response to the user changing the selection, and you need a special update behavior for histograms, you would include a function named:<br /> *raveupdateexplorezoomzoomhistogramisselected.m <br /> <br /> <br /> <br /> Rave will run this function when you have a histogram that is using the zoomzoom explore method and the user changes the selected data for the dataset/analysis used by the histogram.<br /> <br /> One potential issue is that these filenames can get very long. For example, raveupdateexplorezoomzoomhistogramisselected is 44 characters. The maximum allowable function name in matlab is 64 characters, so try not to use excessively long keywords.<br /> <br /> =How does Rave know which explore methods a workspace object is using?=<br /> It doesn&#039;t know unless you tell it. <br /> <br /> You indicate that an explore method is &quot;active&quot; by appending its keyword to the field udata.explore.method, which is a cell array of strings. You should do this somewhere in one of the callbacks/functions for the explore method that serves as an activation function. Rave uses this list to determine when to run the update functions.<br /> <br /> Similarly, you must take care to remove the method&#039;s keyword from udata.explorel.method when the method is turned off. (Use the setdiff function for this.)<br /> <br /> Rave uses this information to determine which &quot;update&quot; functions to run in response to events. If you do not append the explore method keyword to this list, Rave will not run your update functions.</div> Admin https://rave.gatech.edu/help/index.php?title=Random_variable Random variable 2013-09-19T19:50:49Z <p>Admin: Created page with &quot;coming soon&quot;</p> <hr /> <div>coming soon</div> Admin https://rave.gatech.edu/help/index.php?title=Main_table_java_stuff Main table java stuff 2013-09-19T19:43:41Z <p>Admin: /* Renderers */</p> <hr /> <div>The [[main table]] is based on the Oracle &quot;table sorter&quot; example file. This is in the RaveTableSorter.java file. <br /> <br /> =Renderers=<br /> <br /> <br /> *The column header renderer lives in RaveTableSorter.java as SortableHeaderRenderer (very bottom of the file). <br /> <br /> *Each &quot;type of column&quot; has its own renderer. Java assigns renderers based on the data type of the objects displayed in the table. These do not necessarily match up with the actual objects Rave is displaying in the table. Instead, RaveTableSorter overloads getColumnClass (line 509ish) to return particular classes depending on how Rave wants the data to render. For example, [[random variables]] appear as the jawa.awt.Rectangle class (selected specifically because this class is unlikely to ever appear in a real table).<br /> <br /> ;Currently the following types of columns exist:<br /> {| class=&quot;wikitable&quot;<br /> |-<br /> ! Rave Column Type !! Java Object Class !! Renderer Class (file)<br /> |-<br /> |Regular Numbers || java.lang.Double || RaveDefaultTableCellRenderer<br /> |-<br /> |Integers || java.lang.Integer || RaveIntegerTableCellRenderer<br /> |-<br /> |Strings || java.lang.String || RaveStringTableCellRenderer<br /> |-<br /> |Noise Variable || java.awt.Rectangle|| RaveNoiseTableCellRenderer<br /> |-<br /> |}<br /> <br /> Constant variables do not use a special renderer... they render with whatever their data type would be if they were not constant.<br /> <br /> *Renderers are set by ravedisplaymaintable.<br /> *Renderer colors may be changed using methods, for example the controls on the [[main table]] [[format tab]] do this.</div> Admin https://rave.gatech.edu/help/index.php?title=Workspace_context_menu Workspace context menu 2013-09-07T23:21:11Z <p>Matt: Created page with &quot;The workspace context menu is displayed by right clicking an empty place on the workspace.&quot;</p> <hr /> <div>[[The workspace]] context menu is displayed by right clicking an empty place on [[the workspace]].</div> Matt https://rave.gatech.edu/help/index.php?title=Analyses Analyses 2013-08-23T14:41:07Z <p>Admin: </p> <hr /> <div>Rave uses a system of &quot;Analyses&quot; to keep track of information related to your [[data sets]] that is not directly encoded in the values of the data itself. By default, your Rave session has a single analysis, i.e. one set of related information for each [[data set]]. You can create additional analyses in order to manage multiple sets of this information and easily switch between them. <br /> <br /> Analyses play an important role in interactive visualization. Each workspace object displays information related to a particular analysis. Consequently, visualizations that display the same Analysis will effectively be linked so that, for example, [[selecting data]] in one visualization causes all linked visualizations to update to show the new selection. By creating multiple Analyses and assigning different visualizations to each of them, you can create groups of visualizations that are linked within each group but not across groups.<br /> <br /> Each workspace object belongs to a single Analysis, which is listed at the top of it&#039;s [[View tab]]. <br /> <br /> You can create additional Analyses by clicking the Manage Analyses button on the [[Manage tab]]. This button also lets you access/modify some of the information that comprises an Analysis, although most of this information is not changed by using this button. Instead, the information is changed by interacting with [[workspace objects]] or performing other actions in Rave. <br /> <br /> The information that comprises an &quot;Analysis&quot; includes:<br /> *A list of which rows in each [[data set]] are currently selected<br /> *A list of which rows in each [[data set]] are currently visible<br /> *A Row color associated with each row in each [[data set]]<br /> *The upper and lower limiting values for each continuous [[independent variable]], and the list of allowable values for each discrete/string [[independent variable]] that are used to draw some continuous visualizations and to set limits for [[Optimization]] runs.<br /> *The filter control&#039;s upper and lower limits that define which rows of the [[data set]] are considered to be filtered.<br /> *The current value of each [[independent variable]] that is used to draw some continuous visualizations and that serves as the starting point for some [[Optimization]] runs. <br /> <br /> <br /> Consequently, the following actions will update all visualizations that belong to the same Analysis as the visualization that initiated the action (and that display the same [[Data set]] as the visualization that initiated the action, since each action is specific to a single [[data set]]):<br /> *[[Selecting data]] in a visualization or in the [[main table]]<br /> *Hiding the selected data by clicking the Hide Button on the [[Row tab]]. <br /> *Changing the row color of the selected data by clicking one of the Color Buttons on the [[Row tab]]. <br /> *Changing the filter values by using a Data filter or Discrete data filter workspace object.<br /> *Changing the current point values by using an [[Independent variable]] sliders workspace object or by interacting with a continuous visualization.<br /> (This list is not exhaustive.)<br /> <br /> <br /> <br /> For information on coding Rave plugins that correctly update to Analysis changes, see [[Events and updates]].</div> Admin https://rave.gatech.edu/help/index.php?title=Tabbed_controls Tabbed controls 2013-08-23T14:40:41Z <p>Admin: Created page with &quot;=Introduction=&quot;</p> <hr /> <div>=Introduction=</div> Admin https://rave.gatech.edu/help/index.php?title=Main_table Main table 2013-08-23T14:40:32Z <p>Admin: Created page with &quot;=Introduction=&quot;</p> <hr /> <div>=Introduction=</div> Admin https://rave.gatech.edu/help/index.php?title=Draw_tab Draw tab 2013-08-23T14:39:48Z <p>Admin: Created page with &quot;=Introduction=&quot;</p> <hr /> <div>=Introduction=</div> Admin https://rave.gatech.edu/help/index.php?title=Row_tab Row tab 2013-08-23T14:39:44Z <p>Admin: Created page with &quot;=Introduction=&quot;</p> <hr /> <div>=Introduction=</div> Admin https://rave.gatech.edu/help/index.php?title=Sample_tab Sample tab 2013-08-23T14:39:39Z <p>Admin: Created page with &quot;=Introduction=&quot;</p> <hr /> <div>=Introduction=</div> Admin https://rave.gatech.edu/help/index.php?title=Optimize_tab Optimize tab 2013-08-23T14:39:04Z <p>Matt: /* Save/Export Results Button */</p> <hr /> <div>=Introduction=<br /> The &#039;&#039;&#039;Optimize Tab&#039;&#039;&#039; is where you set up and run optimizations. <br /> <br /> The controls on the Optimize Tab are arranged from top to bottom in the order in which you should use the controls. The sections below also follow this order, so you can read this page from top to bottom to learn the process of setting up and running [[optimization]]. <br /> <br /> The Optimize Tab is shown below with its controls labeled. See the Appropriate section below for help on a particular control.<br /> <br /> [[File:Optimizetab_labeled.png]]<br /> <br /> =Optimize Tab Controls=<br /> <br /> ==Data Set Menu==<br /> Select the [[data set]] that contains the variables you wish to optimize.<br /> <br /> ==Analysis Menu==<br /> Select the Analysis that you wish to use for this [[optimization]] run. The analysis controls:<br /> *The feasible ranges/values of each [[independent variable]].<br /> <br /> ==Algorithm Menu==<br /> <br /> The Algorithm Menu lists all the [[optimization]] algorithms available in your Rave installation. Use this menu to select the algorithm that you wish to use.<br /> <br /> <br /> There are three categories of algorithms:<br /> *&#039;&#039;&#039;Single-Objective&#039;&#039;&#039; - These are standard [[optimization]] algorithms that optimize a single function (variable) in your [[data set]]. They usually return a single point -- the best point found by the [[optimization]] run.<br /> *&#039;&#039;&#039;Multi-Objective&#039;&#039;&#039; - These are algorithms used to find the Pareto frontier of a set of functions in your [[data set]]. They usually return multiple points that span the frontier. Multi-Objective [[optimization]] algorithms usually require many more function calls than Single-Objective algorithms. Some multi-objective algorithms call single-objective [[optimization]] algorithms in a loop to generate many sampled points along the frontier.<br /> *&#039;&#039;&#039;Ranking&#039;&#039;&#039; - These algorithms simply select the row or rows in your [[data set]] that best satisfy some criteria. These algorithms do not generate any new data and they work even if your [[data set]] does not contain any [[functional variables]].<br /> <br /> For information about specific [[optimization]] algorithms, see: [[List of optimization algorithms]]<br /> <br /> ==Objective Function Menu==<br /> Use the objective function menu to select the variable that you wish to optimize.<br /> <br /> *If you have selected a single-objective algorithm from the Algorithm menu, you must select a single variable from this list.<br /> *If you have selected a multi-objective algorithm from the Algorithm menu, you must select more than one variable from this list. Some algorithms may require a specific number of variables; you will be notified if you select an invalid number of variables.<br /> <br /> ==Edit Ranges Button==<br /> Click this button to make changes to the [[independent variables]]&#039; allowable ranges/values. This button opens the [[Allowable values GUI]], which can also be accessed from the [[Manage analyses GUI]]. Any changes you make here are permanent; they do NOT only affect your current [[optimization]] run(s).<br /> <br /> ==Edit Targets Button==<br /> Click this button to make changes to the variables&#039; target values. This button opens the [[Define targets GUI]], which can also be accessed from the [[Manage data sets GUI]]. Any changes you make here are permanent; they do NOT only affect your current [[optimization]] run(s).<br /> <br /> ==Side Constraints Checkbox==<br /> &#039;&#039;&#039;Note:&#039;&#039;&#039; Rave does not yet use this control.<br /> <br /> &quot;Side Constraints&quot; refer to the upper and lower limits on the [[independent variables]].<br /> <br /> Future versions of Rave will allow you to uncheck this box to run fully unconstrained [[optimization]]. <br /> <br /> Currently versions of Rave &#039;&#039;&#039;always&#039;&#039;&#039; enforce the upper and lower limit constraints.<br /> <br /> ==Constraint Menu==<br /> If you have created any constraints for this [[data set]], they will be listed in this menu. You must select (highlight) the constraints that you wish to enforce. &#039;&#039;&#039;Unhighlighted constraints will not be enforced.&#039;&#039;&#039; If you have no constraints or do not wish to enforce any constraints, just select the first (blank) row of this menu. <br /> <br /> See [[Contrain tab]] for information on creating constraints.<br /> <br /> ==Animate Checkbox==<br /> Check this box to animate the progress of your next [[optimization]] run. You must have a valid graph on [[the workspace]], which is displaying the appropriate [[data set]], in order for Rave to animate the optimizer.<br /> <br /> See [[Animating optimizer runs]] for more information.<br /> <br /> ==Animation Settings Button==<br /> Press this button to access options for how Rave animates [[optimization]] runs and whether/how it saves the animations. <br /> <br /> See [[Animating optimizer runs]] for more information.<br /> <br /> ==Save Settings Button==<br /> Clicking this button saves the current values in the Algorithm Settings Table to a text file. This lets you create a record of your [[optimization]] runs. <br /> <br /> You can enter comments in the first line of this file, after the name of the algorithm. For example, when you save a settings file for the fmincon algorithm, the top line of the file will read:<br /> <br /> &lt;pre&gt;<br /> %#fmincon &lt;name these settings here&gt;<br /> &lt;/pre&gt;<br /> <br /> You can enter a short description such as:<br /> &lt;pre&gt;<br /> %#fmincon For use with homework problem 5.4<br /> &lt;/pre&gt;<br /> <br /> &#039;&#039;&#039;Important:&#039;&#039;&#039; When you enter a description, do not change the name of the algorithm (except perhaps to the name of another algorithm that shares an identical set of settings) or remove the &quot;%#&quot; before its name.<br /> <br /> ===Using Saved Settings to Parameterize Subproblems===<br /> Some [[optimization]] algorithms call other [[optimization]] algorithms. The most common case is when a multi-objective algorithm calls a single-objective algorithm to solve [[optimization]] subproblems.<br /> <br /> In such cases, the settings for the main algorithm will appear in the Algorithm Settings Table, but the settings of the subproblem algorithm will not. Instead, there will be a row in the Algorithm Settings Table in which you can specify either:<br /> * The file name of a saved optimizer settings file, created by clicking the save button.<br /> * The string &quot;default&quot; to simply use the subproblem [[optimization]] algorithm&#039;s default settings. <br /> <br /> An example of this situation is shown below:<br /> [[File:Optimization_subproblem_settings.png]]<br /> <br /> The first row of the settings table contains the name of the subproblem algorithm, in this case &quot;fmincon&quot;. The second row of the table contains the string &quot;default&quot;, indicating that the default parameters of fmincon should be used (i.e. the settings that appear in the table when you select fmincon from the Algorithm Menu). Alternately, a file name could be entered in the second row, for example &quot;mysettings.txt&quot; to use the fmincon settings stored in that file.<br /> <br /> &#039;&#039;&#039;Note:&#039;&#039;&#039; As always, the file name you specify must be on your [[MATLAB search path]] so that MATLAB can access it.<br /> <br /> The general procedure for setting up and running an algorithm that use subproblems is:<br /> #Select the algorithm you wish to use to solve the subproblems from the Algorithms menu. You do not need to specify the Objectives or Constraints; skip straight to the Algorithm Settings Table.<br /> #Make the desired changes in the Algorithm Settings Table.<br /> #Click the Save Settings button. Give the file a unique name and put it on your [[MATLAB search path]]. <br /> #Select the main algorithm (the one that calls the algorithm specified in Step 1) from the Algorithm Menu<br /> #Use the remaining controls on the Optimize Tab to set up your problem<br /> #Locate the row in the Algorithm Settings Table that indicates the name of the subproblem algorithm to use (If you are unsure, see the algorithm&#039;s help page.)<br /> #Enter the name of the algorithm you chose in Step 1 in this row.<br /> #Locate the row in the Algorithm Settings Table that indicates the name of the [[optimization]] settings file to use (If you are unsure, see the algorithm&#039;s help page.)<br /> #Enter the name of the file you saved in Step 3 in this row.<br /> #Click the Start Button to run your optimizer.<br /> <br /> ==Load Settings Button==<br /> <br /> The load settings button lets you load the algorithm settings stored in a file that you created by clicking the Save Settings Button. Use this button to quickly update the Algorithms Table to a previously saved state.<br /> <br /> &#039;&#039;&#039;Note:&#039;&#039;&#039; You can only load a saved [[optimization]] settings file that matches the algorithm currently selected in the Algorithms menu. If you attempt to load settings for another algorithm, you will see an error message.<br /> <br /> ==Algorithm Settings Table==<br /> The algorithm settings table is used to specify all parameters that affect the optimizer aside from the objective function and constraints. The settings that are displayed in this table change depending on which algorithm is selected in the Algorithm Menu. For help on a particular [[optimization]] algorithm&#039;s settings, see the help page for that algorithm. <br /> <br /> ===Linking settings to problem parameters===<br /> Settings that require numerical values can be specified by directly entering the desired number into the settings table, or by entering a function of one or more of the following variables:<br /> <br /> *nVars = the number of [[independent variables]] (Rave determines this automatically based on the function that calculates the variable selected to serve as the objective<br /> *numberofequalities = the number of equality constraints<br /> *numberofinequalities = the number of inequality constraints (excluding upper/lower bounds on the [[independent variables]]<br /> *numberofbounds = the number of bound constraints (since in Rave each variable has an upper and a lower bound, this is always even)<br /> <br /> The variable names must appear exactly as shown here (case sensitive).<br /> <br /> ===Default settings===<br /> The default settings for each algorithm are stored in a file named &quot;raveopt&lt;keyword&gt;settings.m,&quot; which you can find in that optimizer&#039;s directory under rave\optimizers\.<br /> <br /> You can change the default settings by modifying these files. If you later update Rave, make sure you back up these files and copy them to your new install directory!<br /> <br /> &#039;&#039;&#039;Note:&#039;&#039;&#039; It is possible that the list of settings for an algorithm may change in newer versions of Rave. If you modify these files and wish to copy them to a new version of Rave, you should not simply replace the files in the new version with your modified copies, but check the new version to see if any new settings have appeared or old settings have been removed, and merge the two files as appropriate.<br /> <br /> ==Start/Stop Button==<br /> When you have filled out all of the controls on the Optimize tab and you are ready to start your optimizer, click the Start button. <br /> <br /> While your optimizer is running, the start button will turn into a &quot;Stop&quot; of &quot;Pause&quot; button and will turn red. <br /> *The choice between Stop and Pause depends solely on the algorithm being run. Most optimizers do not support pausing. <br /> *Clicking the Stop button will abort your [[optimization]] run. f you stop an optimizer, any progress that has been made will be lost. No results will be saved.<br /> *Clicking the Pause button will temporarily halt your [[optimization]] run. After an [[optimization]] has been paused, you can resume the run by clicking &quot;Continue&quot; or start a new [[optimization]] by clicking &quot;Start&quot;<br /> <br /> If an error occurs during your [[optimization]] run, it will appear in on your MATLAB command line. Check the error messages to see what went wrong. The Stop button will turn back into a Start button.<br /> <br /> ==Continue Button==<br /> Click the Continue Button to resume an [[optimization]] that has been paused (by clicking the Stop button). <br /> <br /> &#039;&#039;&#039;Note:&#039;&#039;&#039; Most optimizers do not support pausing/resuming.<br /> <br /> ==Batch Button==<br /> &#039;&#039;&#039;Note:&#039;&#039;&#039; Rave does not yet use this control.<br /> <br /> Future versions of Rave will allow you to set up multiple [[optimization]] runs by clicking the Batch button. You will then be able to run all the batched runs in sequence without having to click Start for each run.<br /> <br /> ==Save/Export Results Button==<br /> Click this button to save the results of any previous [[optimization]] run that successfully completed during this Rave session. <br /> <br /> You are given four options for saving the results:<br /> *Create as a new [[data set]] - this option is not intended for use with single-objective optimizers, which usually only return a single point. This option is for multi-objective optimizers, which usually return many points.<br /> *Export to file - save to a text file. The text files are saved in the standard Rave file format and can be loaded into Rave as a new [[data set]] if desired.<br /> *Append to current [[data set]] - this option adds the optimizers results to your [[data set]]. They will appear at the bottom of the data table. You can specify a color for the rows; you may wish to choose a color you are not currently using so that you can easily identify these rows in your data table and visualizations. <br /> *Replace Current [[data set]] - this option replaces your current [[data set]] with the results of the selected [[optimization]] run. All existing rows in your [[data set]] will be deleted. &#039;&#039;&#039;This cannot be undone&#039;&#039;&#039; so use it carefully.<br /> <br /> <br /> &#039;&#039;&#039;Note:&#039;&#039;&#039; The most recent [[optimization]] run that successfully completed will be initially selected when you click the Save/Export Results Button. Use the menu at the top of the GUI to save older results.<br /> <br /> =If Something Breaks...=<br /> Unlike the other tabs, Rave saves the current state of the optimize tab when you switch to another tab, and restores it when you switch back to the optimize tab. This means that if something on the Optimize Tab breaks, simply switching tabs will not restore it to working order. The most common cause for this is if you are debugging an optimizer and you quit the optimizer from MATLAB&#039;s debug mode. This will cause the Stop button to not turn back into a Start button.<br /> <br /> If this happens, you can completely reset the Optimize Tab by doing either of the following:<br /> *Click the &quot;Rave&quot; Logo that appears below the tabs. This will completely reset the tabs and will display the [[Manage tab]].<br /> *Enter full screen mode by clicking the Fullscreen mode button or by right clicking an empty place on [[the workspace]] and selecting &quot;Full Screen Mode&quot; from the [[Workspace context menu|context menu]].</div> Admin https://rave.gatech.edu/help/index.php?title=Constrain_tab Constrain tab 2013-08-23T14:38:59Z <p>Admin: Created page with &quot;=Introduction=&quot;</p> <hr /> <div>=Introduction=</div> Admin https://rave.gatech.edu/help/index.php?title=Model_tab Model tab 2013-08-23T14:38:54Z <p>Admin: Created page with &quot;=Introduction=&quot;</p> <hr /> <div>=Introduction=</div> Admin https://rave.gatech.edu/help/index.php?title=Export_tab Export tab 2013-08-23T14:38:50Z <p>Admin: Created page with &quot;=Introduction=&quot;</p> <hr /> <div>=Introduction=</div> Admin https://rave.gatech.edu/help/index.php?title=Specialize_tab Specialize tab 2013-08-23T14:38:44Z <p>Admin: Created page with &quot;=Introduction=&quot;</p> <hr /> <div>=Introduction=</div> Admin https://rave.gatech.edu/help/index.php?title=Manage_tab Manage tab 2013-08-23T14:38:38Z <p>Admin: Created page with &quot;=Introduction=&quot;</p> <hr /> <div>=Introduction=</div> Admin https://rave.gatech.edu/help/index.php?title=Preferences Preferences 2013-08-23T14:27:07Z <p>Admin: </p> <hr /> <div>&#039;&#039;Not to be confused with: [[Rave preferences]]&#039;&#039;<br /> <br /> &#039;&#039;&#039;Preferences&#039;&#039;&#039; are a set of scalar values associated with each [[data set]] such that:<br /> *Each variable in the [[data set]] has an associated preference value.<br /> *The preference values of all variables in the [[data set]] sum to 1.<br /> <br /> Note that preferences are a property of [[data sets]], not a property of [[analyses]]. <br /> <br /> The fact that the preferences sum to 1 makes them act like &quot;weights&quot; in determining how influential each variable is in contributing to some function. <br /> <br /> The reason we call these values &quot;preferences&quot; is that they are most often used when forming multi-attribute utility or objective functions for use in [[optimization]] or other decision making activities. These functions are typically formulated so that larger weight values indicate higher decision maker preference for relative optimality in the corresponding variable.<br /> <br /> Rave does not directly use the preference values for any built-in function. They are only used if you create a [[functional variable]] that is a function of the preferences by either:<br /> *Loading a user-supplied function that uses the [[three-variable-input format]], in which case the 2nd input will be the preferences.<br /> *Creating an objective function by clicking the &quot;Create New Objective Fcn&quot; button on the Model tab</div> Admin https://rave.gatech.edu/help/index.php?title=Vectorized_functions Vectorized functions 2013-08-23T13:19:59Z <p>Admin: </p> <hr /> <div>A &#039;&#039;&#039;vectorized function&#039;&#039;&#039; is a basic MATLAB coding concept. It refers to a function that operates on each element of an array independently, rather than treating the array as a matrix and using matrix math. <br /> <br /> All user-supplied function in Rave must be vectorized. When Rave needs to evaluate multiple points using your functions, it sends all of those points to your function as an array in which each row of the array represents one point to be evaluated. <br /> <br /> Vectorizing a simple function in MATLAB usually entails replacing:<br /> * * with .* <br /> * / with ./ <br /> * ^ with .^<br /> <br /> The . in front of these operators tells MATLAB to apply the operator to each element of the array instead of treating the array like a matrix and using matrix math operations. Note that the + and - operators do not require a . since matrix addition and subtraction already operates on each element individually. Similarly, most other built-in MATLAB functions do not require special vectorization. Examples include exp(), log(), and all the trig functions.<br /> <br /> For example, the function y = sin(x1)*x2^2 would be coded in MATLAB as y = sin(x1).*x2.^2<br /> <br /> <br /> See the [http://www.mathworks.com/help/matlab/matlab_prog/vectorization.html MATLAB Documentation] for more details.</div> Admin https://rave.gatech.edu/help/index.php?title=Rave%27s_user_interface Rave's user interface 2013-08-22T21:53:54Z <p>Admin: </p> <hr /> <div>This page describes the major elements of Rave&#039;s user interface. Follow the links below for details about the individual parts<br /> <br /> <br /> When you open Rave, the user interface will be displayed as shown below:<br /> <br /> <br /> [[File:Rave_main_interface.png|800px|center]]</div> Admin https://rave.gatech.edu/help/index.php?title=What_is_Rave%3F What is Rave? 2013-08-22T21:45:39Z <p>Admin: </p> <hr /> <div>Rave is:<br /> *...a MATLAB toolbox: You need MATLAB to use Rave.<br /> *...a [[Data visualization]] program: Rave offers a huge array of interactive visualizations<br /> *...an Information dashboard creation platform: Rave uses a novel workspace system that lets you create arrangements of visualizations, text, controls, and images to create complex information dashboards.<br /> *...an [[Optimization]] program: Rave gives you easy access to MATLAB&#039;s Optimization and Global Optimization toolbox functions, and to other optimizers <br /> *...a [[Surrogate modeling]] program: Rave includes many regression and interpolation techniques to make functions from your data. You can use these functions in Rave (for example to run optimizers) or export them for use in other programs.<br /> *...mouse-driven: Most users can use Rave without writing a single line of code or knowing how to code in MATLAB.<br /> *...user-extensible: Rave uses a simple plug-in directory structure that lets you write your own features and implement them in Rave just by dropping them in the right folder.<br /> *... open source: You can download a GPL version of Rave from the main Rave website [http://www.rave.gatech.edu/ Rave Website]</div> Admin https://rave.gatech.edu/help/index.php?title=Surrogate_modeling Surrogate modeling 2013-08-22T21:31:20Z <p>Admin: </p> <hr /> <div>&#039;&#039;&#039;Surrogate modeling&#039;&#039;&#039; refers to the process of creating a function from data that approximates the relation underlying the data. For example if you have a data set with two variables, Height and Weight, you could create a surrogate model Weight = f(Height) so that given you data for Height, you can generate corresponding values of Weight. <br /> <br /> Surrogate modeling is used for:<br /> *Enabling capabilities that depend on [[functional variables]], such as optimization and continuous visualization<br /> *Speeding up calculations: surrogate models are generally fast, relatively simple mathematical expressions that can be evaluated almost instantly.<br /> *And more...<br /> <br /> Rave can create many types of surrogate models via an easy-to-use interface. Please note that although Rave tries to make the modeling process as user-friendly as possible, significant expertise is required to create good surrogate models.</div> Admin https://rave.gatech.edu/help/index.php?title=User-Supplied_Plain_Text_Function_Formats User-Supplied Plain Text Function Formats 2013-08-22T21:02:11Z <p>Admin: </p> <hr /> <div>Rave can load simple &quot;plain text&quot; functions that meet the following criteria: <br /> *The function calculates a single output variable. It may have any number of input variables. <br /> *The function involves only basic math operators: + - * / ^ abs(), sin(), cos(), log() etc...<br /> *The function can theoretically be represented as a single statement (line) of MATLAB code. I.e. it cannot involve &quot;if&quot; statements, &quot;for&quot; loops etc. <br /> *The names of all input variables are legal matlab variable names. This generally means they must begin with a letter and cannot contain symbols (other than _) or spaces.<br /> <br /> <br /> Rave can load plain text functions either from a .txt file, or you can type/paste them into a dialog box. In either case, the content of the function should be only the right hand side of the equals sign. For example, if you have the function y = x1 + x2, you would use only &quot;x1+x2&quot; as the content of the function. You will supply the name of the output variable when you load the function into Rave. <br /> <br /> *Tip: If you are loading a function stored in a .txt file, Rave will suggest the file name as the default variable name. So you can save time by using the [[functional variable]]&#039;s names as your file names. <br /> <br /> *Developer tip: The function that Rave uses to convert plain text files to .m files is named ravetxt2m.m<br /> <br /> &#039;&#039;&#039;Examples:&#039;&#039;&#039;<br /> A simple function may look like:<br /> &lt;pre&gt;<br /> x1 + cos(x2) * abs(x1/x2) - exp(x) + x^2<br /> &lt;/pre&gt;<br /> <br /> A more complicated function could be:<br /> &lt;pre&gt;<br /> exp(11.6703935+Thrust*-0.0000326600101+FPR*-1.41803275+LPCPR*0.00415193051+OPR*-0.0029531291+T4max*-0.000195797154+Vratio*-1.92648403+Loading*0.360255868+Payload*0.0000284530331+Range2*0.000163181712+Thrust*Thrust*0.000000000606111453+FPR*Thrust*-0.00000438394509+FPR*FPR.*0.508561336+LPCPR*Thrust*-0.000000658367223+LPCPR*FPR*-0.0092802591+LPCPR*LPCPR*0.0160130278+OPR*Thrust*0.00000000140482047+OPR*FPR.*0.000770681078+OPR*LPCPR*0.0000346999344+OPR*OPR*0.0000202874834+T4max*Thrust*-0.00000000212251231+T4max*FPR*-0.0000692665696+T4max*LPCPR*0.000036486005+T4max*OPR*-0.00000109566933+T4max*T4max*0.0000000544769111+Vratio*Thrust*-0.000000980437888+Vratio*FPR*-0.0132480486+Vratio*LPCPR*-0.0825760778+Vratio*OPR.*0.00185308179+Vratio*T4max*-0.0000103482963+Vratio*Vratio*0.570256604+Loading*Thrust*0.000000941943684+Loading*FPR*-0.0350705609+Loading*LPCPR*-0.0595044256+Loading*OPR*0.00249845651+Loading*T4max*-0.0000518362764+Loading*Vratio*-0.00857311658+Loading*Loading*-0.0755155667+Payload*Thrust*-0.000000000179474291+Payload*FPR*-0.00000118332246+Payload*LPCPR*-0.000000114138247+Payload*OPR*-0.00000000578049718+Payload*T4max*0.000000000171659028+Payload*Vratio*0.000000279097022+Payload*Loading*-0.000000166412116+Payload*Payload*-0.0000000000599337645+Range2*Thrust*-0.000000000837792856+Range2*FPR*0.0000218442552+Range2*LPCPR*-0.000000383165627+Range2*OPR*-0.000000264719975+Range2*T4max*-0.0000000167869449+Range2*Vratio*0.0000190871404+Range2*Loading*0.000000714906327+Range2*Payload*-0.000000000182036483+Range2*Range2*-0.000000000321241661)<br /> &lt;/pre&gt;<br /> <br /> <br /> ==Function files created by Rave==<br /> Whenever you load a plain text function, Rave creates a .m function that it calls in place of the function you supplied. Rave does not use the original .txt file you supplied after the initial creation of this function. Any subsequent changes you make to the .txt file will have no effect in Rave. If you need to change the function you will have to directly modify the .m function.<br /> <br /> Rave places the .m file it creates in your [[default directory]]. It&#039;s ok to move it to a different directory as long as you keep it on your [[MATLAB search path]].</div> Admin https://rave.gatech.edu/help/index.php?title=Will_my_data_and_functions_work_with_Rave%3F Will my data and functions work with Rave? 2013-08-22T20:41:43Z <p>Admin: /* Data Set File Formats */</p> <hr /> <div>=Data Set File Formats=<br /> Rave supports &quot;flat file&quot; type data sets, i.e. data that can be represented as a table in which each column contains a variable and each row contains a set of observations of each variable (i.e. a &quot;data point&quot;). The data may be numerical, text, or a mix of both (although all entries within a column must be the same type).<br /> <br /> Rave can import data from Excel files (.xls or .xlsx), tab-delimited text files, or comma-delimited text files (.txt or .csv).<br /> <br /> For more details about how the data files must be formatted, see: [[Data Set File Formats]]<br /> <br /> =Data Set Size Limits=<br /> The size of data you can work with in Rave is limited by your computer&#039;s RAM. As a rule of thumb, the size of the data you are working with should be less than 1/8th of the amount of RAM you have. This is because Rave stores multiple copies of your data (a working copy and a backup copy), as well as some metadata whose size scales with the size of your data. <br /> <br /> When working with large data sets (e.g. more than a few thousand data points), you may want to avoid certain visualizations whose complexity scales with the size of your data set. You may notice a significant slow-down when using such visualizations with large data sets. If you simply want to create a visualization and export it to a file, the slowdown might be OK, but if you are creating an interactive dashboard, it will probably be unacceptable. <br /> <br /> Things to avoid when working with large data sets include:<br /> *Scatter plot matrices<br /> *Scatter plots that use the &quot;Color points by...&quot; (except color by Row Colors) or &quot;Size points by...&quot; options. (These options require Rave to use more complicated plot objects that are significantly slower)<br /> *Parallel coordinates plots (Although you may use the &quot;Do not draw more than X lines&quot; option on the [[View Tab]] to avoid a slow-down)<br /> <br /> <br /> =Function Requirements=<br /> Rave can work with just about any data-generating MATLAB function, although it requires a particular format for the inputs/ouputs of the function and the function definition line. It also requires that the function be able to handle evaluating multiple data points in a batch. <br /> <br /> This may require you to write a new &quot;wrapper&quot; function that acts as an interface between Rave and your existing MATLAB functions. For more details, see [[User-Supplied Matlab Function Formats]]</div> Admin https://rave.gatech.edu/help/index.php?title=Rave_Preferences_for_Developers Rave Preferences for Developers 2013-08-22T20:22:40Z <p>Admin: Created page with &quot; =Preference Names and Values= This section lists each preference and explains what it does and the required format for its values. ==Preferences that control the appearance ...&quot;</p> <hr /> <div><br /> =Preference Names and Values=<br /> This section lists each preference and explains what it does and the required format for its values.<br /> <br /> ==Preferences that control the appearance of Rave&#039;s user interface==<br /> {| border=1 cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; align=&quot;center&quot;<br /> |-<br /> ! style=&quot;background:#efefef;&quot; width=&quot;150&quot;| Name<br /> ! style=&quot;background:#efefef;&quot; width=&quot;300&quot;| Format<br /> ! style=&quot;background:#efefef;&quot; width=&quot;400&quot;| Description<br /> |-<br /> |colors.tabbg<br /> |a 1x3 [[colorspec]] vector<br /> |The color of the background of the tabs, and other objects that share this color.<br /> |-<br /> |colors.tabfg<br /> |a 1x3 [[colorspec]] vector<br /> |The color of the border lines that draw the tabs and other objects that share this color.<br /> |-<br /> |colors.wsbg<br /> |a 1x3 [[colorspec]] vector<br /> |The background color of the workspace.<br /> |-<br /> |colors.wsgrid<br /> |a 1x3 [[colorspec]] vector<br /> |The color of the major gridlines in the workspace. The minor gridlines are the average of this color and colors.wsbg.<br /> |-<br /> |colors.frame<br /> |a 1x3 [[colorspec]] vector<br /> |The color of the background area of the Rave window (i.e. the border area around the workspace) and the background color of all popup windows.<br /> |-<br /> |colors.title<br /> |a 1x3 [[colorspec]] vector<br /> |The color of &quot;title&quot; text objects. For example the <br /> |-<br /> |colors.text<br /> |a 1x3 [[colorspec]] vector<br /> |The color of the text that shows the names of the first row of tabs. This color is also used for many other objects whose color cannot be specified directly.<br /> |-<br /> |colors.texttint<br /> |a 1x3 [[colorspec]] vector<br /> |The color of the text that shows the names of the second row of tabs. This will probably be removed in the future. <br /> |-<br /> |colors.buttonbg<br /> |a 1x3 [[colorspec]] vector<br /> |The background color of buttons. Many buttons just use the default color. This is mostly used for java buttons and other times when it seems important to explicitly specify a color.<br /> |-<br /> |colors.togglebuttonbg<br /> |a 1x3 [[colorspec]] vector<br /> |The background color of togglebuttons. This is only here to force toggle buttons to render differently on Windows7.<br /> |-<br /> |colors.constraint<br /> |a 1x3 [[colorspec]] vector<br /> |The default color for newly created constraints.<br /> |-<br /> |colors.textbox<br /> |a 1x3 [[colorspec]] vector<br /> |Currently unused.<br /> |}<br /> <br /> ==Preferences that control the appearance of graphs==<br /> {| border=1 cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; align=&quot;center&quot;<br /> |-<br /> ! style=&quot;background:#efefef;&quot; width=&quot;150&quot;| Name<br /> ! style=&quot;background:#efefef;&quot; width=&quot;300&quot;| Format<br /> ! style=&quot;background:#efefef;&quot; width=&quot;400&quot;| Description<br /> |-<br /> |colors.axes{1},colors.axes{2},colors.axes{3},colors.axes{4}<br /> |a 5x3 maxtix of 5 [[colorspec]] vectors.<br /> |These 4 preferences control the graph axes color schemes that are applied by the four &quot;background color&quot; buttons at the top of most graph&#039;s format tabs. Each of the four preferences is a 5-row matrix of five colorspecs. The rows of this matrix are, in order: the graph background color (this color is shown on the corresponding buttons on the Format tab), the graph foreground color (used to draw the graph axes and tick marks), the minor grid line color, the major grid line color, the text color (used to draw tick mark labels and axis labels). <br /> |-<br /> |colors.selectionhighlight<br /> |a 1x3 [[colorspec]] vector<br /> |The color used to indicate selected data. Different types of graphs use this color in different ways. <br /> |-<br /> |colors.filtered<br /> |a 1x3 [[colorspec]] vector<br /> |The color used to indicate selected data. Different types of graphs use this color in different ways. <br /> |-<br /> |fonts.graph<br /> |a string (font name).<br /> |The font used to draw graph axis labels and tick mark values. (Note, some graphs may ignore this and use a default font.)<br /> |-<br /> |fonts.graphsize<br /> |an integer <br /> |The font size used to draw graph axis labels.<br /> |-<br /> |fonts.graphtitle<br /> |a string (font name).<br /> |The font used to draw graph titles. (Note, some graphs may ignore this and use a default font.)<br /> |-<br /> |fonts.graphtitlesize<br /> |an integer <br /> |The font size used to draw graph titles.<br /> |-<br /> |fonts.textbox<br /> |a string (font name).<br /> |The default font used when creating a new &quot;Text Box&quot; annotation (or similar annotations).<br /> |-<br /> |fonts.ticksize<br /> |an integer <br /> |The font size used to draw graph axis tick mark labels. (Note, some dense graphs may use a smaller font size.)<br /> |}</div> Admin https://rave.gatech.edu/help/index.php?title=Format_Tab Format Tab 2013-08-22T20:12:48Z <p>Admin: Admin moved page Format Tab to Format tab over redirect</p> <hr /> <div>The &#039;&#039;&#039;Format Tab&#039;&#039;&#039; is one of the three tabs that determine the appearance of workspace objects. The other two are the [[View Tab]] and the [[Specialize Tab]].<br /> <br /> Generally the Format Tab contains controls that control the styling of workspace objects, including colors, line styles and sizes, and axis ranges and labels. Conversely, the [[View Tab]] contains controls that determine which variables are displayed by a workspace object and the [[Specialize Tab]] contains advanced controls to create more complicated graphics.<br /> <br /> Each workspace object has a different format tab. For details on a specific object&#039;s Format Tab, follow the link below:<br /> <br /> ===Discrete Visualizations===<br /> *[[Format Tab: Line Plot]]<br /> *[[Format Tab: Scatter Plot]]<br /> *[[Format Tab: 3D Scatter Plot]]<br /> *[[Format Tab: Scatter Plot Matrix]]<br /> *[[Format Tab: Density Plot]]<br /> *[[Format Tab: Parallel Coordinates Plot]]<br /> *[[Format Tab: Histogram]]<br /> *[[Format Tab: 3D Histogram]]<br /> *[[Format Tab: Cumulative Distribution Plot]]<br /> *[[Format Tab: Heat Map]]<br /> *[[Format Tab: Bar Chart (Categorical Stacking)]]<br /> *[[Format Tab: Area Chart (Categorical Stacking)]]<br /> *[[Format Tab: Bubble Plot (Categorical Grouping)]]<br /> *[[Format Tab: Box Plot]]<br /> *[[Format Tab: Ternary Scatter Plot]]<br /> <br /> ===Continuous Visualizations===<br /> *[[Format Tab: Prediction Profiler]]<br /> *[[Format Tab: Two-Axis Carpet Plot]]<br /> *[[Format Tab: Contour Plot]]<br /> *[[Format Tab: Plane Profiler]]<br /> *[[Format Tab: Contour Plot Matrix]]<br /> *[[Format Tab: Surface Profiler]]<br /> <br /> ===Special Workspace Objects===<br /> *[[Format Tab: Bitmap Image]]<br /> *[[Format Tab: Blank Axes]]<br /> *[[Format Tab: Blank Axes 3D]]<br /> *[[Format Tab: Overlay Scatter Plot]]<br /> *[[Format Tab: Map]]<br /> *[[Format Tab: Route Map]]<br /> *[[Format Tab: Self Organizing Map]]<br /> *[[Format Tab: Function Dependency Network]]<br /> *[[Format Tab: Model Fit Report]]<br /> *[[Format Tab: WATE Engine Cross Section]]<br /> <br /> ===Tables===<br /> *[[Format Tab: Data Table]]<br /> *[[Format Tab: Single Point Table]]<br /> *[[Format Tab: Statistics Table]]<br /> <br /> ===Annotations===<br /> *[[Format Tab: Background Frame]]<br /> *[[Format Tab: Tabbed Frame]]<br /> *[[Format Tab: Text Box]]<br /> *[[Format Tab: Calculated Value]]<br /> *[[Format Tab: Scrollable Text Box]]<br /> *[[Format Tab: Colorbar]]<br /> *[[Format Tab: Java HTML Pane]]<br /> *[[Format Tab: Java M-Code Editor]]<br /> <br /> ===Controls===<br /> *[[Format Tab: Independent Variable Sliders]]<br /> *[[Format Tab: Preference Sliders]]<br /> *[[Format Tab: Filters]]<br /> *[[Format Tab: Discrete Filter (Listbox)]]<br /> *[[Format Tab: Axis Selection Controls]]<br /> *[[Format Tab: Dataset/Analysis Selection]]<br /> *[[Format Tab: Row Listbox]]<br /> *[[Format Tab: Row State Controls]]<br /> *[[Format Tab: Rotate 3D Button]]<br /> *[[Format Tab: Add Current Point Button]]<br /> *[[Format Tab: Custom Button]]<br /> *[[Format Tab: Custom Sliders]]<br /> *[[Format Tab: Custom Popup Menu]]<br /> *[[Format Tab: Custom Listbox]]</div> Admin https://rave.gatech.edu/help/index.php?title=View_Tab View Tab 2013-08-22T20:04:30Z <p>Admin: Admin moved page View Tab to View tab</p> <hr /> <div>The &#039;&#039;&#039;View Tab&#039;&#039;&#039; is one of the three tabs that determine the appearance of workspace objects. The other two are the [[Format Tab]] and the [[Specialize Tab]].<br /> <br /> Generally the View Tab contains controls that control &#039;&#039;which variables&#039;&#039; are displayed by the workspace object, and which visual elements (e.g. axes) of the workspace object are mapped to which variables. Conversely, the [[Format Tab]] contains controls that determine how the visual elements are formatted (colors, sizes, etc.) and the [[Specialize Tab]] contains advanced controls to create more complicated graphics.<br /> <br /> Each workspace object has a different view tab. For details on a specific object&#039;s View Tab, follow the link below:<br /> <br /> ===Discrete Visualizations===<br /> *[[View Tab: Line Plot]]<br /> *[[View Tab: Scatter Plot]]<br /> *[[View Tab: 3D Scatter Plot]]<br /> *[[View Tab: Scatter Plot Matrix]]<br /> *[[View Tab: Density Plot]]<br /> *[[View Tab: Parallel Coordinates Plot]]<br /> *[[View Tab: Histogram]]<br /> *[[View Tab: 3D Histogram]]<br /> *[[View Tab: Cumulative Distribution Plot]]<br /> *[[View Tab: Heat Map]]<br /> *[[View Tab: Bar Chart (Categorical Stacking)]]<br /> *[[View Tab: Area Chart (Categorical Stacking)]]<br /> *[[View Tab: Bubble Plot (Categorical Grouping)]]<br /> *[[View Tab: Box Plot]]<br /> *[[View Tab: Ternary Scatter Plot]]<br /> <br /> ===Continuous Visualizations===<br /> *[[View Tab: Prediction Profiler]]<br /> *[[View Tab: Two-Axis Carpet Plot]]<br /> *[[View Tab: Contour Plot]]<br /> *[[View Tab: Plane Profiler]]<br /> *[[View Tab: Contour Plot Matrix]]<br /> *[[View Tab: Surface Profiler]]<br /> <br /> ===Special Workspace Objects===<br /> *[[View Tab: Bitmap Image]]<br /> *[[View Tab: Blank Axes]]<br /> *[[View Tab: Blank Axes 3D]]<br /> *[[View Tab: Overlay Scatter Plot]]<br /> *[[View Tab: Map]]<br /> *[[View Tab: Route Map]]<br /> *[[View Tab: Self Organizing Map]]<br /> *[[View Tab: Function Dependency Network]]<br /> *[[View Tab: Model Fit Report]]<br /> *[[View Tab: WATE Engine Cross Section]]<br /> <br /> ===Tables===<br /> *[[View Tab: Data Table]]<br /> *[[View Tab: Single Point Table]]<br /> *[[View Tab: Statistics Table]]<br /> <br /> ===Annotations===<br /> *[[View Tab: Background Frame]]<br /> *[[View Tab: Tabbed Frame]]<br /> *[[View Tab: Text Box]]<br /> *[[View Tab: Calculated Value]]<br /> *[[View Tab: Scrollable Text Box]]<br /> *[[View Tab: Colorbar]]<br /> *[[View Tab: Java HTML Pane]]<br /> *[[View Tab: Java M-Code Editor]]<br /> <br /> ===Controls===<br /> *[[View Tab: Independent Variable Sliders]]<br /> *[[View Tab: Preference Sliders]]<br /> *[[View Tab: Filters]]<br /> *[[View Tab: Discrete Filter (Listbox)]]<br /> *[[View Tab: Axis Selection Controls]]<br /> *[[View Tab: Dataset/Analysis Selection]]<br /> *[[View Tab: Row Listbox]]<br /> *[[View Tab: Row State Controls]]<br /> *[[View Tab: Rotate 3D Button]]<br /> *[[View Tab: Add Current Point Button]]<br /> *[[View Tab: Custom Button]]<br /> *[[View Tab: Custom Sliders]]<br /> *[[View Tab: Custom Popup Menu]]<br /> *[[View Tab: Custom Listbox]]</div> Admin https://rave.gatech.edu/help/index.php?title=Independent_variables Independent variables 2013-08-22T19:57:06Z <p>Admin: Created page with &quot;&#039;&#039;&#039;Independent Variables&#039;&#039;&#039; are one of the three variable types used by Rave. The other two are: *Functional variables *Random variables Independent variables are...&quot;</p> <hr /> <div>&#039;&#039;&#039;Independent Variables&#039;&#039;&#039; are one of the three [[variable types]] used by Rave. The other two are:<br /> *[[Functional variables]]<br /> *[[Random variables]]<br /> <br /> Independent variables are not calculated by functions. Rave can use the values of independent variables stored in the [[data table]] to draw graphs, but since Rave has no way of calculating new values of independent variables, they cannot be used in [[continuous graphs]] or in most [[optimizers]]. When you load a new data set from a file, each column in the file becomes a new independent variable. After loading a data set, you can modify the values of independent variables by editing the [[main table]]. <br /> <br /> You can also create new independent variables within Rave by:<br /> *Using the &quot;Make Flag Column&quot; buttons on the model tab. These buttons add new columns of independent variables to the data set whose values are related to the [[row state]] at the time that the variable was created<br /> *Loading a function as a &quot;[[static function]]&quot;. In this case Rave evaluates the function once to populate the data table, but does not link the new variables to the function.</div> Admin https://rave.gatech.edu/help/index.php?title=Variable_types Variable types 2013-08-22T19:52:10Z <p>Admin: </p> <hr /> <div>Rave distinguishes three types of variables:<br /> *[[Independent variables]]<br /> *[[Functional variables]]<br /> *[[Random Variables]]<br /> <br /> Not to be confused with [[Data types]] (continuous, discrete, etc...)</div> Admin https://rave.gatech.edu/help/index.php?title=Functional_variables Functional variables 2013-08-22T19:39:24Z <p>Admin: </p> <hr /> <div>A &#039;&#039;&#039;functional variable&#039;&#039;&#039; is a variable whose value is calculated by a function. It is one of the three [[variable types]] in Rave, the others being:<br /> *[[Independent variable]]<br /> *[[Random variable]]<br /> <br /> Function variables are always created after an initial data set (of independent variables) has been loaded. They are created by performing one of the following two actions:<br /> *Loading or creating a function from the [[Model Tab]]<br /> *Loading metadata stored in a .rvm file<br /> <br /> <br /> ==Data Types==<br /> Currently Rave treats all functional variables as being continuous. Consequently, functional variables are limited to numerical values. You cannot load functions whose outputs are strings. This may change in the future. <br /> <br /> ==Variable Ranges==<br /> Unlike independent variables, for which you can specify allowable values/ranges using the [[Manage Analyses GUI]], you cannot control the ranges of functional variables. Instead, Rave automatically manages the ranges of functional variables to encompass the min/max limits that Rave has ever observed for each variable. <br /> <br /> Rave initially sets the min/max value of the functional variable according to the min/max values that appear in the data set. If in the process of some data generating process, for example interacting with a continuous visualization or running an optimizer, Rave evaluates the function and finds a new value that is outside the current min/max range, it will update the range to reflect the newly found limits.</div> Admin https://rave.gatech.edu/help/index.php?title=User-Supplied_Matlab_Function_Formats User-Supplied Matlab Function Formats 2013-08-22T19:33:37Z <p>Admin: /* Single-Input Format */</p> <hr /> <div>This page describes the required formatting for user-supplied MATLAB functions whose purpose is to calculate [[functional variables]].<br /> <br /> Rave can run any MATLAB function as long as it obeys some not-very-constraining rules about the function definition line, (i.e. the first line of the function), and some slightly-more-constraining rules about the input and output formats and [[vectorization]]. The good news is that these rules ensure that it is always possible to write a &quot;wrapper&quot; function that can act as an interface between Rave and your existing data-generating MATLAB functions. In other words, Rave only constraints the functional interface, not what happens inside the body of the function. You can even call external programs, for example using the MATLAB &quot;system&quot; command, and you can read/write files if necessary. <br /> <br /> <br /> =Function Interface Requirements=<br /> The constraints Rave places on the function definition line relate to how you specify the inputs to the function. This is because Rave needs to be able to parse your function and determine what data to send it and how to send the data. <br /> <br /> You have three options for what you use as the function definition line. Regardless of which option you use, the [[functional variable]] names must appear as outputs of the function. Rave will use the names of the function&#039;s outputs as the names of the corresponding [[functional variables]]. The name of the function itself (i.e. the .m file name) does not matter as long as it is a legal matlab function name (i.e. must begin with a letter and cannot contain spaces or symbols other than _ ).<br /> <br /> &#039;&#039;&#039;NOTE: The function declaration must be the FIRST line of the file. You may not place comments or empty space above the function declaration.&#039;&#039;&#039;<br /> <br /> ===Variable Names as Inputs===<br /> You can use the input variable&#039;s names as the inputs to the function. An obvious constraint in this case is that the variable names must be legal MATLAB variable names. For example, the following function definition would work:<br /> <br /> &lt;syntaxhighlight&gt;<br /> function [y,z]=myFunction(x1,x2)<br /> &lt;/syntaxhighlight&gt;<br /> <br /> This function calculates two [[functional variables]] (y, z) as functions of two existing variables, x1,x2. Rave does not restrict the order in which you list the input variables; list them in whatever order works for you. You could also use:<br /> &lt;syntaxhighlight&gt;<br /> function [y,z]=myFunction(x2,x1)<br /> &lt;/syntaxhighlight&gt;<br /> <br /> The order of the outputs matters insofar as any time Rave lists the variable names they will appear in the same order in which they appeared in the function definition.<br /> <br /> ===Single-Input Format===<br /> <br /> An alternative option is to specify a single input to the function. When you import the function, Rave will ask which variables to use as inputs to the function. The actual input data that Rave sends the function will then be an array in which each column represents one variable in your [[data set]]. <br /> <br /> The benefit of this format is that it places no restrictions on your variable names; they do not need to be legal MATLAB variable names. However it can be more difficult to implement this type of function because you need to ensure that your code correctly deals the columns of the input array to variables. <br /> <br /> &#039;&#039;&#039;Example:&#039;&#039;&#039;<br /> <br /> Consider the [[data set]]:<br /> &lt;pre&gt;<br /> Case Number,Thrust,Payload,Range1,Range2,FPR,LPCPR,OPR,T4max,Vratio,Loading,HPT Stages<br /> 1,28000,39000,250,2000,1.5,2.2,30,3125,1.8,0.2,1<br /> 2,28000,39000,250,2000,1.5,2.2,30,3125,1.8,0.3,1<br /> 3,28000,39000,250,2000,1.5,2.2,30,3125,1.87,0.2,1<br /> ... ... ... ... ... ... ... ... ... ... ... ... ...<br /> &lt;/pre&gt;<br /> <br /> And suppose we have a function that calculates five output variables<br /> &lt;pre&gt; Fan_Diameter Max_Range TOFL TSFC Engine_Weight&lt;/pre&gt;<br /> as functions of six of the [[independent variables]]:<br /> &lt;pre&gt;FPR, LPCPR, OPR, T4max, Vratio, Loading&lt;/pre&gt;<br /> <br /> The function definition using the &#039;&#039;Variable-Names-as-Inputs&#039;&#039; syntax would look like:<br /> &lt;syntaxhighlight&gt;<br /> function [Fan_Diameter Max_Range TOFL TSFC Engine_Weight]=myFunction(FPR,LPCPR,OPR,T4max,Vratio,Loading)<br /> &lt;/syntaxhighlight&gt;<br /> <br /> <br /> The function definition using the &#039;&#039;Single-Input&#039;&#039; syntax would look like:<br /> &lt;syntaxhighlight&gt;<br /> function [Fan_Diameter Max_Range TOFL TSFC Engine_Weight]=myFunction(inputs)<br /> &lt;/syntaxhighlight&gt;<br /> where we have chosen to name the array of input data &quot;inputs&quot;. (You can use any name you like, as long as it is not also the name of a variable in the [[data set]]. For example we could not have called it &quot;FPR&quot; in this example.)<br /> <br /> Later in the function, you would need to turn the columns of &#039;&#039;inputs&#039;&#039; into individual variables. The variables appear in the columns that match their order in the [[data set]]. Referring to the [[data set]] excerpt above, we see that FPR is the 6th variable (after Case Number,Thrust,Payload,Range1,Range2) thus the values of FPR will be in the 6th column of the &#039;&#039;inputs&#039;&#039; array.<br /> <br /> &lt;syntaxhighlight&gt;<br /> FPR=inputs(:,6);<br /> LPCPR=inputs(:,7);<br /> OPR=inputs(:,8);<br /> T4max=inputs(:,9);<br /> Vratio=inputs(:,10);<br /> Loading=inputs(:,11);<br /> &lt;/syntaxhighlight&gt;<br /> <br /> ===Three-Input Format===<br /> <br /> =Function Attributes=<br /> &#039;&#039;&#039;Note: This section concerns a future version of Rave&#039;&#039;&#039;<br /> Future versions of Rave will allow more flexibility in the user supplied .m file functions. In order for you to communicate certain attributes of your functions to Rave, you can list these attributes in a comment on the second line of your m-file (immediately following the function declaration at the top.) When Rave reads in your .m file, it will scan the second line for keywords that it recognizes as attribute names and will then apply those attributes when evaluating your function.<br /> <br /> *The function attributes must be on the SECOND LINE of the file, immediately following the function declaration line with no other lines of comments or empty space in between. All attributes must appear in this second line; do not wrap to additional lines. <br /> *Note that Rave only looks for attributes when it initially reads in the function. This means that if you change the attributes while using Rave, your changes will not take effect until you restart Rave. (Or save and reload your [[Rave Project]] file.)<br /> *Attributes are only relevant to .m function files. Imported .txt functions or functions you create within Rave never have attributes. <br /> <br /> &#039;&#039;&#039;Future Versions&#039;&#039;&#039; of Rave will recognize the following attributes (case insensitive but must otherwise must appear exactly as below including the #)<br /> * #OnePointAtATime - Indicates to Rave that your function is not vectorized (i.e. that it can only evaluate one point at a time) and that Rave must call it in a loop in order to evaluate multiple points.<br /> * #OneToMany - Indicates to Rave that this is a &quot;probabilistic&quot; function that returns a vector of points for each input point. In this case, the output arrays must be CELL ARRAYS, where the ith cell contains the vector of results that correspond to the ith row of the input vectors. The input arrays must still be regular numerical arrays -- only the outputs are cells.<br /> <br /> =Vectorization Requirements=<br /> When Rave needs to evaluate your functions at multiple data points, it DOES NOT call your function multiple times in a loop. Instead, it creates input arrays with &#039;&#039;n&#039;&#039; rows, where &#039;&#039;n&#039;&#039; is the number of points to be evaluated. This is done because &quot;good practice&quot; in MATLAB is to avoid using for loops and instead call functions in this &quot;vectorized&quot; way.<br /> <br /> The outputs returned by your function must also be vectors with &#039;&#039;n&#039;&#039; rows. For best speed, it is recommended that you code your user-supplied Rave functions to avoid using loops, and this is usually possible if your function is written in &quot;pure matlab&quot;. However in some cases your function will require a for loop, for example if it calls an external analysis code that is only capable of evaluating a single function at a time. In such cases, you must include the loop inside the body of your user-supplied .m function.</div> Admin https://rave.gatech.edu/help/index.php?title=Introduction_to_Optimization Introduction to Optimization 2013-08-21T14:47:36Z <p>Admin: /* Run the optimizer */</p> <hr /> <div>=Introduction=<br /> Rave offers an easy-to use interface for running optimizers from the [[Optimization Toolbox]] and the [[Global Optimization Toolbox]], as well as some custom optimizers that do not require additional toolboxes.<br /> <br /> This page presents an overview to the optimization process, with an emphasis on the steps you need to take before and after setting up and running optimizations. <br /> <br /> For more detailed information about setting up and running optimizations, see [[Optimize tab]].<br /> <br /> For more detailed information about the available optimization algorithms, see [[List of optimization algorithms]].<br /> <br /> =Using Optimization=<br /> The steps for running optimization in Rave are:<br /> #Load a [[data set]] <br /> #Load/create [[Functional variables|functional variable(s)]]<br /> #Create [[constraints]] (if applicable)<br /> #Set up optimization runs using the [[Optimize tab]]<br /> #Run the optimizer<br /> #Collect results<br /> <br /> These steps are described below. Follow the links for more detailed descriptions.<br /> <br /> ===Load a Data Set===<br /> Although optimization does not directly rely on the data contained in a [[data set]], Rave still requires you to load a [[data set]] as the first step. This is because Rave uses the [[data set]] to determine what your [[independent variables]] are and what their ranges are. Consequently, the [[data set]] you load must contain, at a minimum, one column for each [[independent variable]], with the first row of the [[data set]] containing the names of these variables, and two rows of numerical data such that the values in these two rows contain the minimum and maximum feasible values for each [[independent variable]].<br /> <br /> For example, consider the optimization problem:<br /> &lt;pre&gt; min y = x1^2 + x2^2<br /> s.t. -1 &lt; x1 &lt; 1<br /> -2 &lt; x2 &lt; 3<br /> x1+x2 &gt; 1<br /> &lt;/pre&gt;<br /> <br /> In this case there are two [[independent variables]], x1 and x2, and one function variable, y. The data file that you load in Rave should thus look like:<br /> <br /> &lt;pre&gt;<br /> x1 x2<br /> -1 -2<br /> 1 3<br /> &lt;/pre&gt;<br /> <br /> This is the bare-minimum allowable [[data set]]: it contains all the [[independent variables]] and two rows of data that span the allowable ranges of the [[independent variables]]. Note that the order of the data rows does not matter, nor is it requires that the minimum/maximum values all appear in the same row. You could also include additional rows of data for use in other Rave functions, but they would not affect optimization.<br /> <br /> *&#039;&#039;&#039;Note:&#039;&#039;&#039; Rave currently &#039;&#039;&#039;always&#039;&#039;&#039; enforces upper and lower limits for all [[independent variables]] during optimization. You cannot yet run optimizers that do not have constraints of the form a &lt; x &lt; b for every [[independent variable]], x. Future versions of Rave will allow completely unconstrained optimization, however even in these future cases you will still need to load a two-line [[data set]] to start.<br /> <br /> <br /> &#039;&#039;&#039;Also important:&#039;&#039;&#039; Note that the [[data set]] we load does not contain a column for y. Since y is a [[functional variable]] it must be added later, after the [[data set]] is loaded. Similarly the [[data set]] does not contain information about the constraint x1+x1 &lt; 1. This will also be added later. Both of these topics are described below.<br /> <br /> ===Load/Create Functions===<br /> Next you must load or create functions for each [[functional variable]] that appears in the optimization problem. Continuing the example above, we have only one function variable: y = x1^2 + x2^2. If we had a more complicated objective function that involved multiple intermediate variables, you could either create a function variable in Rave that calculates each intermediate variable, and then another function of those intermediate variables that calculates the overall objective, y, or you could simply create a function that directly calculates y with the intermediate variables appearing within the source code of that function but not explicitly appearing in Rave. <br /> <br /> For this example, we will create a MATLAB function to calculate y using the &quot;variable-names-as-inputs&quot; format. This function looks like:<br /> <br /> &lt;syntaxhighlight&gt;<br /> function y = myObjective(x1,x2)<br /> y=x1.^2+x2.^2;<br /> &lt;/syntaxhighlight&gt;<br /> <br /> Note that the function is [[Vectorized functions|vectorized]], meaning that we use .^ as the exponent operator instead of just ^ . This enables MATLAB to evaluate the function at multiple points without using a for loop. See [[vectorized functions]] for more info.<br /> <br /> Next we must load this function in Rave to create the [[functional variable]] y.<br /> <br /> See the page [[Working with Functions]] for more information about importing a function into Rave.<br /> <br /> ===Create Constraints (If Applicable)===<br /> If your optimization problem involves constraints other than those of the form a &lt; x &lt; b for each [[independent variable]], you must create these constraints on the [[Constrain tab]]. <br /> <br /> For the example above, we would need to create the constraint:<br /> &lt;pre&gt;<br /> x1+x2 &gt; 1 <br /> &lt;/pre&gt;<br /> since it is the only constraint that is not of the form a &lt; x &lt; b.<br /> <br /> Note that Rave currently ALWAYS enforces constraints of the form a &lt; x &lt; b for your [[independent variables]]. You can change the values of a and b in these constraints from the [[Manage analyses GUI]]. See [[variable ranges and allowable values]] for more information.<br /> <br /> <br /> See the [[Constrain tab]] page for more information.<br /> <br /> ===Set Up Visualizations (Optional)===<br /> If you would like to watch the progress of your optimizer, you need to create a suitable visualization. Visualization works best when your optimizer only involves two or three variables.<br /> <br /> Currently the following visualizations support optimizer animations:<br /> *Contour Plot<br /> *Scatter Plot<br /> *3D Scatter Plot<br /> *Line Plot<br /> <br /> See the page: [[Visualizing optimization runs]] for more information<br /> <br /> ===Set up optimization runs using the Optimize tab===<br /> <br /> Optimization runs are set up and executed from the [[Optimize tab]]. See that page for information on how to set up and execute optimizations.<br /> <br /> ===Run the optimizer===<br /> After setting up optimization runs on the [[Optimize tab]], the runs are executed by clicking the &quot;Start&quot; button at the bottom of the tab. See the [[Optimize tab]] page for more information.<br /> <br /> ===Collect results===</div> Admin https://rave.gatech.edu/help/index.php?title=Working_with_Random_Variables Working with Random Variables 2013-08-14T20:25:38Z <p>Admin: /* Surrogate Modeling with Random Variables */</p> <hr /> <div>=Introduction=<br /> [[Random variables]] are useful for modeling uncertainty in a system. Unlike regular variable, which are defined by (deterministic) values, [[random variables]] are defined by distributions. Rave supports the use of [[random variables]] through various sampling (Monte Carlo) based approaches. The main ways to use [[random variables]] in Rave are:<br /> <br /> *Declare a variable to be random, in which case it is treated as being random for all purposes in Rave.<br /> *Sample data according to random distributions. This lets you generate a [[data set]] that involves randomness, but Rave otherwise treats this data as if it were a deterministic sampling. <br /> <br /> In either case, Rave samples the [[random variables]] according to distributions that you define in Rave. The process of defining distributions is described below.<br /> <br /> &#039;&#039;&#039;Note:&#039;&#039;&#039; only [[independent variables]] can be treated as random. Function variables become &quot;statistic variables&quot; when one or more of their input variables are random. See below for details.<br /> <br /> =Defining and Modifying Distributions=<br /> Each [[independent variable]] in your [[data set]] has a list of associated distributions. (This list exists even if you are not treating these variables as [[random variables]].) You can add, remove, and modify the distributions in this list by either:<br /> *Clicking the &quot;Edit Variable Distributions&quot; button on the [[Sample tab]]. <br /> *In the Manage data GUI, select the &quot;Variables&quot; category, then click the &quot;Edit Variable Distributions&quot; button.<br /> (Clicking either button has the exact same effect. It doesn&#039;t matter which you click.)<br /> <br /> Although you can define as many distributions as you want, at any given time only one distribution will be &quot;active&quot; for each variable. We let you define multiple distributions so that you can easily conduct trade studies on the parameterization of your [[random variables]].<br /> <br /> In order to turn an [[independent variable]] into a [[random variable]], you must:<br /> *Right click its column header in the main data table and select &quot;Treat as a [[Random Variable]]&quot;.<br /> The selected [[independent variable]] will then become a [[random variable]], distributed according to its active distribution. You can change the active distribution by clicking one of the &quot;Edit Variable Distributions&quot; buttons described above. <br /> <br /> &#039;&#039;&#039;Important:&#039;&#039;&#039; Because sampling from [[random variables]] is potentially time consuming, Rave does not automatically sample from the variables and evaluate any functional (statistic) variables when you change which variables are random or which distributions are active. You will notice that as soon as you change a variable to be random, the columns for functions of that variable will turn red in the [[main table]]. This indicates that the data is invalid (because it is still reflecting the values calculated for the non-random values of the [[independent variables]]). After you set up all your [[random variables]] to their desired distributions, click the &quot;Reevaluate Functions&quot; button on the Manage data GUI to recalculate the values of your function variables using the new (random) values of the input variables. You will see that the corresponding columns of your data table turn black again, indicating that the values are now valid.<br /> <br /> =Working with Random Variables=<br /> ==Method 1: Declaring a Variable to be Random==<br /> To declare a variable to be random, right click its column header in the [[main table]] and select &quot;&#039;&#039;&#039;Treat as a [[Random Variable]]&#039;&#039;&#039;&quot;. <br /> <br /> To indicate that a particular variable is random, its name in the [[main table]] column header turns purple, and its values in the table are replaced with the word &quot;Random&quot;.<br /> <br /> The reasoning behind this is that [[random variables]] have no single value for each row in your [[data set]], rather they have a &#039;&#039;distribution&#039;&#039; of values. Any variables that are functions of one or more [[random variables]] are also defined by distributions. In order to represent these function variables as still having a single value, Rave automatically converts any variables that are functions of [[random variables]] into &#039;&#039;statistic variables&#039;&#039;. You will notice that the column headers of any such functions are changed to reflect this. (See below for more information on statistic variables.)<br /> <br /> For example, suppose you have three variables, x,y, and z, such that z=f(x,y). If you change y into a [[random variable]], you will see that the column header for z changes to something like &quot;mean(z)&quot; to indicate that the values displayed in the table are no longer the values of z itself, rather they are the mean value of z calculated over the distribution of y.<br /> <br /> To calculate the statistics, Rave uses a sampling-based approach. This works as follows: suppose again that we have z=f(x,y), where y is random and x is deterministic. If Rave needs to calculate z for x=5 and y=N(0,1), (i.e. y is normally distributed with mean 0 and standard deviation 1), Rave samples many random values of y such that these sampled values are approximately distributed as N(0,1). Supposing 5000 such samples were used, Rave then evaluates z 5000 times, each time using x=5 and y=(each of the 5000 randomly sampled values in turn). This yields 5000 values of z, which Rave then aggregates back into a single value using the specified statistic, for example mean(z) would return the average of these 5000 values.<br /> <br /> There are four parameters that you can change to customize Rave&#039;s approach to calculating functions of [[random variables]]:<br /> *The distribution of each [[random variable]]<br /> *The number of samples used to calculate statistic (5000 in the example above)<br /> *The method by which the random values are sampled from the distributions<br /> *The statistic used to aggregate the values of z back into a single value.<br /> <br /> &#039;&#039;&#039;Very important:&#039;&#039;&#039; In the example above, it took 5000 evaluations of the function f to calculate the mean of z for the &#039;&#039;single case&#039;&#039; x=5. In reality, most activities in Rave require many samples. For example, creating a Contour plot that uses a 10x10 grid of points would require 100 deterministic cases, so for 5000 random samples it would require 500,000 function evaluations! Working with [[random variables]] is very computationally intensive, and consequently it is only feasible when your functions are extremely fast (think surrogate models or other algebraic functions).<br /> <br /> ==Method 2: Sampling Data from Distributions==<br /> <br /> <br /> <br /> =Statistic Variables: Functions of Random Variables=<br /> <br /> When you are working with [[random variables]] in Rave, it is presumed that all functions you load are deterministic. In other words, for each unique input vector, x, the function always returns the same value of y. E.g. your functions never use the rand() function or otherwise introduce randomness inside the function; randomness only comes from randomly varying the inputs to the function. (Note: This is not to say that you can&#039;t use the rand() function. See the page on [[non-deterministic user-supplied functions]] for details.<br /> <br /> <br /> The way Rave handles functions of [[Random variables]] is a little bit complicated. In &quot;real life,&quot; a function of a [[random variable]] is also a [[random variable]]. However, there is no easy way for Rave to store and represent the full distribution of a [[random variable]]. Instead, when you have functions of [[random variables]], Rave represents their values to you as scalar-valued statistics. These statistics are calculated by sampling from the distribution many times (number is determined by the &quot;[[Random Variable]] Sampling Size&quot; preference) and then aggregating the resulting sampled values into a single number, which is the statistic. <br /> <br /> You can choose which statistic is used to represent each [[functional variable]]. The statistics you can choose from are:<br /> *Mean<br /> *Median<br /> *Standard Deviation<br /> *Variance<br /> *Quantile(p), i.e. the value b of y such that P(y &lt; b) = p (A generalization of the median to values other than p=0.5)<br /> *P(y &lt; b)<br /> *P(y is feasible), i.e. the fraction of the sampled set of y values that satisfy whatever constraints you have defined (you can select a particular subset of the constraints to be used to calculate this probability).<br /> <br /> Rave treats functions of [[random variables]] as statistics whenever it needs to calculate a single value of the function variable for each row of your data table. This is the situation whenever Rave is doing something that is not specifically designed to handle [[random variables]]. The most obvious example is that when you are viewing the table, you will see the statistic values listed. Similarly, when you are viewing most visualizations you will see the statistic values used. <br /> <br /> Note, however, that Rave always calculates the statistics by some sort of Monte Carlo sampling (you can change how this sampling works by modifying the [[preferences]]). Consequently, Rave has access to the full sampled population and &#039;&#039;is capable of&#039;&#039; displaying and storing it. However, in general Rave does not store it; it is used to calculate the statistic and then is discarded. But the important point is that you can code special [[workspace objects]], explore methods, or other plugins that use the entire distribution.<br /> <br /> Future versions of Rave will have more such objects that display the entire distribution to you.<br /> <br /> <br /> ===Statistic Variable Names===<br /> When a [[functional variable]] has [[random variables]] as inputs, Rave will usually display its name to you in a form that includes the statistic. For example, if you loaded a function that calculates a variable called &quot;Weight&quot;, and some of its inputs are [[random variables]], you will see Weight listed in rave as &quot;mean(Weight)&quot; (or with another statistic, such as &quot;variance(Weight)&quot;. <br /> <br /> For all important purposes, however, Rave still considers the variable to be named &quot;Weight&quot;. If you load a new function that includes Weight as one of its inputs, you would call that input &quot;Weight&quot;, not &quot;mean(Weight)&quot;. See also the section below about functions of statistic variables. <br /> <br /> Note that you cannot directly use the statistics themselves as inputs to functions. For example, you cannot specify &quot;mean(Weight)&quot; as an input, even if you wanted to. Instead, you would specify Weight as the input, and then calculate the mean within the body of your function.<br /> <br /> <br /> <br /> ===Functions of Statistic Variables (Functions of functions of random variables)===<br /> When you have a function of functions of [[random variables]], for example: f(g(x)), where x includes some [[random variables]], Rave will generally represent both f and g to you as statistics. However, &#039;&#039;&#039;(this is important)&#039;&#039;&#039; Rave does not calculate f using the statistic value of g(x). f is also calculated as a distribution using the actual sampled values of g(x). In other words, if we let s represent some statistic function that takes in a distribution and returns a scalar value, the statistic value of f(g(x)) is calculated as s(f(g(x))), NOT as s(f(s(g(x)))). In other other words, if you change the statistic used to represent g(x), for example you change from &quot;mean&quot; to &quot;median&quot;, the values of f(g(x)) will not change because they are based on the actual sampled values of g(x), not the values of the statistic that Rave uses to represent g(x) to you. <br /> <br /> ===Multiple statistics of the same function===<br /> Each variable in your [[data set]] has a single associated statistic. In order to have multiple statistics of the same variable, you simply duplicate the variable so that you now have two (or more) columns in your [[data set]] that represent that variable. You can then assign a different statistic to each one. Rave will use the same sampled population to calculate each statistic. For example, if you have a function variable &quot;weight,&quot; which is a function of [[random variables]], and you want to calculate two statistics, mean and standard deviation, you first duplicate &quot;weight&quot; so that you now have two columns named &quot;weight,&quot; then set the statistic for the first to &quot;mean&quot; and the statistic for the second to &quot;weight&quot;. When Rave needs to evaluate these statistics, it will sample the function that calculates weight &#039;&#039;n&#039;&#039; times, where &#039;&#039;n&#039;&#039; is your Random Sampling Sample Size preference value, and it will then calculate both statistics from this sample. It will &#039;&#039;&#039;not&#039;&#039;&#039; sample two separate &#039;&#039;n&#039;&#039; populations and use the first to calculate weight and the second to calculate standard deviation.<br /> <br /> =Surrogate Modeling with Random Variables=<br /> You cannot make a surrogate that is a function of a [[random variable]], but you can make surrogate models of statistic variables or that are functions of statistic variables. <br /> <br /> If you wanted to make a surrogate model of a function whose inputs are [[random variables]], you would have to use the Random sampling button on the Sampling tab to make a new [[data set]] that is sampled according to your desired distributions, but that treats all variables as being non-random. You can then use this [[data set]] to create surrogate models and import them back into your original [[data set]] (if desired). <br /> <br /> [[Random variables]] will not appear in the variable menus of the [[Create new model GUI]].</div> Admin