====== How To ====== ===== Design process ===== * [[Design Considerations for a Simulator]] * [[Framework Information Settings]] * [[Creating a Calibration Diagram]] * [[Sim Binding Links|Sim Binding Links in 4.7.0+]] * [[Breaking out a mini model for focused work]] ===== TOOL coding ===== Also see the /*[[TOOL Reference Manual]] (full) and the*/ [[tutorials:TOOL Quick Reference Card]]. ==== General ==== * [[howtos:toolcoding:good_practices|Good TOOL Coding Practices]] * [[howtos:toolcoding:performance_tuning|Tune your TOOL code for memory and/or runtime constraints]] * [[howtos:toolcoding:Unit of Measure Conversions]] * [[howtos:toolcoding:TOOL Shell Scripts]] FIXME /*- Marcus*/ * [[howtos:toolcoding:Conditional logic for code running in simulation vs calibration]] * [[howtos:toolcoding:Informant naming conventions]] ==== View Writing ==== * [[howtos:toolcoding:user_interaction|Interacting with the user in views]] * [[howtos:toolcoding:General View Writing]] * [[howtos:toolcoding:View Naming Conventions]] * [[howtos:toolcoding:Common History and Background Checks]] * [[howtos:toolcoding:Multiple Scenario Display Views]] * [[howtos:toolcoding:Feedback views]] * [[https://www.whatiftechnologies.com/doku.php?id=how_tos#feedback_tracking_methods|Feedback Tracking Methods]] * Data directories * **primaryData** - all your source data for your history and calibration usually lives in: /models//primaryData (note NOT under the version number) * **referenceData** - all the various data that will inform your projections & comparisons in the simulation time /models//referenceData (note NOT under the version number) * **viewData** - data informing views including: past user interaction, custom aggregation mappings, parameters for reference scenario: /models///viewData === Re-usable code - Templates & Subroutines === * [[howtos:toolcoding:RachetingInView|Ratcheting - Save project specific view interactions for next run]] * [[howtos:toolcoding:projectNamesDefn|Defining a project for the project list]] * [[howtos:toolcoding:viewInformants|view specific informants]] * [[howtos:toolcoding:getProjectExportPath|Getting project specific paths]] * [[howtos:toolcoding:subRoutinePackage|Sub-routine package - setup and loading]] * [[howtos:toolcoding:exogSwitch|Exogenous Variable Switch]] * Templates * [[howtos:toolcoding:levelORIntenstiveVarProjection|level or intenstive variable projection]] * [[howtos:toolcoding:shareVarProjection|share variable projection]] * Subroutines * [[howtos:toolcoding:satProjForReference|saturated projection for reference]] * [[howtos:toolcoding:stepwiseChangeQuietOption|stepwise change]] ==== Recipes ==== * [[howtos:toolcoding:Boolean Masks]] * [[howtos:toolcoding:Bitwise operations]] * [[howtos:toolcoding:Projecting A Share into Simulation Time|Projecting a Variable into Simulation Time]] * [[howtos:toolcoding:Ranges]] * [[howtos:toolcoding:Using maps]] * [[howtos:toolcoding:Many to one mapping with non summation aggregation rule|Many to one mapping with non-summation aggregation rule]] * [[howtos:implementAgingWithMap:Apply aging using a map]] * [[howtos:toolcoding:Constrained summations]] * [[howtos:toolcoding:Sub-shares using categories]] * [[howtos:toolcoding:Using a relative propensity]] * [[howtos:toolcoding:Scaling/normalizing to a control total]] * [[howtos:toolcoding:Table lookup using classify and dimtran]] FIXME ===== Model Loading ===== /* * [[howtos:model_loading|Model Loading: From Documenter to SAMM]] */ * [[howtos:model_loading_4.7.0|Model Loading version 4.7.0: From Documenter to SAMM]] * [[howtos:update_code_diagram|Updating model code and diagrams without a full reload]] * [[howtos:evaluate_a_history|Run a calibration to produce a history]] * [[howtos:typical_initView|Prepare initialization views]] * [[howtos:typicalErrors|Typical errors and solutions]] ===== Working with data ===== The articles in this section discuss how to interact with data files external to the model. * [[howtos:workwithdata:Overview of reading data]] FIXME * [[howtos:workwithdata:Data Format vs File Format]] ==== Preparing files ==== In general the data files should not be touched! Try hard to take the data file from it's source and manipulate it in the model or in a view to fit the objects you need to file. If, however, you want to prepare an empty file to then get others to fill in: * [[howtos:workwithdata:Prepare empty file from documenter]] ==== Reading data ==== * [[howtos:workwithdata:A Simple Import View]] * [[howtos:Reading data into arrays]] * [[howtos:Importing Informant Definitions - Sets and Categories]] FIXME /*- shona*/ * [[howtos:workwithdata:createSetsFromDataFile| Use create to make set informants from data file and use them for a test load]] * [[howtos:workwithdata:createReadDataFiles| Use create pick apart complicated data files]] * [[howtos:workwithdata:Importing and tabulating record-based datasets]] * [[howtos:workwithdata:Geographic data]]FIXME /*- shona*/ * [[howtos:workwithdata:Example - Import from Beyond 20/20 (.ivt) format | Reading Beyond 20/20 (.ivt) data]]FIXME /*- Marcus*/ * [[howtos:workwithdata:Creating Import Templates]] * [[howtos:workwithdata:Importing/Exporting time slices using a for loop]] === Examples === * [[howtos:workwithdata:Import Quick Reference| Import and create examples]] - example ''import()'' and ''create()'' calls ==== Writing data ==== * [[howtos:workwithdata:Export Views]] FIXME * [[howtos:workwithdata:Export to .csv]] * [[howtos:workwithdata:Export to "template" format]] === Examples === * [[howtos:workwithdata:Export Quick Reference| Export examples]] ===== Calibration ===== * [[howtos:calibration:Projecting Into History]] ===== Feedback/Tracking Methods ===== Root finding methods. See http://en.wikipedia.org/wiki/Root-finding_algorithm Brute force: * [[howtos:feedback:Tracking Method - Deviation ratio multiplier]] * [[howtos:feedback:Tracking Method - Deviation ratio addition]] More specialized/sophisticated: * [[howtos:feedback:Tracking Method - Minimizing Root Mean Squared Difference with 5 point bracketing]] - bi-section variant * [[howtos:feedback:Tracking Method - Minimizing Root Mean Squared Difference with 5 point bracketing]] - yet to be implemented ===== Interacting with Model ===== ===== Displaying Data ===== * [[howtos:displayingdata:Displaying data with geomap]] ===== Debugging ===== * [[howtos:workwithdata:Running Data through Documenter]] * [[howtos:debugging:Model Debugging in SAMM]] ===== Administration ===== ==== Using a hosted model ==== * [[howtos:admin:Connect to model hosted at whatIf?]] ==== Administering your own server ==== Setup: * [[howtos:admin:Server Systems Requirements]] ✅ Guru'd * [[howtos:admin:Setup server from scratch]] ✅ Guru'd * [[howtos:admin:Setup User and Model Accounts|User and Model Accounts Setup]] ✅ Guru'd * [[howtos:admin:Model Family Directory Structure]] ✅ Guru'd Common tasks: * [[howtos:admin:Move Scenarios from old server to new]] ✅ Guru'd * [[howtos:admin:Make an account specific tmp directory]] ✅ Guru'd * [[howtos:admin:Install and Administer a Virtual Machine (VM)|Virtual Machine (VM)- Install and Administer]] ❌ Left behind Trouble shooting: * [[howtos:admin:Model Base Checking]] ✅ Guru'd * [[howtos:admin:Model Base Patching]] ✅ Guru'd * [[howtos:admin:Freeing a ReadOnly documentor file]] ✅ Guru'd ==== Other ==== * [[wiki:whatif style guide|whatIf Documentation Style Guide]]