@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.
Files changed (195) hide show
  1. package/LICENSE +35 -0
  2. package/README.md +282 -0
  3. package/examples/EXAMPLES_REFERENCE.md +128 -0
  4. package/examples/Optimization/Conic/AirlineHubConic.json +112 -0
  5. package/examples/Optimization/Conic/AirlineHubConic2.json +109 -0
  6. package/examples/Optimization/Conic/AirlineHubConic3.json +112 -0
  7. package/examples/Optimization/Conic/AirlineHubConic4.json +100 -0
  8. package/examples/Optimization/Conic/AirlineHubConic5.json +102 -0
  9. package/examples/Optimization/DataBinding/ProductMixCsv.json +82 -0
  10. package/examples/Optimization/DataBinding/ProductMixCsv4.json +96 -0
  11. package/examples/Optimization/DataBinding/ProductMixExcel.json +74 -0
  12. package/examples/Optimization/DataBinding/ProductMixExcel1.json +87 -0
  13. package/examples/Optimization/DataBinding/ProductMixExcel11.json +109 -0
  14. package/examples/Optimization/DataBinding/ProductMixExcel2.json +78 -0
  15. package/examples/Optimization/DataBinding/ProductMixTab.json +90 -0
  16. package/examples/Optimization/DataBinding/ProductMixTab1.json +74 -0
  17. package/examples/Optimization/DataBinding/ProductMixTab2.json +78 -0
  18. package/examples/Optimization/Linear/Inventory.json +200 -0
  19. package/examples/Optimization/Linear/Matop.json +120 -0
  20. package/examples/Optimization/Linear/ProductMix.json +98 -0
  21. package/examples/Optimization/Linear/ProductMix2.json +73 -0
  22. package/examples/Optimization/Linear/ProductMix3.json +50 -0
  23. package/examples/Optimization/Linear/ProductMix4.json +57 -0
  24. package/examples/Optimization/Linear/ProductMixCsv1.json +106 -0
  25. package/examples/Optimization/Linear/ProductMixCsv2.json +106 -0
  26. package/examples/Optimization/Linear/ProductMixSQL11.json +82 -0
  27. package/examples/Optimization/Linear/Rowop.json +127 -0
  28. package/examples/Optimization/NonLinear/AirlineHub.json +64 -0
  29. package/examples/Optimization/NonLinear/AirlineHub2.json +48 -0
  30. package/examples/Optimization/NonLinear/AirlineHub3.json +48 -0
  31. package/examples/Optimization/NonSmooth/Inventory2.json +160 -0
  32. package/examples/Optimization/Quadratic/PortfolioOpt.json +56 -0
  33. package/examples/Optimization/Quadratic/PortfolioOpt2.json +66 -0
  34. package/examples/Optimization/WithUncertainty/GasCompanyChance.json +79 -0
  35. package/examples/Optimization/WithUncertainty/GasCompanyRecourse.json +79 -0
  36. package/examples/Optimization/WithUncertainty/ProjectSelect.json +78 -0
  37. package/examples/Optimization/WithUncertainty/ProjectSelect2.json +82 -0
  38. package/examples/Optimization/WithUncertainty/ProjectSelect3.json +85 -0
  39. package/examples/Optimization/WithUncertainty/ProjectSelect4.json +75 -0
  40. package/examples/Simulation/CandyStoreSalesUsingSIP.json +148 -0
  41. package/examples/Simulation/CollegeFundGrowth1.json +424 -0
  42. package/examples/Simulation/CollegeFundGrowth1SIPModel.json +28 -0
  43. package/examples/Simulation/CollegeFundGrowth2.json +416 -0
  44. package/examples/Simulation/CollegeFundGrowthSIP.json +402 -0
  45. package/examples/Simulation/GBMSimulationModel.json +237 -0
  46. package/examples/Simulation/YieldManagement(Sim).json +70 -0
  47. package/examples/Simulation/YieldManagement2(Sim).json +73 -0
  48. package/examples/calculation/DMNExamples/DMN Box Fun with typeDef result.json +54 -0
  49. package/examples/calculation/DMNExamples/DMN Context example.json +69 -0
  50. package/examples/calculation/DMNExamples/DMN DT with typeDef result.json +43 -0
  51. package/examples/calculation/DMNExamples/FEEL Date Time example.json +28 -0
  52. package/examples/calculation/DMNExamples/FEEL For iteration example.json +66 -0
  53. package/examples/calculation/DMNExamples/FEEL For with two indices.json +16 -0
  54. package/examples/calculation/DMNExamples/FEEL For with typeDef result.json +88 -0
  55. package/examples/calculation/DMNExamples/FEEL If Then Else example.json +26 -0
  56. package/examples/calculation/DMNExamples/FEEL List example.json +38 -0
  57. package/examples/calculation/DMNExamples/FEEL List operator.json +17 -0
  58. package/examples/calculation/DMNExamples/FEEL List with typeDef collection.json +37 -0
  59. package/examples/calculation/DMNExamples/FEEL Some or Every example.json +66 -0
  60. package/examples/calculation/DecisionTables/DT Datasource example.json +53 -0
  61. package/examples/calculation/DecisionTables/DT Date and Time examples.json +92 -0
  62. package/examples/calculation/DecisionTables/DT Expression example.json +32 -0
  63. package/examples/calculation/DecisionTables/DT Hit Policy examples.json +137 -0
  64. package/examples/calculation/DecisionTables/DT Loan Recommend model.json +82 -0
  65. package/examples/calculation/DecisionTables/DT Loan Strategy Model and Predictive CSV-XML.json +219 -0
  66. package/examples/calculation/DecisionTables/DT Loan Strategy model and Datasource.json +286 -0
  67. package/examples/calculation/DecisionTables/DT Loan Strategy model and Predictive.json +204 -0
  68. package/examples/calculation/DecisionTables/DT Loan Strategy model by scratch.json +214 -0
  69. package/examples/calculation/DecisionTables/DT Output Order example.json +40 -0
  70. package/examples/calculation/DecisionTables/DT Unique example.json +39 -0
  71. package/examples/calculation/TypeDefinitions/TypeDefCF.json +65 -0
  72. package/examples/calculation/TypeDefinitions/TypeDefDT.json +58 -0
  73. package/examples/datamining/AffinityAnalysis/AssociationRules.json +52 -0
  74. package/examples/datamining/Classification/DecisionTree.json +91 -0
  75. package/examples/datamining/Classification/DiscriminantAnalysis.json +82 -0
  76. package/examples/datamining/Classification/Ensembles/Bagging.json +67 -0
  77. package/examples/datamining/Classification/Ensembles/Boosting.json +68 -0
  78. package/examples/datamining/Classification/Ensembles/RandomTrees.json +92 -0
  79. package/examples/datamining/Classification/FindBestModel.json +87 -0
  80. package/examples/datamining/Classification/LogisticRegression.json +83 -0
  81. package/examples/datamining/Classification/NaiveBayes.json +79 -0
  82. package/examples/datamining/Classification/NearestNeighbors.json +85 -0
  83. package/examples/datamining/Classification/NeuralNetwork.json +93 -0
  84. package/examples/datamining/Clustering/Hierarchical.json +55 -0
  85. package/examples/datamining/Clustering/KMeans.json +72 -0
  86. package/examples/datamining/DataSources/DelimitedFile.json +50 -0
  87. package/examples/datamining/DataSources/JSONFile.json +50 -0
  88. package/examples/datamining/DataSources/MSAccessDatabase.json +50 -0
  89. package/examples/datamining/DataSources/MSExcelTable.json +51 -0
  90. package/examples/datamining/DataSources/MSSQLDatabase.json +50 -0
  91. package/examples/datamining/DataSources/ODATATable.json +50 -0
  92. package/examples/datamining/DataSources/ODBCDatabase.json +50 -0
  93. package/examples/datamining/FeatureSelection/LinearWrapping.json +54 -0
  94. package/examples/datamining/FeatureSelection/LogisticWrapping.json +57 -0
  95. package/examples/datamining/FeatureSelection/Univariate.json +79 -0
  96. package/examples/datamining/Regression/DecisionTree.json +82 -0
  97. package/examples/datamining/Regression/Ensembles/Bagging.json +63 -0
  98. package/examples/datamining/Regression/Ensembles/Boosting.json +63 -0
  99. package/examples/datamining/Regression/Ensembles/RandomTrees.json +79 -0
  100. package/examples/datamining/Regression/FindBestModel.json +87 -0
  101. package/examples/datamining/Regression/LinearRegression.json +125 -0
  102. package/examples/datamining/Regression/NearestNeighbors.json +78 -0
  103. package/examples/datamining/Regression/NeuralNetwork.json +83 -0
  104. package/examples/datamining/Scoring/JSONClassifier.json +63 -0
  105. package/examples/datamining/Scoring/JSONClassifierNN.json +63 -0
  106. package/examples/datamining/Scoring/JSONClusterizer.json +38 -0
  107. package/examples/datamining/Scoring/JSONForecaster.json +50 -0
  108. package/examples/datamining/Scoring/JSONLinearRegression.json +57 -0
  109. package/examples/datamining/Scoring/JSONPCA.json +42 -0
  110. package/examples/datamining/Scoring/JSONRegressor.json +57 -0
  111. package/examples/datamining/Scoring/JSONTransformer.json +39 -0
  112. package/examples/datamining/Scoring/PMMLClassifier.json +43 -0
  113. package/examples/datamining/Scoring/PMMLForecaster.json +44 -0
  114. package/examples/datamining/Scoring/PMMLRegressor.json +39 -0
  115. package/examples/datamining/Scoring/PMMLTransformer.json +39 -0
  116. package/examples/datamining/Simulation/LinearRegressionSimulation.json +118 -0
  117. package/examples/datamining/Simulation/SyntheticDataGeneration.json +109 -0
  118. package/examples/datamining/Simulation/pmml-risk-scoring.json +63 -0
  119. package/examples/datamining/Summarizer/Summarization.json +55 -0
  120. package/examples/datamining/TextMining/LatentSemanticAnalysis.json +52 -0
  121. package/examples/datamining/TextMining/TfIdf-FileData.json +66 -0
  122. package/examples/datamining/TextMining/TfIdf-InlineData.json +56 -0
  123. package/examples/datamining/TimeSeries/AddHoltWinters.json +80 -0
  124. package/examples/datamining/TimeSeries/Arima.json +75 -0
  125. package/examples/datamining/TimeSeries/DoubleExponential.json +66 -0
  126. package/examples/datamining/TimeSeries/Exponential.json +65 -0
  127. package/examples/datamining/TimeSeries/LagAnalysis.json +49 -0
  128. package/examples/datamining/TimeSeries/MovingAverage.json +66 -0
  129. package/examples/datamining/TimeSeries/MulHoltWinters.json +66 -0
  130. package/examples/datamining/TimeSeries/NoTrendHoltWinters.json +66 -0
  131. package/examples/datamining/Transformation/Binning.json +70 -0
  132. package/examples/datamining/Transformation/CanonicalVariateAnalysis.json +48 -0
  133. package/examples/datamining/Transformation/CategoryReduction.json +52 -0
  134. package/examples/datamining/Transformation/Factorization.json +51 -0
  135. package/examples/datamining/Transformation/MissingDataHandling.json +84 -0
  136. package/examples/datamining/Transformation/OneHotEncoding-DataInline.json +55 -0
  137. package/examples/datamining/Transformation/OneHotEncoding-DatainFile.json +49 -0
  138. package/examples/datamining/Transformation/PartitionTimeSeries.json +49 -0
  139. package/examples/datamining/Transformation/Partitioning-DF.json +73 -0
  140. package/examples/datamining/Transformation/Partitioning.json +47 -0
  141. package/examples/datamining/Transformation/PartitioningWithOversampling-DF.json +66 -0
  142. package/examples/datamining/Transformation/PartitioningWithOversampling.json +45 -0
  143. package/examples/datamining/Transformation/PrincipalComponentsAnalysis.json +53 -0
  144. package/examples/datamining/Transformation/Rescaling.json +68 -0
  145. package/examples/datamining/Transformation/Sampling.json +44 -0
  146. package/examples/datamining/Transformation/StratifiedSampling.json +47 -0
  147. package/examples/flow/SQLServerTransform.json +261 -0
  148. package/examples/flow/dm-calc-pipeline.json +278 -0
  149. package/examples/flow/dm-pipeline-simulation.json +114 -0
  150. package/examples/flow/opt-sim-pipeline.json +160 -0
  151. package/examples/flow/sim-dm-pipeline.json +107 -0
  152. package/examples/flow/sim-sim-pipeline.json +137 -0
  153. package/examples/index.json +4679 -0
  154. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/DataFiltering/ListwithFilter.json +53 -0
  155. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ProductMix5.json +58 -0
  156. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/compoundWhileStatement.json +36 -0
  157. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ifThenElseStatement.json +34 -0
  158. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/nestedLoop.json +26 -0
  159. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/ParallelArray.json +48 -0
  160. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/indexedArray.json +70 -0
  161. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/nonParallelArray.json +50 -0
  162. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/sumAggregateExample.json +338 -0
  163. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/tsp.json +62 -0
  164. package/examples/rason-features/BoxIterators/Box_Fun_Loop_Iter_Sim_RASON.json +191 -0
  165. package/examples/rason-features/BoxIterators/Box_Fun_Loop_Sim_RASON.json +76 -0
  166. package/examples/rason-features/BoxIterators/Box_Fun_Sim_RASON.json +109 -0
  167. package/examples/rason-features/BoxIterators/Box_Iter_SIM_RASON.json +69 -0
  168. package/examples/rason-features/BoxIterators/Box_Iterator_Calc_Loop.json +183 -0
  169. package/examples/rason-features/BoxIterators/Box_Iterator_with_typeDef_partial.json +79 -0
  170. package/examples/rason-features/BoxLambdaExamples/BoxFunOptimize.json +155 -0
  171. package/examples/rason-features/BoxLambdaExamples/BoxFunSimulate.json +119 -0
  172. package/examples/rason-features/BoxLambdaExamples/LambdaFunOptimize.json +143 -0
  173. package/examples/rason-features/BoxLambdaExamples/LambdaFunSimulate.json +82 -0
  174. package/examples/rason-features/ReferenceGuide/RGFirehouseLocation.json +69 -0
  175. package/examples/rason-features/ReferenceGuide/RGFirehouseLocationConic.json +114 -0
  176. package/examples/rason-features/ReferenceGuide/RGProductMixCsv1.json +108 -0
  177. package/examples/rason-features/ReferenceGuide/RGProductMixExcel11.json +117 -0
  178. package/examples/rason-features/ReferenceGuide/RGProductMixSQL11.json +108 -0
  179. package/examples/rason-features/UserGuide/UGAirlineHubCSV.json +67 -0
  180. package/examples/rason-features/UserGuide/UGForecast.json +51 -0
  181. package/examples/rason-features/UserGuide/UGProductMix1.json +49 -0
  182. package/examples/rason-features/UserGuide/UGProductMix2.json +49 -0
  183. package/examples/rason-features/UserGuide/UGProductMixTab1.json +68 -0
  184. package/examples/rason-features/UserGuide/UGProductMixTab2.json +77 -0
  185. package/examples/rason-features/UserGuide/UGProductMixTab3.json +67 -0
  186. package/examples/rason-features/UserGuide/UGProductMixTab4.json +71 -0
  187. package/examples/rason-features/UserGuide/UGProductMixTab5.json +68 -0
  188. package/examples/rason-features/UserGuide/UGProjectSelect0.json +92 -0
  189. package/examples/rason-features/UserGuide/UGProjectSelect1.json +75 -0
  190. package/examples/rason-features/UserGuide/UGProjectSelect2.json +75 -0
  191. package/examples/rason-features/UserGuide/UGYieldManagement1.json +62 -0
  192. package/examples/rason-features/UserGuide/UGYieldManagement2.json +62 -0
  193. package/examples/rason-features/UserGuide/UGYieldManagement3.json +64 -0
  194. package/out/index.cjs +361 -0
  195. package/package.json +76 -0
@@ -0,0 +1,278 @@
1
+ {
2
+ "flowName": "ds-calc-workflow",
3
+ "flowDescription": "This decision flow contains three stages. In the first stage, mlr-sim-stage, a dataset is imported and partitioned, then a Linear Regression model is fit to the training partition.. The second stage, scoringStage, uses the fitted model from stage 1 to score a new dataset. The third stage, decisionStage, accepts the newly scored data as an input to a decision table. The two imported datasets are loan_applicants_training.txt and loan_applicant_new.txt. Both can be downloaded by clicking the download icon on the Editor ribbon. To attach both datasets to this model, click Choose Files from the Properties pane, then browse to the location of the downloaded files and click Open. Then POST the model to the RASON server using the Post icon and to solve, click the down arrow next to the play icon and select Solve.",
4
+ "modelType": "flow",
5
+ "mlrStage": {
6
+ "comment": "This is the first stage of the decision flow. In this stage, the data is first imported into the RASON Model, then assigned to the training partition. Afterwards, the model is fit to the data using linear regression.",
7
+ "modelName": "mlrModel",
8
+ "datasources": {
9
+ "comment": "Use this section to import/export data.",
10
+ "myTrainSrc": {
11
+ "comment": "Imports data from the file, loan_applicants_training.txt.",
12
+ "type": "csv",
13
+ "connection": "loan_applicants_training.txt",
14
+ "direction": "import"
15
+ }
16
+ },
17
+ "datasets": {
18
+ "comment": "Use this section to bind a datasource to a dataset.",
19
+ "myTrainData": {
20
+ "comment": "Binds the datasource, myTrainSrc, to the myTrainData dataset. Score is selected as the output column.",
21
+ "binding": "myTrainSrc",
22
+ "targetCol": "Score"
23
+ }
24
+ },
25
+ "estimator": {
26
+ "comment": "Use this section to dine a estimator(s), including the type, algorithm and parameters, that will be used to fit a model(s).",
27
+ "mlrEstimator": {
28
+ "comment": "Binds the datasource, myTrainSrc, to the myTrainData dataset. Score is selected as the output column. The option fitIntercept is set to True. To find a full list of options for all supported estimators, see the RASON Reference Guide, downloadable from the Help tab.",
29
+ "type": "regression",
30
+ "algorithm": "linearRegression",
31
+ "parameters": {
32
+ "fitIntercept": true
33
+ }
34
+ }
35
+ },
36
+ "actions": {
37
+ "comment": "Use this section to define the actions, evaluations, and data to be used by the estimator defined above",
38
+ "mlrModel": {
39
+ "comment": "In this example, the mlrEstimator estimator will be used to fit a model to the data within myTrainData. The fitted model will be saved as fittedModelJSON.",
40
+ "trainData": "myTrainData",
41
+ "estimator": "mlrEstimator",
42
+ "action": "fit",
43
+ "evaluations": [ "fittedModelJson" ]
44
+ }
45
+ }
46
+ },
47
+ "scoringStage": {
48
+ "comment": "The second stage accepts the fitted model, fittedModelJSON, from the 1st stage and uses this model to score new data imported from loan_applicant_new.txt",
49
+ "modelName": "scoringModel",
50
+ "inputParameters": {
51
+ "comment": "The input for this stage is the fitted model from stage 1, fittedModelJSON",
52
+ "mlrModel": {
53
+ "value": "mlrStage.mlrModel.fittedModelJson"
54
+ }
55
+ },
56
+ "datasources": {
57
+ "comment": "The input for this stage is the fitted model from stage 1, fittedModelJSON",
58
+ "unlabeledDataSrc": {
59
+ "comment": "Imports data from the loan_applicant_new.txt file",
60
+ "type": "csv",
61
+ "connection": "loan_applicant_new.txt",
62
+ "direction": "import"
63
+ }
64
+ },
65
+ "datasets": {
66
+ "comment": "Binds data from unlabeledDataSrc datasource to the unlabeledData datasets.",
67
+ "unlabeledData": {
68
+ "binding": "unlabeledDataSrc"
69
+ }
70
+ },
71
+ "actions": {
72
+ "appScore": {
73
+ "comment": "Scores the unlabeledData dataset using the mlrModel from stage 1",
74
+ "data": "unlabeledData",
75
+ "fittedModel": "mlrModel",
76
+ "action": "predict",
77
+ "evaluations": [ "prediction" ]
78
+ }
79
+ }
80
+ },
81
+ "decisionStage": {
82
+ "comment": "The third stage accepts the newly scored record from stage 2 and uses this value as an input to a decision table.",
83
+ "modelName": "decisionModel",
84
+ "inputParameters": {
85
+ "appScorePrediction": {
86
+ "comment": "This stage accepts the predicted values from the scored data in stage 2.",
87
+ "value": "scoringStage.appScore.prediction"
88
+ }
89
+ },
90
+ "decisionTables": {
91
+ "tblAppRiskScore": {
92
+ "comment": "This decision table accepts 3 inputs, customer age, marital status and employment status, and returns a partial risk score. The collection of results will be added together to create the partial score. Note that the inputValues property limits the age to be 18 to 120, inclusive, the marital status to be s for single or m for married, the employment status as unemployed, employed, selfEmployed or student.",
93
+ "inputs": [ "cust age", "marital status", "employment status" ],
94
+ "outputs": [ "partial score" ],
95
+ "refTypes": [ "", "", "", "" ],
96
+ "inputValues": [
97
+ [ "[18..120]", "s", "unemployed" ],
98
+ [ "", "m", "employed" ],
99
+ [ "", "", "selfemployed" ],
100
+ [ "", "", "student" ]
101
+ ],
102
+ "rules": [
103
+ [ "[18..21]", "-", "-", 32 ],
104
+ [ "(21..25]", "-", "-", 35 ],
105
+ [ "(25..35]", "-", "-", 40 ],
106
+ [ "(35..49]", "-", "-", 43 ],
107
+ [ ">49", "-", "-", 48 ],
108
+ [ "-", "s", "-", 25 ],
109
+ [ "-", "m", "-", 45 ],
110
+ [ "-", "-", "unemployed", 15 ],
111
+ [ "-", "-", "student", 18 ],
112
+ [ "-", "-", "employed", 45 ],
113
+ [ "-", "-", "selfemployed", 36 ]
114
+ ],
115
+ "hitPolicy": "C+"
116
+ },
117
+ "tblBureauRiskCat": {
118
+ "comment": "This decision table accepts 2 inputs, cust Exist (true if customer already has at least 1 more loans) and app Risk Score (partial score from tblAppRiskScore). With a hit policy of 'unique', only 1 rule, with a unique result, may be returned.",
119
+ "inputs": [ "cust exist", "app risk score" ],
120
+ "outputs": [ "bureau risk cat" ],
121
+ "refTypes": [ "", "", "" ],
122
+ "rules": [
123
+ [ false, "<100", "high" ],
124
+ [ false, "[100..120]", "medium" ],
125
+ [ false, "[120..130]", "low" ],
126
+ [ false, ">130", "veryLow" ],
127
+ [ true, "<80", "decline" ],
128
+ [ true, "[80..90]", "high" ],
129
+ [ true, "[90..110]", "medium" ],
130
+ [ true, ">110", "low" ]
131
+ ],
132
+ "hitPolicy": "U"
133
+ },
134
+ "tblBureauCallType": {
135
+ "comment": "This decision table accepts 1 input, bureau Risk Cat, which is the output of the tblBureauRiskCat decision table.",
136
+ "inputs": [ "bureau risk cat" ],
137
+ "outputs": [ "bureau call type" ],
138
+ "rules": [
139
+ [ "high, medium", "full" ],
140
+ [ "low", "mini" ],
141
+ [ "veryLow, decline", "none" ]
142
+ ],
143
+ "hitPolicy": "U"
144
+ },
145
+ "tblEligibility": {
146
+ "comment": "This decision table accepts 3 inputs, bureau Risk Cat (which is the output of the tblAppriskScore decision table), bureau afford (calculated within formulas) and the customer's age. The customer's eligibility will be returned in the result. Note that there are only two outputs: 'ineligible' or 'eligible' as given in the outputValues property.",
147
+ "inputs": [ "bureau risk cat", "bureau afford", "cust age" ],
148
+ "outputs": [ "eligibility" ],
149
+ "refTypes": [ "", "", "", "" ],
150
+ "outputValues": [ "ineligible", "eligible" ],
151
+ "rules": [
152
+ [ "decline", "-", "-", "ineligible" ],
153
+ [ "-", false, "-", "ineligible" ],
154
+ [ "-", "-", "<18", "ineligible" ],
155
+ [ "-", "-", "-", "eligible" ]
156
+ ],
157
+ "hitPolicy": "P"
158
+ },
159
+ "tblStrategy": {
160
+ "comment": "This decision table accepts 2 inputs, eligibility and bureau Call Type. The strategy will be returned in the result.",
161
+ "inputs": [ "eligibility", "bureau call type" ],
162
+ "outputs": [ "strategy" ],
163
+ "rules": [
164
+ [ "ineligible", "-", "decline" ],
165
+ [ "eligible", "full, mini", "bureau" ],
166
+ [ "eligible", "none", "through" ]
167
+ ],
168
+ "hitPolicy": "U"
169
+ },
170
+ "tblCreditContFactor": {
171
+ "comment": "This decision table accepts 1 input, bureau Risk Cat, and returns the creditContFactor.",
172
+ "inputs": [ "bureau risk cat" ],
173
+ "outputs": [ "credit cont factor" ],
174
+ "rules": [
175
+ [ "high, decline", 0.6 ],
176
+ [ "medium", 0.7 ],
177
+ [ "low, veryLow", 0.8 ]
178
+ ],
179
+ "hitPolicy": "U"
180
+ }
181
+ },
182
+ "data": {
183
+ "comment": "Use this section to organize your constant model data.",
184
+ "customerAge": {
185
+ "comment": "customer's age",
186
+ "value": 40
187
+ },
188
+ "maritalStatus": {
189
+ "comment": "customer's marital status",
190
+ "value": "s"
191
+ },
192
+ "employmentStatus": {
193
+ "comment": "customer's age",
194
+ "value": "s"
195
+ },
196
+ "customerExists": {
197
+ "comment": "True if the customer has already taken a loan with the bank, false otherwise.",
198
+ "value": false
199
+ },
200
+ "monthlyIncome": {
201
+ "comment": "applicant's monthly income",
202
+ "value": 2500
203
+ },
204
+ "loanRate": {
205
+ "comment": "prospective loan interest rate",
206
+ "value": 5
207
+ },
208
+ "loanTerm": {
209
+ "comment": "prospective loan term, in months",
210
+ "value": 30
211
+ },
212
+ "loanAmount": {
213
+ "comment": "prospective loan amount",
214
+ "value": 100000
215
+ },
216
+ "monthlyExpenses": {
217
+ "comment": "applicant's monthly expenses",
218
+ "value": 1000
219
+ },
220
+ "loanType": {
221
+ "comment": "prospective loan type",
222
+ "value": "standard"
223
+ }
224
+ },
225
+ "formulas": {
226
+ "appRiskScore": {
227
+ "comment": "Calls the tblAppRiskScore decision table",
228
+ "formula": "MIN(appScorePrediction, tblAppRiskScore(, , customerAge, maritalStatus, EmploymentStatus))",
229
+ "finalValue": []
230
+ },
231
+ "bureauRiskCat": {
232
+ "comment": "Calls the tblBureauRiskCat decision table",
233
+ "formula": "tblBureauRiskCat(, , customerExists, appRiskScore)",
234
+ "finalValue": []
235
+ },
236
+ "bureauCallType": {
237
+ "comment": "Calls the tblBureauCallType decision table",
238
+ "formula": "tblBureauCallType(, , bureauRiskCat)",
239
+ "finalValue": []
240
+ },
241
+ "monthlyRepay": {
242
+ "comment": "Calculates the monthly payment",
243
+ "formula": "-PMT(loanRate%/12, loanTerm*12, loanAmount)"
244
+ },
245
+ "disposableIncome": {
246
+ "comment": "Calculates the applicant's disposable income",
247
+ "formula": "monthlyIncome - (monthlyRepay + monthlyExpenses)"
248
+ },
249
+ "monthlyFee": {
250
+ "comment": "Calculates a fee that will be applied to the loan payment depending on the loan type.",
251
+ "formula": "IF(loanType = 'standard', 20, IF(loanType = 'special', 25, 0))"
252
+ },
253
+ "monthlyInstall": {
254
+ "comment": "Calculates the total monthly payment.",
255
+ "formula": "monthlyRepay + monthlyFee"
256
+ },
257
+ "bureauAfford": {
258
+ "comment": "Calls the tblCreditContFactor decision table",
259
+ "formula": "IF(disposableIncome * tblCreditContFactor(,,bureauRiskCat) > monthlyInstall, true, false)"
260
+ },
261
+ "eligibility": {
262
+ "comment": "Calls the tblEligibility decision table. The finalValue of this function will be returned in the results due to the proprety, finalValue.",
263
+ "formula": "tblEligibility(, , bureauRiskCat, bureauAfford, customerAge)",
264
+ "finalValue": []
265
+ },
266
+ "strategy": {
267
+ "comment": "Calls the tblStrategy decision table. The finalValue of this function will be returned in the results due to the proprety, finalValue.",
268
+ "formula": "tblStrategy(, , eligibility, bureauCallType)",
269
+ "finalValue": []
270
+ },
271
+ "creditContFactor": {
272
+ "comment": "Calls the tblCreditContFactor decision table. The finalValue of this function will be returned in the results due to the proprety, finalValue.",
273
+ "formula": "tblCreditContFactor(, , bureauRiskCat)",
274
+ "finalValue": []
275
+ }
276
+ }
277
+ }
278
+ }
@@ -0,0 +1,114 @@
1
+ {
2
+ "flowName": "ds-risk-analysis-flow",
3
+ "comment": "Data Mining Risk Analysis Decision Flow: This example includes two stages, the MLR-SIM-Stage and the Summarization Stage. In the first stage, data is imported from an outside data source and then partitioned. Next, a linear regression estimator is created with synthetic data generation. Lastly, a model is fit to the training partition using the linear regression estimator (with synthetic data generation) and that model is used to score the training partition. The 2nd stage of the decision flow accepts the predictions from the first stage as input parameters. Then the summarization transformer is applied to the actual imported data and the synthetically generated data.",
4
+ "modelType": "flow",
5
+ "mlr-sim-stage": {
6
+ "comment": "This stage imports data from an outside source, partitions the data, creates a linear regression estimator with synthetic data generation turned on, fits a LR model to the data and then uses that model to score the training partition.",
7
+ "modelName": "mlr-sim",
8
+ "datasources": {
9
+ "comment": "Control the import and export of data to outside data sources using the datasources section.",
10
+ "my-train-src": {
11
+ "comment": "In this example, data is imported from bh-scale-reg.txt and assigned to the my-train-src datasource.",
12
+ "type": "csv",
13
+ "connection": "bh-scale-reg.txt"
14
+ }
15
+ },
16
+ "datasets": {
17
+ "comment": "Binds a datasource to a dataset using the datasets section. ",
18
+ "my-train-data": {
19
+ "comment": "The my-train-src datasource is bound to the my-train-data dataset.",
20
+ "binding": "my-train-src",
21
+ "targetCol": "MEDV"
22
+ }
23
+ },
24
+ "estimator": {
25
+ "comment": "Use the estimator section to setup estimator(s).",
26
+ "mlr-estimator": {
27
+ "comment": "Multiple linear regression estimator with synthetic data generation turned on by adding 'simulation' for the estimator. ",
28
+ "type": "regression",
29
+ "algorithm": "linearRegression",
30
+ "parameters": {
31
+ "fitIntercept": true
32
+ },
33
+ "simulation": {
34
+ "metalogAuto": true,
35
+ "useMinMaxAsBounds": true,
36
+ "correlationType": "RANK",
37
+ "sampleSize": 506,
38
+ "randomSeed": 12345,
39
+ "expression": "IF(CRIM<10, MEDV, 2*MEDV)"
40
+ }
41
+ }
42
+ },
43
+ "actions": {
44
+ "comment": "Use the actions section to fit a model to a dataset and then use that model to score new data.",
45
+ "mlr-model": {
46
+ "comment": "This action fits the linear regression model, mlr-estimator, to the my-train-data dataset. Since synthetic data generation is turned on, synthetic data statistics are asked to be returned in the results under 'evaluations'. For a complete list of synthetic data output, click Help -- Defining Your Data Mining Model -- Synthetic Data Generator Example.",
47
+ "data": "my-train-data",
48
+ "estimator": "mlr-estimator",
49
+ "action": "fit",
50
+ "evaluations": [ "simulationLog", "simulationPrediction", "simulationData", "simulationExpression" ]
51
+ },
52
+ "training": {
53
+ "comment": "This action scores the my-train-data dataset using the fitted linear regression model, mlr-model. The predicted values plus output for the simulation expression (see 'expression': 'IF(CRIM<10, MEDV, 2*MEDV)') will be returned in the results. Results from the 1st stage will not be returned unless keep-intermediate-results = true under Select Query Parameters (in the Properties pane).",
54
+ "data": "my-train-data",
55
+ "fittedModel": "mlr-model",
56
+ "action": "predict",
57
+ "evaluations": [ "prediction", "trainingExpression" ]
58
+ }
59
+ }
60
+ },
61
+ "summarization-stage": {
62
+ "comment": "The second stage accepts input from the 1st stage and then applies the summarization transformer to the predicted values and the synthetically generated data. ",
63
+ "modelName": "summarization",
64
+ "inputParameters": {
65
+ "comment": "The second stage accepts the predicted values from the training and synthetic data plus output related to the expression as applied to both the training and synthetic data. ",
66
+ "train-prediction": {
67
+ "value": "mlr-sim-stage.training.prediction"
68
+ },
69
+ "train-expression": {
70
+ "value": "mlr-sim-stage.training.trainingExpression"
71
+ },
72
+ "sim-prediction": {
73
+ "value": "mlr-sim-stage.mlr-model.simulationPrediction"
74
+ },
75
+ "sim-expression": {
76
+ "value": "mlr-sim-stage.mlr-model.simulationExpression"
77
+ }
78
+ },
79
+ "transformer": {
80
+ "comment": "The second stage sets up a new transformer, summarizer, which will perform data summarization allowing a user to obtain statistics, percentiles and six sigma metrics.",
81
+ "summarizer": {
82
+ "type": "transformation",
83
+ "algorithm": "summarization"
84
+ }
85
+ },
86
+ "actions": {
87
+ "comment": "The second stage applies the transformer to the training partition, the synthetic data and to the output from the expression as applied to both the training partition and the synthetic data.",
88
+ "train-prediction-summary": {
89
+ "comment": "This action generates a data summarization on the predicted scores for the actual data, the training partition. In respose, the basic and advanced summary information is requested as well as the six sigma metrics, percentiles and histogram info.",
90
+ "data": "train-prediction",
91
+ "action": "transform",
92
+ "evaluations": [ "summary", "advancedSummary", "sixSigma", "percentiles", "histogram" ]
93
+ },
94
+ "train-expression-summary": {
95
+ "comment": "This action generates a data summarization on the results of the expression, IF(CRIM<10, MEDV, 2*MEDV), when applied to the actual data. In respose, the basic and advanced summary information is requested as well as the six sigma metrics, percentiles and histogram info.",
96
+ "data": "train-expression",
97
+ "action": "transform",
98
+ "evaluations": [ "summary", "advancedSummary", "sixSigma", "percentiles", "histogram" ]
99
+ },
100
+ "sim-prediction-summary": {
101
+ "comment": "This action generates a data summarization on the scores from the synthetic data. In respose, the basic and advanced summary information is requested as well as the six sigma metrics, percentiles and histogram info.",
102
+ "data": "sim-prediction",
103
+ "action": "transform",
104
+ "evaluations": [ "summary", "advancedSummary", "sixSigma", "percentiles", "histogram" ]
105
+ },
106
+ "sim-expression-summary": {
107
+ "comment": "This action generates a data summarization on the results of the expression, IF(CRIM<10, MEDV, 2*MEDV), as applied to the synthetic data. In respose, the basic and advanced summary information is requested as well as the six sigma metrics, percentiles and histogram info.",
108
+ "data": "sim-expression",
109
+ "action": "transform",
110
+ "evaluations": [ "summary", "advancedSummary", "sixSigma", "percentiles", "histogram" ]
111
+ }
112
+ }
113
+ }
114
+ }
@@ -0,0 +1,160 @@
1
+ {
2
+ "flowName": "optSimWorkflow",
3
+ "flowDescription": "This decision flow is made up of two stages, an optimization stage and a simulation stage. \nThe optimization stage solves an optimization model that selects an optimal mix of capital improvement projects. Afterwards, the simulation stage then runs a simulation. To view the contents of the decision flow, click the Show RASON Editor icon on the top right of the Editor grid. \nTo run, simply POST the model by clicking the POST icon (cloud icon), then solve the flow by clicking the down arrow next to the play button icon and select Solve. Click Help on the RASON ribbon for more information on posting and solving RASON Decision Flows.",
4
+ "modelType": "flow",
5
+ "optStage": {
6
+ "comment": "The first stage solves a stochastic optimization model similiar to the ProjectSelect example under Examples - Optimization - Optimization with Uncertainty. Recall that the goal in this example is to select from 8 investment projects that will maximize the expected cash flow subject to a budget constraint of $1.5M. This stage transforms the stochastic model (model containing uncertainty) into a linear model using the robustCounterpart method.",
7
+ "modelName": "optModel",
8
+ "modelSettings": {
9
+ "comment": "Use 'transformStochastic':'robustCounterpart' to determine if an attempt is made to transform your optimization model with uncertainty into a conventional optimization model without uncertainty: either the Deterministic Equivalent model (as used in stochastic linear programming), or a Robust Counterpart model (as used in robust optimization). The result of a successful transformation is a conventional linear programming model, but with considerably more decision variables and constraints than the original model. For more information on this option, see the RASON Reference Guide downloadable by clicking the Help tab on the RASON ribbon. The option 'numTrials' sets the number of trials to 100.",
10
+ "transformStochastic": "robustCounterpart",
11
+ "numTrials": 100
12
+ },
13
+ "engineSettings": {
14
+ "comment": "Setting the random number seed to a nonzero value (any number of your choice is OK) ensures that the same sequence of random numbers is used for each simulation. When the seed is zero, the random number generator is initialized from the system clock, so the sequence of random numbers will be different in each simulation. If you need the results from one simulation to another to be strictly comparable, you should set the seed. You can specify a random seed for each uncertain variable if you wish (in the uncertainVariables section) by including the PsiSeed() property function as an argument to the PSI Distribution function formula for that variable. The seed value you set using the model option randomSeed affects only uncertain variables that do not have PsiSeed() property functions.",
15
+ "randomSeed": 1
16
+ },
17
+ "variables": {
18
+ "comment": "These are the decision variables in the model. There are 8 as given by the dimensions property. The type property sets all 8 variables to binary or 0,1 variables. Each variable represents an investment project. A 1 will indicate if that investment should be selected while 0 indicates that the investment should not be selected. The variable initial values, final values and dual values will be returned in the results due to the presence of the three properties, initalValue, finalValue and dualValue, respectively.",
19
+ "x": {
20
+ "dimensions": [ 8 ],
21
+ "type": "binary",
22
+ "initialValue": [],
23
+ "finalValue": [],
24
+ "dualValue": []
25
+ }
26
+ },
27
+ "uncertainVariables": {
28
+ "comment": "These are the uncertain variables in the model. There are 16: 8 C varaibles and 8 d variables. The 8 c variables contain the probable cash flow from each investment. The 8 d variables use the PsiBinomial distribution to model the investments chance of success which will be 0 or 100%.",
29
+ "c": {
30
+ "comment": "Creates the C array of size 8. Notice that the elements of the c array are different distributions. They all use the PsiTriangular distribution but each has it's own unique parameters.",
31
+ "dimensions": [ 8 ]
32
+ },
33
+ "c[1]": {
34
+ "comment": "Uses the PsiTriangular distribution to model the expected cash flow for investment project #1.",
35
+ "formula": "PsiTriangular(400000, 500000, 900000)"
36
+ },
37
+ "c[2]": {
38
+ "comment": "Uses the PsiTriangular distribution to model the expected cash flow for investment project #2.",
39
+ "formula": "PsiTriangular(500000, 750000, 1250000)"
40
+ },
41
+ "c[3]": {
42
+ "comment": "Uses the PsiTriangular distribution to model the expected cash flow for investment project #3.",
43
+ "formula": "PsiTriangular(500000, 1000000,1500000)"
44
+ },
45
+ "c[4]": {
46
+ "comment": "Uses the PsiTriangular distribution to model the expected cash flow for investment project #4.",
47
+ "formula": "PsiTriangular(400000, 600000, 900000)"
48
+ },
49
+ "c[5]": {
50
+ "comment": "Uses the PsiTriangular distribution to model the expected cash flow for investment project #5.",
51
+ "formula": "PsiTriangular(250000, 500000, 750000)"
52
+ },
53
+ "c[6]": {
54
+ "comment": "Uses the PsiTriangular distribution to model the expected cash flow for investment project #6.",
55
+ "formula": "PsiTriangular(300000, 500000, 600000)"
56
+ },
57
+ "c[7]": {
58
+ "comment": "Uses the PsiTriangular distribution to model the expected cash flow for investment project #7.",
59
+ "formula": "PsiTriangular(200000, 450000, 700000)"
60
+ },
61
+ "c[8]": {
62
+ "comment": "Uses the PsiTriangular distribution to model the expected cash flow for investment project #8.",
63
+ "formula": "PsiTriangular(400000, 500000, 700000)"
64
+ },
65
+ "d": {
66
+ "comment": "Creates the d array of size 8. This array contains the uncertain variables that model each project's success. Since each element is the same, all can be supplied at one time using the formula property.",
67
+ "dimensions": [ 8 ],
68
+ "formula": "PsiBinomial(1, 0.9)"
69
+ }
70
+ },
71
+ "data": {
72
+ "comment": "Use the data section to organize your constant data parameters.",
73
+ "f": {
74
+ "comment": "These are the initial investments for each of the 8 prospective projects.",
75
+ "value": [ 325000, 450000, 550000, 300000, 150000, 250000, 150000, 325000 ]
76
+ }
77
+ },
78
+ "formulas": {
79
+ "comment": "Use the formulas section to organize your intermediate calculations for use in the constraints or objective function.",
80
+ "cash": {
81
+ "comment": "Calculates the expected cash flow from each project. For example cash[1] = (c[1] * d[1] - 325000) * x[1] This formula will be maximized in the objective fuction below.",
82
+ "formula": "sumproduct(c * d - f, x)"
83
+ }
84
+ },
85
+ "constraints": {
86
+ "comment": "These are the constraints in the model. There is only 1. This constraint ensures that the budget of $1.5M is not exceeded by multiplying the initial investment by the decision variables or 325000 * x[1] + 450000 * x[2] + etc.",
87
+ "invest": {
88
+ "formula": "sumproduct(f, x)",
89
+ "upper": 1500000
90
+ }
91
+ },
92
+ "objective": {
93
+ "comment": "The objective is maximizing the expected value of the cash flow, which is calculated as 'cash' in the formulas section. Since the finalValue property is present, the final value of the objective will be present in the results. The property 'chanceType' sets the objective to the expected value. This is required since this model contains uncertainty. ",
94
+ "totalObjective": {
95
+ "type": "maximize",
96
+ "formula": "cash",
97
+ "chanceType": "ExpVal",
98
+ "finalValue": []
99
+ }
100
+ }
101
+ },
102
+ "simStage": {
103
+ "comment": "This stage receives the final variable values from the first stage and then runs a simulation.",
104
+ "modelName": "simModel",
105
+ "inputParameters": {
106
+ "comment": "The final decision variables from the optimization (1st) stage, are used as input parameters to this stage.",
107
+ "x": {
108
+ "value": "optStage.x.finalValue"
109
+ }
110
+ },
111
+ "uncertainVariables": {
112
+ "comment": "These are the same uncertain variables from the optimization (1st) stage. ",
113
+ "c": {
114
+ "dimensions": [ 8 ]
115
+ },
116
+ "c[1]": {
117
+ "formula": "PsiTriangular(400000, 500000, 900000)"
118
+ },
119
+ "c[2]": {
120
+ "formula": "PsiTriangular(500000, 750000, 1250000)"
121
+ },
122
+ "c[3]": {
123
+ "formula": "PsiTriangular(500000, 1000000,1500000)"
124
+ },
125
+ "c[4]": {
126
+ "formula": "PsiTriangular(400000, 600000, 900000)"
127
+ },
128
+ "c[5]": {
129
+ "formula": "PsiTriangular(250000, 500000, 750000)"
130
+ },
131
+ "c[6]": {
132
+ "formula": "PsiTriangular(300000, 500000, 600000)"
133
+ },
134
+ "c[7]": {
135
+ "formula": "PsiTriangular(200000, 450000, 700000)"
136
+ },
137
+ "c[8]": {
138
+ "formula": "PsiTriangular(400000, 500000, 700000)"
139
+ },
140
+ "d": {
141
+ "dimensions": [ 8 ],
142
+ "formula": "PsiBinomial(1, 0.9)",
143
+ "mean": []
144
+ }
145
+ },
146
+ "data": {
147
+ "comment": "These are the initial investment values from the 1st stage.",
148
+ "f": {
149
+ "value": [ 325000, 450000, 550000, 300000, 150000, 250000, 150000, 325000 ]
150
+ }
151
+ },
152
+ "uncertainFunctions": {
153
+ "cash": {
154
+ "comment": "This is the same cash formula as calculated in the optimization (1st) stage. ",
155
+ "formula": "sumproduct(c * d - f, x)",
156
+ "mean": []
157
+ }
158
+ }
159
+ }
160
+ }