@frontlinesystems/rason-mcp-server 2026.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +35 -0
- package/README.md +282 -0
- package/examples/EXAMPLES_REFERENCE.md +128 -0
- package/examples/Optimization/Conic/AirlineHubConic.json +112 -0
- package/examples/Optimization/Conic/AirlineHubConic2.json +109 -0
- package/examples/Optimization/Conic/AirlineHubConic3.json +112 -0
- package/examples/Optimization/Conic/AirlineHubConic4.json +100 -0
- package/examples/Optimization/Conic/AirlineHubConic5.json +102 -0
- package/examples/Optimization/DataBinding/ProductMixCsv.json +82 -0
- package/examples/Optimization/DataBinding/ProductMixCsv4.json +96 -0
- package/examples/Optimization/DataBinding/ProductMixExcel.json +74 -0
- package/examples/Optimization/DataBinding/ProductMixExcel1.json +87 -0
- package/examples/Optimization/DataBinding/ProductMixExcel11.json +109 -0
- package/examples/Optimization/DataBinding/ProductMixExcel2.json +78 -0
- package/examples/Optimization/DataBinding/ProductMixTab.json +90 -0
- package/examples/Optimization/DataBinding/ProductMixTab1.json +74 -0
- package/examples/Optimization/DataBinding/ProductMixTab2.json +78 -0
- package/examples/Optimization/Linear/Inventory.json +200 -0
- package/examples/Optimization/Linear/Matop.json +120 -0
- package/examples/Optimization/Linear/ProductMix.json +98 -0
- package/examples/Optimization/Linear/ProductMix2.json +73 -0
- package/examples/Optimization/Linear/ProductMix3.json +50 -0
- package/examples/Optimization/Linear/ProductMix4.json +57 -0
- package/examples/Optimization/Linear/ProductMixCsv1.json +106 -0
- package/examples/Optimization/Linear/ProductMixCsv2.json +106 -0
- package/examples/Optimization/Linear/ProductMixSQL11.json +82 -0
- package/examples/Optimization/Linear/Rowop.json +127 -0
- package/examples/Optimization/NonLinear/AirlineHub.json +64 -0
- package/examples/Optimization/NonLinear/AirlineHub2.json +48 -0
- package/examples/Optimization/NonLinear/AirlineHub3.json +48 -0
- package/examples/Optimization/NonSmooth/Inventory2.json +160 -0
- package/examples/Optimization/Quadratic/PortfolioOpt.json +56 -0
- package/examples/Optimization/Quadratic/PortfolioOpt2.json +66 -0
- package/examples/Optimization/WithUncertainty/GasCompanyChance.json +79 -0
- package/examples/Optimization/WithUncertainty/GasCompanyRecourse.json +79 -0
- package/examples/Optimization/WithUncertainty/ProjectSelect.json +78 -0
- package/examples/Optimization/WithUncertainty/ProjectSelect2.json +82 -0
- package/examples/Optimization/WithUncertainty/ProjectSelect3.json +85 -0
- package/examples/Optimization/WithUncertainty/ProjectSelect4.json +75 -0
- package/examples/Simulation/CandyStoreSalesUsingSIP.json +148 -0
- package/examples/Simulation/CollegeFundGrowth1.json +424 -0
- package/examples/Simulation/CollegeFundGrowth1SIPModel.json +28 -0
- package/examples/Simulation/CollegeFundGrowth2.json +416 -0
- package/examples/Simulation/CollegeFundGrowthSIP.json +402 -0
- package/examples/Simulation/GBMSimulationModel.json +237 -0
- package/examples/Simulation/YieldManagement(Sim).json +70 -0
- package/examples/Simulation/YieldManagement2(Sim).json +73 -0
- package/examples/calculation/DMNExamples/DMN Box Fun with typeDef result.json +54 -0
- package/examples/calculation/DMNExamples/DMN Context example.json +69 -0
- package/examples/calculation/DMNExamples/DMN DT with typeDef result.json +43 -0
- package/examples/calculation/DMNExamples/FEEL Date Time example.json +28 -0
- package/examples/calculation/DMNExamples/FEEL For iteration example.json +66 -0
- package/examples/calculation/DMNExamples/FEEL For with two indices.json +16 -0
- package/examples/calculation/DMNExamples/FEEL For with typeDef result.json +88 -0
- package/examples/calculation/DMNExamples/FEEL If Then Else example.json +26 -0
- package/examples/calculation/DMNExamples/FEEL List example.json +38 -0
- package/examples/calculation/DMNExamples/FEEL List operator.json +17 -0
- package/examples/calculation/DMNExamples/FEEL List with typeDef collection.json +37 -0
- package/examples/calculation/DMNExamples/FEEL Some or Every example.json +66 -0
- package/examples/calculation/DecisionTables/DT Datasource example.json +53 -0
- package/examples/calculation/DecisionTables/DT Date and Time examples.json +92 -0
- package/examples/calculation/DecisionTables/DT Expression example.json +32 -0
- package/examples/calculation/DecisionTables/DT Hit Policy examples.json +137 -0
- package/examples/calculation/DecisionTables/DT Loan Recommend model.json +82 -0
- package/examples/calculation/DecisionTables/DT Loan Strategy Model and Predictive CSV-XML.json +219 -0
- package/examples/calculation/DecisionTables/DT Loan Strategy model and Datasource.json +286 -0
- package/examples/calculation/DecisionTables/DT Loan Strategy model and Predictive.json +204 -0
- package/examples/calculation/DecisionTables/DT Loan Strategy model by scratch.json +214 -0
- package/examples/calculation/DecisionTables/DT Output Order example.json +40 -0
- package/examples/calculation/DecisionTables/DT Unique example.json +39 -0
- package/examples/calculation/TypeDefinitions/TypeDefCF.json +65 -0
- package/examples/calculation/TypeDefinitions/TypeDefDT.json +58 -0
- package/examples/datamining/AffinityAnalysis/AssociationRules.json +52 -0
- package/examples/datamining/Classification/DecisionTree.json +91 -0
- package/examples/datamining/Classification/DiscriminantAnalysis.json +82 -0
- package/examples/datamining/Classification/Ensembles/Bagging.json +67 -0
- package/examples/datamining/Classification/Ensembles/Boosting.json +68 -0
- package/examples/datamining/Classification/Ensembles/RandomTrees.json +92 -0
- package/examples/datamining/Classification/FindBestModel.json +87 -0
- package/examples/datamining/Classification/LogisticRegression.json +83 -0
- package/examples/datamining/Classification/NaiveBayes.json +79 -0
- package/examples/datamining/Classification/NearestNeighbors.json +85 -0
- package/examples/datamining/Classification/NeuralNetwork.json +93 -0
- package/examples/datamining/Clustering/Hierarchical.json +55 -0
- package/examples/datamining/Clustering/KMeans.json +72 -0
- package/examples/datamining/DataSources/DelimitedFile.json +50 -0
- package/examples/datamining/DataSources/JSONFile.json +50 -0
- package/examples/datamining/DataSources/MSAccessDatabase.json +50 -0
- package/examples/datamining/DataSources/MSExcelTable.json +51 -0
- package/examples/datamining/DataSources/MSSQLDatabase.json +50 -0
- package/examples/datamining/DataSources/ODATATable.json +50 -0
- package/examples/datamining/DataSources/ODBCDatabase.json +50 -0
- package/examples/datamining/FeatureSelection/LinearWrapping.json +54 -0
- package/examples/datamining/FeatureSelection/LogisticWrapping.json +57 -0
- package/examples/datamining/FeatureSelection/Univariate.json +79 -0
- package/examples/datamining/Regression/DecisionTree.json +82 -0
- package/examples/datamining/Regression/Ensembles/Bagging.json +63 -0
- package/examples/datamining/Regression/Ensembles/Boosting.json +63 -0
- package/examples/datamining/Regression/Ensembles/RandomTrees.json +79 -0
- package/examples/datamining/Regression/FindBestModel.json +87 -0
- package/examples/datamining/Regression/LinearRegression.json +125 -0
- package/examples/datamining/Regression/NearestNeighbors.json +78 -0
- package/examples/datamining/Regression/NeuralNetwork.json +83 -0
- package/examples/datamining/Scoring/JSONClassifier.json +63 -0
- package/examples/datamining/Scoring/JSONClassifierNN.json +63 -0
- package/examples/datamining/Scoring/JSONClusterizer.json +38 -0
- package/examples/datamining/Scoring/JSONForecaster.json +50 -0
- package/examples/datamining/Scoring/JSONLinearRegression.json +57 -0
- package/examples/datamining/Scoring/JSONPCA.json +42 -0
- package/examples/datamining/Scoring/JSONRegressor.json +57 -0
- package/examples/datamining/Scoring/JSONTransformer.json +39 -0
- package/examples/datamining/Scoring/PMMLClassifier.json +43 -0
- package/examples/datamining/Scoring/PMMLForecaster.json +44 -0
- package/examples/datamining/Scoring/PMMLRegressor.json +39 -0
- package/examples/datamining/Scoring/PMMLTransformer.json +39 -0
- package/examples/datamining/Simulation/LinearRegressionSimulation.json +118 -0
- package/examples/datamining/Simulation/SyntheticDataGeneration.json +109 -0
- package/examples/datamining/Simulation/pmml-risk-scoring.json +63 -0
- package/examples/datamining/Summarizer/Summarization.json +55 -0
- package/examples/datamining/TextMining/LatentSemanticAnalysis.json +52 -0
- package/examples/datamining/TextMining/TfIdf-FileData.json +66 -0
- package/examples/datamining/TextMining/TfIdf-InlineData.json +56 -0
- package/examples/datamining/TimeSeries/AddHoltWinters.json +80 -0
- package/examples/datamining/TimeSeries/Arima.json +75 -0
- package/examples/datamining/TimeSeries/DoubleExponential.json +66 -0
- package/examples/datamining/TimeSeries/Exponential.json +65 -0
- package/examples/datamining/TimeSeries/LagAnalysis.json +49 -0
- package/examples/datamining/TimeSeries/MovingAverage.json +66 -0
- package/examples/datamining/TimeSeries/MulHoltWinters.json +66 -0
- package/examples/datamining/TimeSeries/NoTrendHoltWinters.json +66 -0
- package/examples/datamining/Transformation/Binning.json +70 -0
- package/examples/datamining/Transformation/CanonicalVariateAnalysis.json +48 -0
- package/examples/datamining/Transformation/CategoryReduction.json +52 -0
- package/examples/datamining/Transformation/Factorization.json +51 -0
- package/examples/datamining/Transformation/MissingDataHandling.json +84 -0
- package/examples/datamining/Transformation/OneHotEncoding-DataInline.json +55 -0
- package/examples/datamining/Transformation/OneHotEncoding-DatainFile.json +49 -0
- package/examples/datamining/Transformation/PartitionTimeSeries.json +49 -0
- package/examples/datamining/Transformation/Partitioning-DF.json +73 -0
- package/examples/datamining/Transformation/Partitioning.json +47 -0
- package/examples/datamining/Transformation/PartitioningWithOversampling-DF.json +66 -0
- package/examples/datamining/Transformation/PartitioningWithOversampling.json +45 -0
- package/examples/datamining/Transformation/PrincipalComponentsAnalysis.json +53 -0
- package/examples/datamining/Transformation/Rescaling.json +68 -0
- package/examples/datamining/Transformation/Sampling.json +44 -0
- package/examples/datamining/Transformation/StratifiedSampling.json +47 -0
- package/examples/flow/SQLServerTransform.json +261 -0
- package/examples/flow/dm-calc-pipeline.json +278 -0
- package/examples/flow/dm-pipeline-simulation.json +114 -0
- package/examples/flow/opt-sim-pipeline.json +160 -0
- package/examples/flow/sim-dm-pipeline.json +107 -0
- package/examples/flow/sim-sim-pipeline.json +137 -0
- package/examples/index.json +4679 -0
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/DataFiltering/ListwithFilter.json +53 -0
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ProductMix5.json +58 -0
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/compoundWhileStatement.json +36 -0
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ifThenElseStatement.json +34 -0
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/nestedLoop.json +26 -0
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/ParallelArray.json +48 -0
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/indexedArray.json +70 -0
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/nonParallelArray.json +50 -0
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/sumAggregateExample.json +338 -0
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/tsp.json +62 -0
- package/examples/rason-features/BoxIterators/Box_Fun_Loop_Iter_Sim_RASON.json +191 -0
- package/examples/rason-features/BoxIterators/Box_Fun_Loop_Sim_RASON.json +76 -0
- package/examples/rason-features/BoxIterators/Box_Fun_Sim_RASON.json +109 -0
- package/examples/rason-features/BoxIterators/Box_Iter_SIM_RASON.json +69 -0
- package/examples/rason-features/BoxIterators/Box_Iterator_Calc_Loop.json +183 -0
- package/examples/rason-features/BoxIterators/Box_Iterator_with_typeDef_partial.json +79 -0
- package/examples/rason-features/BoxLambdaExamples/BoxFunOptimize.json +155 -0
- package/examples/rason-features/BoxLambdaExamples/BoxFunSimulate.json +119 -0
- package/examples/rason-features/BoxLambdaExamples/LambdaFunOptimize.json +143 -0
- package/examples/rason-features/BoxLambdaExamples/LambdaFunSimulate.json +82 -0
- package/examples/rason-features/ReferenceGuide/RGFirehouseLocation.json +69 -0
- package/examples/rason-features/ReferenceGuide/RGFirehouseLocationConic.json +114 -0
- package/examples/rason-features/ReferenceGuide/RGProductMixCsv1.json +108 -0
- package/examples/rason-features/ReferenceGuide/RGProductMixExcel11.json +117 -0
- package/examples/rason-features/ReferenceGuide/RGProductMixSQL11.json +108 -0
- package/examples/rason-features/UserGuide/UGAirlineHubCSV.json +67 -0
- package/examples/rason-features/UserGuide/UGForecast.json +51 -0
- package/examples/rason-features/UserGuide/UGProductMix1.json +49 -0
- package/examples/rason-features/UserGuide/UGProductMix2.json +49 -0
- package/examples/rason-features/UserGuide/UGProductMixTab1.json +68 -0
- package/examples/rason-features/UserGuide/UGProductMixTab2.json +77 -0
- package/examples/rason-features/UserGuide/UGProductMixTab3.json +67 -0
- package/examples/rason-features/UserGuide/UGProductMixTab4.json +71 -0
- package/examples/rason-features/UserGuide/UGProductMixTab5.json +68 -0
- package/examples/rason-features/UserGuide/UGProjectSelect0.json +92 -0
- package/examples/rason-features/UserGuide/UGProjectSelect1.json +75 -0
- package/examples/rason-features/UserGuide/UGProjectSelect2.json +75 -0
- package/examples/rason-features/UserGuide/UGYieldManagement1.json +62 -0
- package/examples/rason-features/UserGuide/UGYieldManagement2.json +62 -0
- package/examples/rason-features/UserGuide/UGYieldManagement3.json +64 -0
- package/out/index.cjs +361 -0
- package/package.json +76 -0
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
{
|
|
2
|
+
"modelName": "sumAggregateLogistics",
|
|
3
|
+
"comment": "Transport3 model in Logistic Examples.xls — demonstrates indexed SUM aggregates in a multi-echelon logistics network",
|
|
4
|
+
"modelType": "optimization",
|
|
5
|
+
|
|
6
|
+
"engineSettings": {
|
|
7
|
+
"engine": "LP/Quadratic",
|
|
8
|
+
"comment": "Linear (optionally quadratic) optimization engine"
|
|
9
|
+
},
|
|
10
|
+
|
|
11
|
+
"indexSets": {
|
|
12
|
+
"factories": {
|
|
13
|
+
"comment": "Manufacturing / supply locations",
|
|
14
|
+
"value": [ "f1", "f2" ]
|
|
15
|
+
},
|
|
16
|
+
"products": {
|
|
17
|
+
"comment": "Products that must be produced and shipped",
|
|
18
|
+
"value": [ "p1", "p2", "p3" ]
|
|
19
|
+
},
|
|
20
|
+
"warehouses": {
|
|
21
|
+
"comment": "Intermediate distribution centers",
|
|
22
|
+
"value": [ "w1", "w2", "w3", "w4" ]
|
|
23
|
+
},
|
|
24
|
+
"customers": {
|
|
25
|
+
"comment": "End customers with product demand",
|
|
26
|
+
"value": [ "c1", "c2", "c3", "c4", "c5" ]
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
"variables": {
|
|
31
|
+
"f_w_num": {
|
|
32
|
+
"comment": "Units of product shipped from factories to warehouses",
|
|
33
|
+
"indexCols": [ "warehouses", "products", "factories" ],
|
|
34
|
+
"value": 0,
|
|
35
|
+
"lower": 0,
|
|
36
|
+
"finalValue": []
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
"f_c_num": {
|
|
40
|
+
"comment": "Units of product shipped directly from factories to customers",
|
|
41
|
+
"indexCols": [ "customers", "products", "factories" ],
|
|
42
|
+
"value": 0,
|
|
43
|
+
"lower": 0,
|
|
44
|
+
"finalValue": []
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
"w_c_num": {
|
|
48
|
+
"comment": "Units of product shipped from warehouses to customers",
|
|
49
|
+
"indexCols": [ "customers", "products", "warehouses" ],
|
|
50
|
+
"value": 0,
|
|
51
|
+
"lower": 0,
|
|
52
|
+
"finalValue": []
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
"data": {
|
|
57
|
+
"demand": {
|
|
58
|
+
"comment": "Customer demand by product",
|
|
59
|
+
"indexCols": [ "customers", "products" ],
|
|
60
|
+
"value": [
|
|
61
|
+
[ "c1", "p1", 30000 ],
|
|
62
|
+
[ "c2", "p1", 23000 ],
|
|
63
|
+
[ "c3", "p1", 15000 ],
|
|
64
|
+
[ "c4", "p1", 32000 ],
|
|
65
|
+
[ "c5", "p1", 16000 ],
|
|
66
|
+
[ "c1", "p2", 20000 ],
|
|
67
|
+
[ "c2", "p2", 15000 ],
|
|
68
|
+
[ "c3", "p2", 22000 ],
|
|
69
|
+
[ "c4", "p2", 12000 ],
|
|
70
|
+
[ "c5", "p2", 18000 ],
|
|
71
|
+
[ "c1", "p3", 25000 ],
|
|
72
|
+
[ "c2", "p3", 22000 ],
|
|
73
|
+
[ "c3", "p3", 16000 ],
|
|
74
|
+
[ "c4", "p3", 20000 ],
|
|
75
|
+
[ "c5", "p3", 25000 ]
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
"cap_f": {
|
|
80
|
+
"comment": "Maximum production capacity of each factory by product",
|
|
81
|
+
"indexCols": [ "products", "factories" ],
|
|
82
|
+
"value": [
|
|
83
|
+
[ "p1", "f1", 90000 ],
|
|
84
|
+
[ "p2", "f1", 100000 ],
|
|
85
|
+
[ "p3", "f1", 80000 ],
|
|
86
|
+
[ "p1", "f2", 75000 ],
|
|
87
|
+
[ "p2", "f2", 65000 ],
|
|
88
|
+
[ "p3", "f2", 90000 ]
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
|
|
92
|
+
"cap_w": {
|
|
93
|
+
"comment": "Maximum throughput capacity of each warehouse by product",
|
|
94
|
+
"indexCols": [ "warehouses", "products" ],
|
|
95
|
+
"value": [
|
|
96
|
+
[ "w1", "p1", 35000 ],
|
|
97
|
+
[ "w2", "p1", 20000 ],
|
|
98
|
+
[ "w3", "p1", 30000 ],
|
|
99
|
+
[ "w4", "p1", 15000 ],
|
|
100
|
+
[ "w1", "p2", 30000 ],
|
|
101
|
+
[ "w2", "p2", 25000 ],
|
|
102
|
+
[ "w3", "p2", 15000 ],
|
|
103
|
+
[ "w4", "p2", 24000 ],
|
|
104
|
+
[ "w1", "p3", 20000 ],
|
|
105
|
+
[ "w2", "p3", 20000 ],
|
|
106
|
+
[ "w3", "p3", 25000 ],
|
|
107
|
+
[ "w4", "p3", 20000 ]
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
|
|
111
|
+
"f_w_cost": {
|
|
112
|
+
"comment": "Per-unit cost to ship from factory to warehouse",
|
|
113
|
+
"indexCols": [ "warehouses", "products", "factories" ],
|
|
114
|
+
"value": [
|
|
115
|
+
[ "w1", "p1", "f1", 0.50 ],
|
|
116
|
+
[ "w2", "p1", "f1", 0.50 ],
|
|
117
|
+
[ "w3", "p1", "f1", 1.00 ],
|
|
118
|
+
[ "w4", "p1", "f1", 0.20 ],
|
|
119
|
+
[ "w1", "p2", "f1", 1.00 ],
|
|
120
|
+
[ "w2", "p2", "f1", 0.75 ],
|
|
121
|
+
[ "w3", "p2", "f1", 1.25 ],
|
|
122
|
+
[ "w4", "p2", "f1", 1.25 ],
|
|
123
|
+
[ "w1", "p3", "f1", 0.75 ],
|
|
124
|
+
[ "w2", "p3", "f1", 1.25 ],
|
|
125
|
+
[ "w3", "p3", "f1", 1.00 ],
|
|
126
|
+
[ "w4", "p3", "f1", 0.80 ],
|
|
127
|
+
[ "w1", "p1", "f2", 1.50 ],
|
|
128
|
+
[ "w2", "p1", "f2", 0.30 ],
|
|
129
|
+
[ "w3", "p1", "f2", 0.50 ],
|
|
130
|
+
[ "w4", "p1", "f2", 0.20 ],
|
|
131
|
+
[ "w1", "p2", "f2", 1.25 ],
|
|
132
|
+
[ "w2", "p2", "f2", 0.80 ],
|
|
133
|
+
[ "w3", "p2", "f2", 1.00 ],
|
|
134
|
+
[ "w4", "p2", "f2", 0.75 ],
|
|
135
|
+
[ "w1", "p3", "f2", 1.40 ],
|
|
136
|
+
[ "w2", "p3", "f2", 0.90 ],
|
|
137
|
+
[ "w3", "p3", "f2", 0.95 ],
|
|
138
|
+
[ "w4", "p3", "f2", 1.10 ]
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
|
|
142
|
+
"f_c_cost": {
|
|
143
|
+
"comment": "Per-unit cost to ship directly from factory to customer",
|
|
144
|
+
"indexCols": [ "customers", "products", "factories" ],
|
|
145
|
+
"value": [
|
|
146
|
+
[ "c1", "p1", "f1", 2.75 ],
|
|
147
|
+
[ "c2", "p1", "f1", 3.50 ],
|
|
148
|
+
[ "c3", "p1", "f1", 2.50 ],
|
|
149
|
+
[ "c4", "p1", "f1", 3.00 ],
|
|
150
|
+
[ "c5", "p1", "f1", 2.50 ],
|
|
151
|
+
[ "c1", "p2", "f1", 2.50 ],
|
|
152
|
+
[ "c2", "p2", "f1", 3.00 ],
|
|
153
|
+
[ "c3", "p2", "f1", 2.00 ],
|
|
154
|
+
[ "c4", "p2", "f1", 2.75 ],
|
|
155
|
+
[ "c5", "p2", "f1", 2.60 ],
|
|
156
|
+
[ "c1", "p3", "f1", 2.90 ],
|
|
157
|
+
[ "c2", "p3", "f1", 3.00 ],
|
|
158
|
+
[ "c3", "p3", "f1", 2.25 ],
|
|
159
|
+
[ "c4", "p3", "f1", 2.80 ],
|
|
160
|
+
[ "c5", "p3", "f1", 2.35 ],
|
|
161
|
+
[ "c1", "p1", "f2", 3.00 ],
|
|
162
|
+
[ "c2", "p1", "f2", 3.50 ],
|
|
163
|
+
[ "c3", "p1", "f2", 3.50 ],
|
|
164
|
+
[ "c4", "p1", "f2", 2.50 ],
|
|
165
|
+
[ "c5", "p1", "f2", 2.00 ],
|
|
166
|
+
[ "c1", "p2", "f2", 2.25 ],
|
|
167
|
+
[ "c2", "p2", "f2", 2.95 ],
|
|
168
|
+
[ "c3", "p2", "f2", 2.20 ],
|
|
169
|
+
[ "c4", "p2", "f2", 2.50 ],
|
|
170
|
+
[ "c5", "p2", "f2", 2.10 ],
|
|
171
|
+
[ "c1", "p3", "f2", 2.45 ],
|
|
172
|
+
[ "c2", "p3", "f2", 2.75 ],
|
|
173
|
+
[ "c3", "p3", "f2", 2.35 ],
|
|
174
|
+
[ "c4", "p3", "f2", 2.85 ],
|
|
175
|
+
[ "c5", "p3", "f2", 2.45 ]
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
|
|
179
|
+
"w_c_cost": {
|
|
180
|
+
"comment": "Per-unit cost to ship from warehouse to customer",
|
|
181
|
+
"indexCols": [ "customers", "products", "warehouses" ],
|
|
182
|
+
"value": [
|
|
183
|
+
[ "c1", "p1", "w1", 1.50 ],
|
|
184
|
+
[ "c2", "p1", "w1", 0.80 ],
|
|
185
|
+
[ "c3", "p1", "w1", 0.50 ],
|
|
186
|
+
[ "c4", "p1", "w1", 1.50 ],
|
|
187
|
+
[ "c5", "p1", "w1", 3.00 ],
|
|
188
|
+
[ "c1", "p2", "w1", 1.00 ],
|
|
189
|
+
[ "c2", "p2", "w1", 0.90 ],
|
|
190
|
+
[ "c3", "p2", "w1", 1.20 ],
|
|
191
|
+
[ "c4", "p2", "w1", 1.30 ],
|
|
192
|
+
[ "c5", "p2", "w1", 2.10 ],
|
|
193
|
+
[ "c1", "p3", "w1", 1.25 ],
|
|
194
|
+
[ "c2", "p3", "w1", 0.70 ],
|
|
195
|
+
[ "c3", "p3", "w1", 1.10 ],
|
|
196
|
+
[ "c4", "p3", "w1", 0.80 ],
|
|
197
|
+
[ "c5", "p3", "w1", 1.60 ],
|
|
198
|
+
[ "c1", "p1", "w2", 1.00 ],
|
|
199
|
+
[ "c2", "p1", "w2", 0.50 ],
|
|
200
|
+
[ "c3", "p1", "w2", 0.50 ],
|
|
201
|
+
[ "c4", "p1", "w2", 1.00 ],
|
|
202
|
+
[ "c5", "p1", "w2", 0.50 ],
|
|
203
|
+
[ "c1", "p2", "w2", 1.25 ],
|
|
204
|
+
[ "c2", "p2", "w2", 1.00 ],
|
|
205
|
+
[ "c3", "p2", "w2", 1.00 ],
|
|
206
|
+
[ "c4", "p2", "w2", 0.90 ],
|
|
207
|
+
[ "c5", "p2", "w2", 1.50 ],
|
|
208
|
+
[ "c1", "p3", "w2", 1.10 ],
|
|
209
|
+
[ "c2", "p3", "w2", 1.10 ],
|
|
210
|
+
[ "c3", "p3", "w2", 0.90 ],
|
|
211
|
+
[ "c4", "p3", "w2", 1.40 ],
|
|
212
|
+
[ "c5", "p3", "w2", 1.75 ],
|
|
213
|
+
[ "c1", "p1", "w3", 1.00 ],
|
|
214
|
+
[ "c2", "p1", "w3", 1.50 ],
|
|
215
|
+
[ "c3", "p1", "w3", 2.00 ],
|
|
216
|
+
[ "c4", "p1", "w3", 2.00 ],
|
|
217
|
+
[ "c5", "p1", "w3", 0.50 ],
|
|
218
|
+
[ "c1", "p2", "w3", 0.90 ],
|
|
219
|
+
[ "c2", "p2", "w3", 1.35 ],
|
|
220
|
+
[ "c3", "p2", "w3", 1.45 ],
|
|
221
|
+
[ "c4", "p2", "w3", 1.80 ],
|
|
222
|
+
[ "c5", "p2", "w3", 1.00 ],
|
|
223
|
+
[ "c1", "p3", "w3", 1.25 ],
|
|
224
|
+
[ "c2", "p3", "w3", 1.20 ],
|
|
225
|
+
[ "c3", "p3", "w3", 1.75 ],
|
|
226
|
+
[ "c4", "p3", "w3", 1.70 ],
|
|
227
|
+
[ "c5", "p3", "w3", 0.85 ],
|
|
228
|
+
[ "c1", "p1", "w4", 2.50 ],
|
|
229
|
+
[ "c2", "p1", "w4", 1.50 ],
|
|
230
|
+
[ "c3", "p1", "w4", 0.60 ],
|
|
231
|
+
[ "c4", "p1", "w4", 1.50 ],
|
|
232
|
+
[ "c5", "p1", "w4", 0.50 ],
|
|
233
|
+
[ "c1", "p2", "w4", 1.75 ],
|
|
234
|
+
[ "c2", "p2", "w4", 1.30 ],
|
|
235
|
+
[ "c3", "p2", "w4", 0.70 ],
|
|
236
|
+
[ "c4", "p2", "w4", 1.25 ],
|
|
237
|
+
[ "c5", "p2", "w4", 1.10 ],
|
|
238
|
+
[ "c1", "p3", "w4", 1.50 ],
|
|
239
|
+
[ "c2", "p3", "w4", 1.10 ],
|
|
240
|
+
[ "c3", "p3", "w4", 1.50 ],
|
|
241
|
+
[ "c4", "p3", "w4", 1.10 ],
|
|
242
|
+
[ "c5", "p3", "w4", 0.90 ]
|
|
243
|
+
]
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
|
|
247
|
+
"formulas": {
|
|
248
|
+
"comment": "Cost aggregation using indexed SUM and SUMPRODUCT",
|
|
249
|
+
|
|
250
|
+
"sum(w in warehouses, p in products, f in factories)": {
|
|
251
|
+
"comment": "Total factory → warehouse transportation cost",
|
|
252
|
+
"s1": {
|
|
253
|
+
"formula": "f_w_cost[w,p,f] * f_w_num[w,p,f]",
|
|
254
|
+
"finalValue": []
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
|
|
258
|
+
"sum(c in customers, p in products, f in factories)": {
|
|
259
|
+
"comment": "Total factory → customer (direct) transportation cost",
|
|
260
|
+
"s2": {
|
|
261
|
+
"formula": "f_c_cost[c,p,f] * f_c_num[c,p,f]",
|
|
262
|
+
"finalValue": []
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
|
|
266
|
+
"sum(c in customers, p in products, w in warehouses)": {
|
|
267
|
+
"comment": "Total warehouse → customer transportation cost",
|
|
268
|
+
"s3": {
|
|
269
|
+
"formula": "w_c_cost[c,p,w] * w_c_num[c,p,w]",
|
|
270
|
+
"finalValue": []
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
|
|
274
|
+
"s11": {
|
|
275
|
+
"comment": "SUMPRODUCT version of factory → warehouse cost",
|
|
276
|
+
"formula": "sumproduct(f_w_cost[,,], f_w_num[,,])",
|
|
277
|
+
"finalValue": []
|
|
278
|
+
},
|
|
279
|
+
"s22": {
|
|
280
|
+
"comment": "SUMPRODUCT version of factory → customer cost",
|
|
281
|
+
"formula": "sumproduct(f_c_cost[,,], f_c_num[,,])",
|
|
282
|
+
"finalValue": []
|
|
283
|
+
},
|
|
284
|
+
"s33": {
|
|
285
|
+
"comment": "SUMPRODUCT version of warehouse → customer cost",
|
|
286
|
+
"formula": "sumproduct(w_c_cost[,,], w_c_num[,,])",
|
|
287
|
+
"finalValue": []
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
|
|
291
|
+
"constraints": {
|
|
292
|
+
"comment": "Demand satisfaction, capacity limits, and flow balance",
|
|
293
|
+
|
|
294
|
+
"for(c in customers, p in products)": {
|
|
295
|
+
"comment": "Ensure all customer demand is met",
|
|
296
|
+
"d_con": {
|
|
297
|
+
"formula": "sum(w_c_num[c,p,]) + sum(f_c_num[c,p,]) - demand[c,p]",
|
|
298
|
+
"lower": 0,
|
|
299
|
+
"finalValue": []
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
|
|
303
|
+
"for(p in products, f in factories)": {
|
|
304
|
+
"comment": "Factory production capacity limits",
|
|
305
|
+
"cf_con": {
|
|
306
|
+
"formula": "sum(f_w_num[,p,f]) + sum(f_c_num[,p,f]) - cap_f[p,f]",
|
|
307
|
+
"upper": 0,
|
|
308
|
+
"finalValue": []
|
|
309
|
+
}
|
|
310
|
+
},
|
|
311
|
+
|
|
312
|
+
"for(w in warehouses, p in products)": {
|
|
313
|
+
"comment": "Warehouse capacity and flow conservation",
|
|
314
|
+
|
|
315
|
+
"cw_con": {
|
|
316
|
+
"comment": "Warehouse throughput limit",
|
|
317
|
+
"formula": "sum(f_w_num[w,p,]) - cap_w[w,p]",
|
|
318
|
+
"upper": 0,
|
|
319
|
+
"finalValue": []
|
|
320
|
+
},
|
|
321
|
+
|
|
322
|
+
"w_con": {
|
|
323
|
+
"comment": "Flow balance: inbound = outbound at each warehouse",
|
|
324
|
+
"formula": "sum(f_w_num[w,p,]) - sum(w_c_num[,p,w])",
|
|
325
|
+
"equal": 0,
|
|
326
|
+
"finalValue": []
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
|
|
331
|
+
"objective": {
|
|
332
|
+
"comment": "Minimize total transportation cost across all shipping paths",
|
|
333
|
+
"total": {
|
|
334
|
+
"type": "min",
|
|
335
|
+
"formula": "s11 + s22 + s3"
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"modelName": "usingRecursiveFor",
|
|
3
|
+
"modelType": "optimization",
|
|
4
|
+
"comment": "Uses a recursive 'for' in the 'formulas' section to compute the route distance of a traveling salesman.",
|
|
5
|
+
"engineSettings": {
|
|
6
|
+
"engine": "Nonlinear GRG"
|
|
7
|
+
},
|
|
8
|
+
"datasources": {
|
|
9
|
+
"comment": "Data is stored in tsp.xlsx, available from the RASON Examples area on the RASON ribbon found on the Editor tab at www.RASON.com.",
|
|
10
|
+
"dist_data": {
|
|
11
|
+
"type": "excel",
|
|
12
|
+
"connection": "tsp.xlsx",
|
|
13
|
+
"selection": "distances",
|
|
14
|
+
"rowIndex": "city",
|
|
15
|
+
"colIndex": "city2"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"data": {
|
|
19
|
+
"distance": {
|
|
20
|
+
"comment": "array of distances between cities - from tsp.xlsx",
|
|
21
|
+
"binding": "dist_data"
|
|
22
|
+
},
|
|
23
|
+
"n": {
|
|
24
|
+
"comment": "number of rows containing city data in tsp.xlsx",
|
|
25
|
+
"value": "distance.rows"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"formulas": {
|
|
29
|
+
"legDistance": {
|
|
30
|
+
"comment": "Creates an array with dimension 'n' to hold the calculated distances between cities.",
|
|
31
|
+
"dimensions": [ "n" ]
|
|
32
|
+
},
|
|
33
|
+
"legDistance[1]": {
|
|
34
|
+
"comment": "Computes the first leg distance by looking up the distance from the last city back to the first city, completing the tour.",
|
|
35
|
+
"formula": "INDEX(distance, route[n], route[1])"
|
|
36
|
+
},
|
|
37
|
+
"for(i in 2..n)": {
|
|
38
|
+
"comment": "Computes the remaining leg distances between consecutive cities in the route.",
|
|
39
|
+
"legDistance[i]": {
|
|
40
|
+
"formula": "INDEX(distance, route[i-1], route[i])"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"variables": {
|
|
45
|
+
"comment": "Variable block, route, defines the order in which the cities are to be visitied.",
|
|
46
|
+
"route": {
|
|
47
|
+
"dimensions": [ "n" ],
|
|
48
|
+
"type": "allDif",
|
|
49
|
+
"lower": 1,
|
|
50
|
+
"upper": "n",
|
|
51
|
+
"finalValue": []
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"objective": {
|
|
55
|
+
"comment": "Minimizes the total distance traveled in the salesman's route.",
|
|
56
|
+
"total": {
|
|
57
|
+
"type": "min",
|
|
58
|
+
"formula": "SUM(legDistance)",
|
|
59
|
+
"finalValue": []
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
{
|
|
2
|
+
"modelName": "Box_Fun_Loop_Iter_Sim_Rason",
|
|
3
|
+
"modelDescription": "Box Function example that calculates a monthly loan payment for three unique loans in three ways. 1. Using a box function 2. Using a box function loop and 3. Using a box iterator. This example combines all three above examples into 1: Simulation example with Box Function, with Box function Loop and with Box Iterator.",
|
|
4
|
+
"modelType": "simulation",
|
|
5
|
+
"engineSettings": {
|
|
6
|
+
"numThreads": 1,
|
|
7
|
+
"randomGenerator": "Lecuyer",
|
|
8
|
+
"samplingMethod": "Latin"
|
|
9
|
+
},
|
|
10
|
+
"uncertainVariables": {
|
|
11
|
+
"comment": "Three uncertain variables that model the interest rate for each loan.",
|
|
12
|
+
"intRateCust1": {
|
|
13
|
+
"comment": "Models interest rate for 1st customer's loan.",
|
|
14
|
+
"formula": "PsiNormal(0.0375,0.1)"
|
|
15
|
+
},
|
|
16
|
+
"intRateCust2": {
|
|
17
|
+
"comment": "Models interest rate for 2nd customer's loan.",
|
|
18
|
+
"formula": "PsiNormal(0.0475,0.1)"
|
|
19
|
+
},
|
|
20
|
+
"intRateCust3": {
|
|
21
|
+
"comment": "Models interest rate for 3rd customer's loan.",
|
|
22
|
+
"formula": "PsiNormal(0.0575,0.1)"
|
|
23
|
+
},
|
|
24
|
+
"rate": {
|
|
25
|
+
"comment": "Initializes the rate array of size 3, to hold the three interest rates: rate[1], rate[2], and rate[3].",
|
|
26
|
+
"dimensions": [3]
|
|
27
|
+
},
|
|
28
|
+
"rate[1]": {
|
|
29
|
+
"formula": "PsiNormal(0.0375, 0.1)"
|
|
30
|
+
},
|
|
31
|
+
"rate[2]": {
|
|
32
|
+
"formula": "PsiNormal(0.0475, 0.1)"
|
|
33
|
+
},
|
|
34
|
+
"rate[3]": {
|
|
35
|
+
"formula": "PsiNormal(0.0575, 0.1)"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"boxFunctions": {
|
|
39
|
+
"comment": "Includes 1 box function which calculates a customer's monthly loan payment based on the loan's principal (p), interest rate (r) and term (n). All input types must be numbers. Output type will also be a number.",
|
|
40
|
+
"funMonthlyPayment": {
|
|
41
|
+
"inputs": ["p", "r", "n"],
|
|
42
|
+
"inputTypes": ["number", "number", "number"],
|
|
43
|
+
"language": "Excel",
|
|
44
|
+
"resultType": "number",
|
|
45
|
+
"body": {
|
|
46
|
+
"payment": {
|
|
47
|
+
"formula": "(p * r / 12) / (1 - (1 + r / 12)^-n)"
|
|
48
|
+
},
|
|
49
|
+
"fee": {
|
|
50
|
+
"formula": "feePercent * payment"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"result": "payment + fee"
|
|
54
|
+
},
|
|
55
|
+
"funMonthlyPaymentLoop": {
|
|
56
|
+
"comment": "Note that in this box function loop, inputTypes and resultTypes must be left blank since the 3 inputs (p, r, and n) are arrays, not numbers. If 'number' is entered for the inputTypes or resultTypes, the index operator [i] can not be used.",
|
|
57
|
+
"inputs": [ "p", "r", "n" ],
|
|
58
|
+
"inputTypes": [ "", "", "" ],
|
|
59
|
+
"language": "Feel",
|
|
60
|
+
"resultType": "",
|
|
61
|
+
"result": "for i in 1..count(p) return ((p[i]*r[i]/12)/(1-(1+r[i]/12) **-n[i]))*(1+feePercent)"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"boxIterators": {
|
|
65
|
+
"comment": "Use the boxIterator section when entering box iterators. Includes 1 box iterator which calculates a customer's monthly loan payment based on the loan's principal (amount), interest rate (rate) and term (term). Output type will also be a number.",
|
|
66
|
+
"iterMonthlyPayment": {
|
|
67
|
+
"language": "Excel",
|
|
68
|
+
"returnType": "number",
|
|
69
|
+
"for": "i",
|
|
70
|
+
"in": "1..rows(amount)",
|
|
71
|
+
"return": "((amount[i] * rate[i] /12) / (1 - (1 + rate[i]/12)^-term[i])) * (1 + feePercent)"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"data": {
|
|
75
|
+
"comment": "This section holds the loan data information, principal, term and fee percentage.",
|
|
76
|
+
"feePercent": {
|
|
77
|
+
"comment": "Fee percentage",
|
|
78
|
+
"value": 0.01
|
|
79
|
+
},
|
|
80
|
+
"loan1Princ": {
|
|
81
|
+
"comment": "Principal amount for loan 1.",
|
|
82
|
+
"value": 600000
|
|
83
|
+
},
|
|
84
|
+
"loan1Term": {
|
|
85
|
+
"comment": "Term length for loan 1.",
|
|
86
|
+
"value": 360
|
|
87
|
+
},
|
|
88
|
+
"loan2Princ": {
|
|
89
|
+
"comment": "Principal amount for loan 2.",
|
|
90
|
+
"value": 550000
|
|
91
|
+
},
|
|
92
|
+
"loan2Term": {
|
|
93
|
+
"comment": "Term length for loan 2.",
|
|
94
|
+
"value": 360
|
|
95
|
+
},
|
|
96
|
+
"loan3Princ": {
|
|
97
|
+
"comment": "Principal amount for loan 3.",
|
|
98
|
+
"value": 500000
|
|
99
|
+
},
|
|
100
|
+
"loan3Term": {
|
|
101
|
+
"comment": "Term length for loan 3.",
|
|
102
|
+
"value": 360
|
|
103
|
+
},
|
|
104
|
+
"amount": {
|
|
105
|
+
"comment": "Array holding principal amounts for all three loans: amount[1] = 1st loan, amount[2] = 2nd loan and amount[3] = 3rd loan.",
|
|
106
|
+
"value": [600000, 550000, 500000]
|
|
107
|
+
},
|
|
108
|
+
"term": {
|
|
109
|
+
"comment": "Array holding terms for all three loans: term[1] = 1st loan, term[2] = 2nd loan and term[3] = 3rd loan.",
|
|
110
|
+
"value": [360, 360, 360]
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
},
|
|
114
|
+
"formulas": {
|
|
115
|
+
"comment": "Calls the box function above with the data for each loan.",
|
|
116
|
+
"cust1MonthlyPayment": {
|
|
117
|
+
"comment": "Passes the information for the 1st customer's loan to the funMonthlyPayment box function (above).",
|
|
118
|
+
"formula": "funMonthlyPayment(loan1Princ, intRateCust1, loan1Term) + PsiOutput()"
|
|
119
|
+
},
|
|
120
|
+
"cust2MonthlyPayment": {
|
|
121
|
+
"comment": "Passes the information for the 2nd customer's loan to the funMonthlyPayment box function (above).",
|
|
122
|
+
"formula": "funMonthlyPayment(loan2Princ, intRateCust2, loan2Term) + PsiOutput()"
|
|
123
|
+
},
|
|
124
|
+
"cust3MonthlyPayment": {
|
|
125
|
+
"comment": "Passes the information for the 3rd customer's loan to the funMonthlyPayment box function (above).",
|
|
126
|
+
"formula": "funMonthlyPayment(loan3Princ, intRateCust3, loan3Term) + PsiOutput()"
|
|
127
|
+
},
|
|
128
|
+
"callingBoxFunctionLoop": {
|
|
129
|
+
"formula": "funMonthlyPaymentLoop(amount, rate, term)",
|
|
130
|
+
"spill": "d21:d23",
|
|
131
|
+
"finalValue": []
|
|
132
|
+
},
|
|
133
|
+
"callingBoxIterator": {
|
|
134
|
+
"formula": "iterMonthlyPayment()"
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
"uncertainFunctions": {
|
|
138
|
+
"comment": "This section holds the uncertain functions in the simulation model.",
|
|
139
|
+
"Loan1BoxFunction": {
|
|
140
|
+
"comment": "Transforms the cust1MonthlyPayment formula into an uncertain function, providing results from all 1000 simulation trials along with the mean of these trials.",
|
|
141
|
+
"formula": "cust1MonthlyPayment",
|
|
142
|
+
"trials": [],
|
|
143
|
+
"mean": []
|
|
144
|
+
},
|
|
145
|
+
"Loan2BoxFunction": {
|
|
146
|
+
"comment": "Transforms the cust1MonthlyPayment formula into an uncertain function, providing results from all 1000 simulation trials along with the mean of these trials.",
|
|
147
|
+
"formula": "cust2MonthlyPayment",
|
|
148
|
+
"trials": [],
|
|
149
|
+
"mean": []
|
|
150
|
+
},
|
|
151
|
+
"Loan3BoxFunction": {
|
|
152
|
+
"comment": "Transforms the cust1MonthlyPayment formula into an uncertain function, providing results from all 1000 simulation trials along with the mean of these trials.",
|
|
153
|
+
"formula": "cust3MonthlyPayment",
|
|
154
|
+
"trials": [],
|
|
155
|
+
"mean": []
|
|
156
|
+
},
|
|
157
|
+
"Loan1BoxFunctionLoop": {
|
|
158
|
+
"comment": "Uncertain function returns the expected value, or the mean, of the monthly payment for the first loan, given the uncertain variable, rate[1]. ",
|
|
159
|
+
"formula": "callingBoxFunctionLoop[1]",
|
|
160
|
+
"mean": []
|
|
161
|
+
},
|
|
162
|
+
"Loan2BoxFunctionLoop": {
|
|
163
|
+
"comment": "Uncertain function returns the expected value, or the mean, of the monthly payments for the second loan, given the uncertain variable, rate[2]. ",
|
|
164
|
+
"formula": "callingBoxFunctionLoop[2]",
|
|
165
|
+
"mean": []
|
|
166
|
+
},
|
|
167
|
+
"Loan3BoxFunctionLoop": {
|
|
168
|
+
"comment": "Uncertain function returns the expected value, or the mean, of the monthly payments for the third loan, given the uncertain variable, rate[3]. ",
|
|
169
|
+
"formula": "callingBoxFunctionLoop[3]",
|
|
170
|
+
"mean": []
|
|
171
|
+
},
|
|
172
|
+
"Loan1BoxIterator": {
|
|
173
|
+
"comment": "Uncertain function returns expected value, or mean, for the monthly payment of 1st loan.",
|
|
174
|
+
"formula": "callingBoxIterator[1]",
|
|
175
|
+
"trials": [],
|
|
176
|
+
"mean": []
|
|
177
|
+
},
|
|
178
|
+
"Loan2BoxIterator": {
|
|
179
|
+
"comment": "Uncertain function returns expected value, or mean, for the monthly payment of 2nd loan.",
|
|
180
|
+
"formula": "callingBoxIterator[2]",
|
|
181
|
+
"trials": [],
|
|
182
|
+
"mean": []
|
|
183
|
+
},
|
|
184
|
+
"Loan3BoxIterator": {
|
|
185
|
+
"comment": "Uncertain function returns expected value, or mean, for the monthly payment of 3rd loan.",
|
|
186
|
+
"formula": "callingBoxIterator[3]",
|
|
187
|
+
"trials": [],
|
|
188
|
+
"mean": []
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"modelName": "Box_Fun_Loop_SIM_Rason",
|
|
3
|
+
"modelDescription": "Box Function Loop example that calculates a monthly loan payment for three unique loans.",
|
|
4
|
+
"modelType": "simulation",
|
|
5
|
+
"engineSettings": {
|
|
6
|
+
"numThreads": 1,
|
|
7
|
+
"randomGenerator": "Lecuyer",
|
|
8
|
+
"samplingMethod": "Latin"
|
|
9
|
+
},
|
|
10
|
+
"uncertainVariables": {
|
|
11
|
+
"comment": "Three uncertain variables that model the interest rate for each loan: rate[1] = interest rate for 1st loan, rate[2] = interest rate for 2nd loan and rate[3] = interest rate for 3rd loan.",
|
|
12
|
+
"rate": {
|
|
13
|
+
"comment": "Initializes the rate array of size 3, to hold the three interest rates.",
|
|
14
|
+
"dimensions": [ 3 ]
|
|
15
|
+
},
|
|
16
|
+
"rate[1]": {
|
|
17
|
+
"formula": "PsiNormal(0.0375, 0.1)"
|
|
18
|
+
},
|
|
19
|
+
"rate[2]": {
|
|
20
|
+
"formula": "PsiNormal(0.0475, 0.1)"
|
|
21
|
+
},
|
|
22
|
+
"rate[3]": {
|
|
23
|
+
"formula": "PsiNormal(0.0575, 0.1)"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"boxFunctions": {
|
|
27
|
+
"comment": "Includes 1 box function loop which calculates a customer's monthly loan payment based on the loan's principal (p), interest rate (r) and term (n). Note that in this box function loop, inputTypes and resultTypes must be left blank since the 3 inputs (p, r, and n) and the output are arrays, not numbers. If 'number' is entered for the inputTypes and resultTypes, the index operator [i] can not be used.",
|
|
28
|
+
"funMonthlyPaymentLoop": {
|
|
29
|
+
"inputs": [ "p", "r", "n" ],
|
|
30
|
+
"inputTypes": [ "", "", "" ],
|
|
31
|
+
"language": "Feel",
|
|
32
|
+
"resultType": "",
|
|
33
|
+
"result": "for i in 1..count(p) return ((p[i]*r[i]/12)/(1-(1+r[i]/12) **-n[i]))*(1+feePercent)"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"data": {
|
|
37
|
+
"comment": "This section holds the loan data information, principal (amount), term and fee percentage.",
|
|
38
|
+
"feePercent": {
|
|
39
|
+
"comment": "Fee percentage",
|
|
40
|
+
"value": 0.01
|
|
41
|
+
},
|
|
42
|
+
"amount": {
|
|
43
|
+
"comment": "Array holding principal amounts for all three loans: amount[1] = 1st loan, amount[2] = 2nd loan and amount[3] = 3rd loan.",
|
|
44
|
+
"value": [ 600000, 550000, 500000 ]
|
|
45
|
+
},
|
|
46
|
+
"term": {
|
|
47
|
+
"comment": "Array holding terms for all three loans: term[1] = 1st loan, term[2] = 2nd loan and term[3] = 3rd loan.",
|
|
48
|
+
"value": [ 360, 360, 360 ]
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"formulas": {
|
|
52
|
+
"comment": "Passes the principal (amount), interest rate (rate) and term information (term) for all three loans to the box function loop. In response the box function loop will return 3 monthly payments. ",
|
|
53
|
+
"callingBoxFunctionLoop": {
|
|
54
|
+
"formula": "funMonthlyPaymentLoop(amount, rate, term)",
|
|
55
|
+
"spill": "d21:d23",
|
|
56
|
+
"finalValue": []
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"uncertainFunctions": {
|
|
60
|
+
"uncfunc4": {
|
|
61
|
+
"comment": "Uncertain function returns the expected value, or the mean, of the monthly payment for the first loan, given the uncertain variable, rate[1]. ",
|
|
62
|
+
"formula": "callingBoxFunctionLoop[1]",
|
|
63
|
+
"mean": []
|
|
64
|
+
},
|
|
65
|
+
"uncfunc5": {
|
|
66
|
+
"comment": "Uncertain function returns the expected value, or the mean, of the monthly payments for the second loan, given the uncertain variable, rate[2]. ",
|
|
67
|
+
"formula": "callingBoxFunctionLoop[2]",
|
|
68
|
+
"mean": []
|
|
69
|
+
},
|
|
70
|
+
"uncfunc6": {
|
|
71
|
+
"comment": "Uncertain function returns the expected value, or the mean, of the monthly payments for the third loan, given the uncertain variable, rate[3]. ",
|
|
72
|
+
"formula": "callingBoxFunctionLoop[3]",
|
|
73
|
+
"mean": []
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|