@frontlinesystems/rason-mcp-server 2026.5.0 → 2026.5.1

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 -35
  2. package/README.md +1 -1
  3. package/examples/EXAMPLES_REFERENCE.md +128 -128
  4. package/examples/calculation/DMNExamples/DMN Box Fun with typeDef result.json +53 -53
  5. package/examples/calculation/DMNExamples/DMN Context example.json +69 -69
  6. package/examples/calculation/DMNExamples/DMN DT with typeDef result.json +43 -43
  7. package/examples/calculation/DMNExamples/FEEL Date Time example.json +28 -28
  8. package/examples/calculation/DMNExamples/FEEL For iteration example.json +66 -66
  9. package/examples/calculation/DMNExamples/FEEL For with two indices.json +15 -15
  10. package/examples/calculation/DMNExamples/FEEL For with typeDef result.json +88 -88
  11. package/examples/calculation/DMNExamples/FEEL If Then Else example.json +25 -25
  12. package/examples/calculation/DMNExamples/FEEL List example.json +37 -37
  13. package/examples/calculation/DMNExamples/FEEL List operator.json +17 -17
  14. package/examples/calculation/DMNExamples/FEEL List with typeDef collection.json +36 -36
  15. package/examples/calculation/DMNExamples/FEEL Some or Every example.json +65 -65
  16. package/examples/calculation/DecisionTables/DT Datasource example.json +52 -52
  17. package/examples/calculation/DecisionTables/DT Date and Time examples.json +91 -91
  18. package/examples/calculation/DecisionTables/DT Expression example.json +32 -32
  19. package/examples/calculation/DecisionTables/DT Hit Policy examples.json +136 -136
  20. package/examples/calculation/DecisionTables/DT Loan Recommend model.json +81 -81
  21. package/examples/calculation/DecisionTables/DT Loan Strategy Model and Predictive CSV-XML.json +218 -218
  22. package/examples/calculation/DecisionTables/DT Loan Strategy model and Datasource.json +286 -286
  23. package/examples/calculation/DecisionTables/DT Loan Strategy model and Predictive.json +203 -203
  24. package/examples/calculation/DecisionTables/DT Loan Strategy model by scratch.json +214 -214
  25. package/examples/calculation/DecisionTables/DT Output Order example.json +39 -39
  26. package/examples/calculation/DecisionTables/DT Unique example.json +38 -38
  27. package/examples/calculation/TypeDefinitions/TypeDefCF.json +64 -64
  28. package/examples/calculation/TypeDefinitions/TypeDefDT.json +57 -57
  29. package/examples/datamining/AffinityAnalysis/AssociationRules.json +51 -51
  30. package/examples/datamining/Classification/DecisionTree.json +90 -90
  31. package/examples/datamining/Classification/DiscriminantAnalysis.json +81 -81
  32. package/examples/datamining/Classification/Ensembles/Bagging.json +66 -66
  33. package/examples/datamining/Classification/Ensembles/Boosting.json +67 -67
  34. package/examples/datamining/Classification/Ensembles/RandomTrees.json +91 -91
  35. package/examples/datamining/Classification/FindBestModel.json +86 -86
  36. package/examples/datamining/Classification/LogisticRegression.json +82 -82
  37. package/examples/datamining/Classification/NaiveBayes.json +78 -78
  38. package/examples/datamining/Classification/NearestNeighbors.json +84 -84
  39. package/examples/datamining/Classification/NeuralNetwork.json +92 -92
  40. package/examples/datamining/Clustering/Hierarchical.json +54 -54
  41. package/examples/datamining/Clustering/KMeans.json +71 -71
  42. package/examples/datamining/DataSources/DelimitedFile.json +49 -49
  43. package/examples/datamining/DataSources/JSONFile.json +49 -49
  44. package/examples/datamining/DataSources/MSAccessDatabase.json +49 -49
  45. package/examples/datamining/DataSources/MSExcelTable.json +50 -50
  46. package/examples/datamining/DataSources/MSSQLDatabase.json +49 -49
  47. package/examples/datamining/DataSources/ODATATable.json +49 -49
  48. package/examples/datamining/DataSources/ODBCDatabase.json +49 -49
  49. package/examples/datamining/FeatureSelection/LinearWrapping.json +53 -53
  50. package/examples/datamining/FeatureSelection/LogisticWrapping.json +56 -56
  51. package/examples/datamining/FeatureSelection/Univariate.json +78 -78
  52. package/examples/datamining/Regression/DecisionTree.json +82 -82
  53. package/examples/datamining/Regression/Ensembles/Bagging.json +62 -62
  54. package/examples/datamining/Regression/Ensembles/Boosting.json +62 -62
  55. package/examples/datamining/Regression/Ensembles/RandomTrees.json +78 -78
  56. package/examples/datamining/Regression/FindBestModel.json +86 -86
  57. package/examples/datamining/Regression/LinearRegression.json +124 -124
  58. package/examples/datamining/Regression/NearestNeighbors.json +77 -77
  59. package/examples/datamining/Regression/NeuralNetwork.json +82 -82
  60. package/examples/datamining/Scoring/JSONClassifier.json +62 -62
  61. package/examples/datamining/Scoring/JSONClassifierNN.json +62 -62
  62. package/examples/datamining/Scoring/JSONClusterizer.json +37 -37
  63. package/examples/datamining/Scoring/JSONForecaster.json +49 -49
  64. package/examples/datamining/Scoring/JSONLinearRegression.json +56 -56
  65. package/examples/datamining/Scoring/JSONPCA.json +41 -41
  66. package/examples/datamining/Scoring/JSONRegressor.json +56 -56
  67. package/examples/datamining/Scoring/JSONTransformer.json +38 -38
  68. package/examples/datamining/Scoring/PMMLClassifier.json +42 -42
  69. package/examples/datamining/Scoring/PMMLForecaster.json +43 -43
  70. package/examples/datamining/Scoring/PMMLRegressor.json +38 -38
  71. package/examples/datamining/Scoring/PMMLTransformer.json +38 -38
  72. package/examples/datamining/Simulation/LinearRegressionSimulation.json +117 -117
  73. package/examples/datamining/Simulation/SyntheticDataGeneration.json +108 -108
  74. package/examples/datamining/Simulation/pmml-risk-scoring.json +62 -62
  75. package/examples/datamining/Summarizer/Summarization.json +54 -54
  76. package/examples/datamining/TextMining/LatentSemanticAnalysis.json +51 -51
  77. package/examples/datamining/TextMining/TfIdf-FileData.json +65 -65
  78. package/examples/datamining/TextMining/TfIdf-InlineData.json +55 -55
  79. package/examples/datamining/TimeSeries/AddHoltWinters.json +79 -79
  80. package/examples/datamining/TimeSeries/Arima.json +74 -74
  81. package/examples/datamining/TimeSeries/DoubleExponential.json +65 -65
  82. package/examples/datamining/TimeSeries/Exponential.json +64 -64
  83. package/examples/datamining/TimeSeries/LagAnalysis.json +48 -48
  84. package/examples/datamining/TimeSeries/MovingAverage.json +65 -65
  85. package/examples/datamining/TimeSeries/MulHoltWinters.json +65 -65
  86. package/examples/datamining/TimeSeries/NoTrendHoltWinters.json +65 -65
  87. package/examples/datamining/Transformation/Binning.json +69 -69
  88. package/examples/datamining/Transformation/CanonicalVariateAnalysis.json +47 -47
  89. package/examples/datamining/Transformation/CategoryReduction.json +51 -51
  90. package/examples/datamining/Transformation/Factorization.json +50 -50
  91. package/examples/datamining/Transformation/MissingDataHandling.json +83 -83
  92. package/examples/datamining/Transformation/OneHotEncoding-DataInline.json +54 -54
  93. package/examples/datamining/Transformation/OneHotEncoding-DatainFile.json +48 -48
  94. package/examples/datamining/Transformation/PartitionTimeSeries.json +48 -48
  95. package/examples/datamining/Transformation/Partitioning-DF.json +72 -72
  96. package/examples/datamining/Transformation/Partitioning.json +46 -46
  97. package/examples/datamining/Transformation/PartitioningWithOversampling-DF.json +65 -65
  98. package/examples/datamining/Transformation/PartitioningWithOversampling.json +44 -44
  99. package/examples/datamining/Transformation/PrincipalComponentsAnalysis.json +52 -52
  100. package/examples/datamining/Transformation/Rescaling.json +67 -67
  101. package/examples/datamining/Transformation/Sampling.json +43 -43
  102. package/examples/datamining/Transformation/StratifiedSampling.json +46 -46
  103. package/examples/flow/SQLServerTransform.json +260 -260
  104. package/examples/flow/dm-calc-pipeline.json +277 -277
  105. package/examples/flow/dm-pipeline-simulation.json +113 -113
  106. package/examples/flow/opt-sim-pipeline.json +159 -159
  107. package/examples/flow/sim-dm-pipeline.json +106 -106
  108. package/examples/flow/sim-sim-pipeline.json +136 -136
  109. package/examples/index.json +4678 -4678
  110. package/examples/{Optimization → optimization}/Conic/AirlineHubConic.json +111 -111
  111. package/examples/{Optimization → optimization}/Conic/AirlineHubConic2.json +108 -108
  112. package/examples/{Optimization → optimization}/Conic/AirlineHubConic3.json +111 -111
  113. package/examples/{Optimization → optimization}/Conic/AirlineHubConic4.json +99 -99
  114. package/examples/{Optimization → optimization}/Conic/AirlineHubConic5.json +101 -101
  115. package/examples/{Optimization → optimization}/DataBinding/ProductMixCsv.json +81 -81
  116. package/examples/{Optimization → optimization}/DataBinding/ProductMixCsv4.json +96 -96
  117. package/examples/{Optimization → optimization}/DataBinding/ProductMixExcel.json +73 -73
  118. package/examples/{Optimization → optimization}/DataBinding/ProductMixExcel1.json +86 -86
  119. package/examples/{Optimization → optimization}/DataBinding/ProductMixExcel11.json +108 -108
  120. package/examples/{Optimization → optimization}/DataBinding/ProductMixExcel2.json +77 -77
  121. package/examples/{Optimization → optimization}/DataBinding/ProductMixTab.json +89 -89
  122. package/examples/{Optimization → optimization}/DataBinding/ProductMixTab1.json +73 -73
  123. package/examples/{Optimization → optimization}/DataBinding/ProductMixTab2.json +77 -77
  124. package/examples/{Optimization → optimization}/Linear/Inventory.json +199 -199
  125. package/examples/{Optimization → optimization}/Linear/Matop.json +119 -119
  126. package/examples/{Optimization → optimization}/Linear/ProductMix.json +97 -97
  127. package/examples/{Optimization → optimization}/Linear/ProductMix2.json +72 -72
  128. package/examples/{Optimization → optimization}/Linear/ProductMix3.json +49 -49
  129. package/examples/{Optimization → optimization}/Linear/ProductMix4.json +56 -56
  130. package/examples/{Optimization → optimization}/Linear/ProductMixCsv1.json +106 -106
  131. package/examples/{Optimization → optimization}/Linear/ProductMixCsv2.json +106 -106
  132. package/examples/{Optimization → optimization}/Linear/ProductMixSQL11.json +82 -82
  133. package/examples/{Optimization → optimization}/Linear/Rowop.json +126 -126
  134. package/examples/{Optimization → optimization}/NonLinear/AirlineHub.json +63 -63
  135. package/examples/{Optimization → optimization}/NonLinear/AirlineHub2.json +47 -47
  136. package/examples/{Optimization → optimization}/NonLinear/AirlineHub3.json +47 -47
  137. package/examples/{Optimization → optimization}/NonSmooth/Inventory2.json +159 -159
  138. package/examples/{Optimization → optimization}/Quadratic/PortfolioOpt.json +55 -55
  139. package/examples/{Optimization → optimization}/Quadratic/PortfolioOpt2.json +65 -65
  140. package/examples/{Optimization → optimization}/WithUncertainty/GasCompanyChance.json +78 -78
  141. package/examples/{Optimization → optimization}/WithUncertainty/GasCompanyRecourse.json +78 -78
  142. package/examples/{Optimization → optimization}/WithUncertainty/ProjectSelect.json +77 -77
  143. package/examples/{Optimization → optimization}/WithUncertainty/ProjectSelect2.json +81 -81
  144. package/examples/{Optimization → optimization}/WithUncertainty/ProjectSelect3.json +84 -84
  145. package/examples/{Optimization → optimization}/WithUncertainty/ProjectSelect4.json +74 -74
  146. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/DataFiltering/ListwithFilter.json +52 -52
  147. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ProductMix5.json +57 -57
  148. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/compoundWhileStatement.json +35 -35
  149. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ifThenElseStatement.json +33 -33
  150. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/nestedLoop.json +25 -25
  151. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/ParallelArray.json +47 -47
  152. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/indexedArray.json +69 -69
  153. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/nonParallelArray.json +49 -49
  154. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/sumAggregateExample.json +337 -337
  155. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/tsp.json +61 -61
  156. package/examples/rason-features/BoxIterators/Box_Fun_Loop_Iter_Sim_RASON.json +190 -190
  157. package/examples/rason-features/BoxIterators/Box_Fun_Loop_Sim_RASON.json +75 -75
  158. package/examples/rason-features/BoxIterators/Box_Fun_Sim_RASON.json +108 -108
  159. package/examples/rason-features/BoxIterators/Box_Iter_SIM_RASON.json +68 -68
  160. package/examples/rason-features/BoxIterators/Box_Iterator_Calc_Loop.json +183 -183
  161. package/examples/rason-features/BoxIterators/Box_Iterator_with_typeDef_partial.json +79 -79
  162. package/examples/rason-features/BoxLambdaExamples/BoxFunOptimize.json +154 -154
  163. package/examples/rason-features/BoxLambdaExamples/BoxFunSimulate.json +118 -118
  164. package/examples/rason-features/BoxLambdaExamples/LambdaFunOptimize.json +142 -142
  165. package/examples/rason-features/BoxLambdaExamples/LambdaFunSimulate.json +81 -81
  166. package/examples/rason-features/ReferenceGuide/RGFirehouseLocation.json +69 -69
  167. package/examples/rason-features/ReferenceGuide/RGFirehouseLocationConic.json +113 -113
  168. package/examples/rason-features/ReferenceGuide/RGProductMixCsv1.json +107 -107
  169. package/examples/rason-features/ReferenceGuide/RGProductMixExcel11.json +117 -117
  170. package/examples/rason-features/ReferenceGuide/RGProductMixSQL11.json +108 -108
  171. package/examples/rason-features/UserGuide/UGAirlineHubCSV.json +67 -67
  172. package/examples/rason-features/UserGuide/UGForecast.json +50 -50
  173. package/examples/rason-features/UserGuide/UGProductMix1.json +48 -48
  174. package/examples/rason-features/UserGuide/UGProductMix2.json +48 -48
  175. package/examples/rason-features/UserGuide/UGProductMixTab1.json +67 -67
  176. package/examples/rason-features/UserGuide/UGProductMixTab2.json +76 -76
  177. package/examples/rason-features/UserGuide/UGProductMixTab3.json +66 -66
  178. package/examples/rason-features/UserGuide/UGProductMixTab4.json +70 -70
  179. package/examples/rason-features/UserGuide/UGProductMixTab5.json +67 -67
  180. package/examples/rason-features/UserGuide/UGProjectSelect0.json +91 -91
  181. package/examples/rason-features/UserGuide/UGProjectSelect1.json +74 -74
  182. package/examples/rason-features/UserGuide/UGProjectSelect2.json +74 -74
  183. package/examples/rason-features/UserGuide/UGYieldManagement1.json +61 -61
  184. package/examples/rason-features/UserGuide/UGYieldManagement2.json +61 -61
  185. package/examples/rason-features/UserGuide/UGYieldManagement3.json +63 -63
  186. package/examples/{Simulation → simulation}/CandyStoreSalesUsingSIP.json +147 -147
  187. package/examples/{Simulation → simulation}/CollegeFundGrowth1.json +423 -423
  188. package/examples/{Simulation → simulation}/CollegeFundGrowth1SIPModel.json +27 -27
  189. package/examples/{Simulation → simulation}/CollegeFundGrowth2.json +415 -415
  190. package/examples/{Simulation → simulation}/CollegeFundGrowthSIP.json +401 -401
  191. package/examples/{Simulation → simulation}/GBMSimulationModel.json +236 -236
  192. package/examples/{Simulation → simulation}/YieldManagement(Sim).json +69 -69
  193. package/examples/{Simulation → simulation}/YieldManagement2(Sim).json +72 -72
  194. package/out/index.cjs +38 -38
  195. package/package.json +2 -2
@@ -1,67 +1,67 @@
1
- {
2
- "modelName": "UGProductMixTable3",
3
- "modelDescription": "RASON Product Mix Example: This example solves the same model as UGProductMixTable1, except that this example passes a SPARSE table (as in UGProductMixTable2) and uses the sortIndexCols property within the parts table.",
4
- "modelType": "optimization",
5
- "indexSets": {
6
- "part": {
7
- "value": ["chas", "tube", "cone", "psup", "elec"]
8
- },
9
- "prod": {
10
- "value": ["tv", "stereo", "speaker"]
11
- }
12
- },
13
- "data": {
14
- "parts": {
15
- "comment": "If the sortIndexCols (or sort) property is used, all indexCols will be sorted alphabetically. (Note: The properties sort and sortIndexCols perform the same function.) Otherwise, the table will be sorted as entered. In this example, the order for the prod indexCol will be: speaker, stereo, tv. While the order for the part indexCol will be: chas, cone, elec, psup, tube.",
16
- "indexCols": ["part", "prod"],
17
- "sortIndexCols": true,
18
- "value": [
19
- ["chas", "tv", 1],
20
- ["tube", "tv", 1],
21
- ["cone", "tv", 2],
22
- ["psup", "tv", 1],
23
- ["elec", "tv", 2],
24
- ["chas", "stereo", 1],
25
- ["cone", "stereo", 2],
26
- ["psup", "stereo", 1],
27
- ["elec", "stereo", 1],
28
- ["cone", "speaker", 1],
29
- ["elec", "speaker", 1]
30
- ]
31
- },
32
- "profits": {
33
- "comment": "Profit per unit for TVs, Steroes and Speakers.",
34
- "dimensions": ["prod"],
35
- "value": [75, 50, 35]
36
- },
37
- "inventory": {
38
- "dimensions": ["part"],
39
- "value": [450, 250, 800, 450, 600]
40
- }
41
- },
42
- "variables": {
43
- "comment":"The x array is dimensioned using the prod index.",
44
- "x": {
45
- "dimensions": ["prod"],
46
- "value": 0,
47
- "lower": 0,
48
- "finalValue": []
49
- }
50
- },
51
- "constraints": {
52
- "for(p in 'part')": {
53
- "comment": "parts[p, ] retrieves coefficients for all products containing the part, cone. parts[,'tv'] would retrieve coefficients for all parts used to build a TV. Both results are vertical arrays.",
54
- "cons[p]": {
55
- "formula": "sumproduct(parts[p, ], x)",
56
- "upper": "inventory"
57
- }
58
- }
59
- },
60
- "objective": {
61
- "total": {
62
- "formula": "sumproduct(x, profits)",
63
- "type": "maximize",
64
- "finalValue": []
65
- }
66
- }
1
+ {
2
+ "modelName": "UGProductMixTable3",
3
+ "modelDescription": "RASON Product Mix Example: This example solves the same model as UGProductMixTable1, except that this example passes a SPARSE table (as in UGProductMixTable2) and uses the sortIndexCols property within the parts table.",
4
+ "modelType": "optimization",
5
+ "indexSets": {
6
+ "part": {
7
+ "value": ["chas", "tube", "cone", "psup", "elec"]
8
+ },
9
+ "prod": {
10
+ "value": ["tv", "stereo", "speaker"]
11
+ }
12
+ },
13
+ "data": {
14
+ "parts": {
15
+ "comment": "If the sortIndexCols (or sort) property is used, all indexCols will be sorted alphabetically. (Note: The properties sort and sortIndexCols perform the same function.) Otherwise, the table will be sorted as entered. In this example, the order for the prod indexCol will be: speaker, stereo, tv. While the order for the part indexCol will be: chas, cone, elec, psup, tube.",
16
+ "indexCols": ["part", "prod"],
17
+ "sortIndexCols": true,
18
+ "value": [
19
+ ["chas", "tv", 1],
20
+ ["tube", "tv", 1],
21
+ ["cone", "tv", 2],
22
+ ["psup", "tv", 1],
23
+ ["elec", "tv", 2],
24
+ ["chas", "stereo", 1],
25
+ ["cone", "stereo", 2],
26
+ ["psup", "stereo", 1],
27
+ ["elec", "stereo", 1],
28
+ ["cone", "speaker", 1],
29
+ ["elec", "speaker", 1]
30
+ ]
31
+ },
32
+ "profits": {
33
+ "comment": "Profit per unit for TVs, Steroes and Speakers.",
34
+ "dimensions": ["prod"],
35
+ "value": [75, 50, 35]
36
+ },
37
+ "inventory": {
38
+ "dimensions": ["part"],
39
+ "value": [450, 250, 800, 450, 600]
40
+ }
41
+ },
42
+ "variables": {
43
+ "comment":"The x array is dimensioned using the prod index.",
44
+ "x": {
45
+ "dimensions": ["prod"],
46
+ "value": 0,
47
+ "lower": 0,
48
+ "finalValue": []
49
+ }
50
+ },
51
+ "constraints": {
52
+ "for(p in 'part')": {
53
+ "comment": "parts[p, ] retrieves coefficients for all products containing the part, cone. parts[,'tv'] would retrieve coefficients for all parts used to build a TV. Both results are vertical arrays.",
54
+ "cons[p]": {
55
+ "formula": "sumproduct(parts[p, ], x)",
56
+ "upper": "inventory"
57
+ }
58
+ }
59
+ },
60
+ "objective": {
61
+ "total": {
62
+ "formula": "sumproduct(x, profits)",
63
+ "type": "maximize",
64
+ "finalValue": []
65
+ }
66
+ }
67
67
  }
@@ -1,71 +1,71 @@
1
- {
2
- "modelName": "UGProductMixTable4",
3
- "modelDescription": "RASON Product Mix Example: Solves the same model as UGProductMixTable3. However, in this example, the inventory values are also entered as a table. Also, the constraints are entered in standard form, i.e. sumproduct(x,parts)-inventory <= 0",
4
- "modelType": "optimization",
5
- "indexSets": {
6
- "part": {
7
- "value": ["chas", "tube", "cone", "psup", "elec"]
8
- },
9
- "prod": {
10
- "value": ["tv", "stereo", "speaker"]
11
- }
12
- },
13
- "data": {
14
- "parts": {
15
- "indexCols": ["part", "prod"],
16
- "value": [
17
- ["chas", "tv", 1],
18
- ["elec", "stereo", 1],
19
- ["tube", "tv", 1],
20
- ["cone", "tv", 2],
21
- ["cone", "stereo", 2],
22
- ["chas", "stereo", 1],
23
- ["cone", "speaker", 1],
24
- ["psup", "tv", 1],
25
- ["psup", "stereo", 1],
26
- ["elec", "tv", 2],
27
- ["elec", "speaker", 1]
28
- ]
29
- },
30
- "profits": {
31
- "dimensions": ["prod"],
32
- "value": [75, 50, 35]
33
- },
34
- "inventory": {
35
- "comment": "In this example, the inventory values are given in a table.",
36
- "indexCols": ["part"],
37
- "value": [
38
- ["chas", 450],
39
- ["tube", 250],
40
- ["cone", 800],
41
- ["psup", 450],
42
- ["elec", 600]
43
- ]
44
- }
45
- },
46
- "variables": {
47
- "x": {
48
- "comment": "The x array is dimensioned using the prod index.",
49
- "dimensions": ["prod"],
50
- "value": 0,
51
- "lower": 0,
52
- "finalValue": []
53
- }
54
- },
55
- "constraints": {
56
- "comment": "Constraints are entered in standard form, i.e. sumproduct(parts, x) - inventory <= 0. parts[p, ] retrieves coefficients for all products containing the part, cone. parts[,'tv'] would retrieve coefficients for all parts used to build a TV. Both results are vertical arrays.",
57
- "for(p in 'part')": {
58
- "cons[p]": {
59
- "formula": "sumproduct(parts[p, ], x) - inventory[p]",
60
- "upper": 0
61
- }
62
- }
63
- },
64
- "objective": {
65
- "total": {
66
- "formula": "sumproduct(x, profits)",
67
- "type": "maximize",
68
- "finalValue": []
69
- }
70
- }
1
+ {
2
+ "modelName": "UGProductMixTable4",
3
+ "modelDescription": "RASON Product Mix Example: Solves the same model as UGProductMixTable3. However, in this example, the inventory values are also entered as a table. Also, the constraints are entered in standard form, i.e. sumproduct(x,parts)-inventory <= 0",
4
+ "modelType": "optimization",
5
+ "indexSets": {
6
+ "part": {
7
+ "value": ["chas", "tube", "cone", "psup", "elec"]
8
+ },
9
+ "prod": {
10
+ "value": ["tv", "stereo", "speaker"]
11
+ }
12
+ },
13
+ "data": {
14
+ "parts": {
15
+ "indexCols": ["part", "prod"],
16
+ "value": [
17
+ ["chas", "tv", 1],
18
+ ["elec", "stereo", 1],
19
+ ["tube", "tv", 1],
20
+ ["cone", "tv", 2],
21
+ ["cone", "stereo", 2],
22
+ ["chas", "stereo", 1],
23
+ ["cone", "speaker", 1],
24
+ ["psup", "tv", 1],
25
+ ["psup", "stereo", 1],
26
+ ["elec", "tv", 2],
27
+ ["elec", "speaker", 1]
28
+ ]
29
+ },
30
+ "profits": {
31
+ "dimensions": ["prod"],
32
+ "value": [75, 50, 35]
33
+ },
34
+ "inventory": {
35
+ "comment": "In this example, the inventory values are given in a table.",
36
+ "indexCols": ["part"],
37
+ "value": [
38
+ ["chas", 450],
39
+ ["tube", 250],
40
+ ["cone", 800],
41
+ ["psup", 450],
42
+ ["elec", 600]
43
+ ]
44
+ }
45
+ },
46
+ "variables": {
47
+ "x": {
48
+ "comment": "The x array is dimensioned using the prod index.",
49
+ "dimensions": ["prod"],
50
+ "value": 0,
51
+ "lower": 0,
52
+ "finalValue": []
53
+ }
54
+ },
55
+ "constraints": {
56
+ "comment": "Constraints are entered in standard form, i.e. sumproduct(parts, x) - inventory <= 0. parts[p, ] retrieves coefficients for all products containing the part, cone. parts[,'tv'] would retrieve coefficients for all parts used to build a TV. Both results are vertical arrays.",
57
+ "for(p in 'part')": {
58
+ "cons[p]": {
59
+ "formula": "sumproduct(parts[p, ], x) - inventory[p]",
60
+ "upper": 0
61
+ }
62
+ }
63
+ },
64
+ "objective": {
65
+ "total": {
66
+ "formula": "sumproduct(x, profits)",
67
+ "type": "maximize",
68
+ "finalValue": []
69
+ }
70
+ }
71
71
  }
@@ -1,68 +1,68 @@
1
- {
2
- "modelName": "UGProductMixTable5",
3
- "modelDescription": "RASON Product Mix Example: This example solves the same model as UGProductMixTable1 through 4. In this example, 1. the inventory values are supplied as upper bounds to each of the parts constraints, 2. The final values of the profits table will be included in the result, 3.Each constraint is entered separately.",
4
- "modelType": "optimization",
5
- "data": {
6
- "parts": {
7
- "indexCols": ["part", "prod"],
8
- "value": [
9
- ["chas", "tv", 1],
10
- ["elec", "stereo", 1],
11
- ["tube", "tv", 1],
12
- ["cone", "tv", 2],
13
- ["cone", "stereo", 2],
14
- ["chas", "stereo", 1],
15
- ["cone", "speaker", 1],
16
- ["psup", "tv", 1],
17
- ["psup", "stereo", 1],
18
- ["elec", "tv", 2],
19
- ["elec", "speaker", 1]
20
- ]
21
- },
22
- "profits": {
23
- "comment": "In this example, the profits table will be returned in the results, due to the presence of the finalValue property.",
24
- "dimensions": ["prod"],
25
- "value": [75, 50, 35],
26
- "binding": "get",
27
- "finalValue": []
28
- }
29
- },
30
- "variables": {
31
- "x": {
32
- "dimensions": ["prod"],
33
- "value": 0,
34
- "lower": 0,
35
- "finalValue": []
36
- }
37
- },
38
- "constraints": {
39
- "comment": "Each constraint is entered separately. Recall that parts['cone', ] retrieves coefficients for all products containing the part, cone, and parts[,'tv'] would retrieve coefficients for all parts used to build a TV. Both results are vertical arrays. The inventory data is supplied as an upper bound to each constraint.",
40
- "c1": {
41
- "formula": "sumproduct(parts['chas',], x)",
42
- "upper": 450
43
- },
44
- "c2": {
45
- "formula": "sumproduct(parts['tube',], x)",
46
- "upper": 250
47
- },
48
- "c3": {
49
- "formula": "sumproduct(parts['cone',], x)",
50
- "upper": 800
51
- },
52
- "c4": {
53
- "formula": "sumproduct(parts['psup',], x)",
54
- "upper": 450
55
- },
56
- "c5": {
57
- "formula": "sumproduct(parts['elec',], x)",
58
- "upper": 600
59
- }
60
- },
61
- "objective": {
62
- "total": {
63
- "formula": "sumproduct(x, profits)",
64
- "type": "maximize",
65
- "finalValue": []
66
- }
67
- }
1
+ {
2
+ "modelName": "UGProductMixTable5",
3
+ "modelDescription": "RASON Product Mix Example: This example solves the same model as UGProductMixTable1 through 4. In this example, 1. the inventory values are supplied as upper bounds to each of the parts constraints, 2. The final values of the profits table will be included in the result, 3.Each constraint is entered separately.",
4
+ "modelType": "optimization",
5
+ "data": {
6
+ "parts": {
7
+ "indexCols": ["part", "prod"],
8
+ "value": [
9
+ ["chas", "tv", 1],
10
+ ["elec", "stereo", 1],
11
+ ["tube", "tv", 1],
12
+ ["cone", "tv", 2],
13
+ ["cone", "stereo", 2],
14
+ ["chas", "stereo", 1],
15
+ ["cone", "speaker", 1],
16
+ ["psup", "tv", 1],
17
+ ["psup", "stereo", 1],
18
+ ["elec", "tv", 2],
19
+ ["elec", "speaker", 1]
20
+ ]
21
+ },
22
+ "profits": {
23
+ "comment": "In this example, the profits table will be returned in the results, due to the presence of the finalValue property.",
24
+ "dimensions": ["prod"],
25
+ "value": [75, 50, 35],
26
+ "binding": "get",
27
+ "finalValue": []
28
+ }
29
+ },
30
+ "variables": {
31
+ "x": {
32
+ "dimensions": ["prod"],
33
+ "value": 0,
34
+ "lower": 0,
35
+ "finalValue": []
36
+ }
37
+ },
38
+ "constraints": {
39
+ "comment": "Each constraint is entered separately. Recall that parts['cone', ] retrieves coefficients for all products containing the part, cone, and parts[,'tv'] would retrieve coefficients for all parts used to build a TV. Both results are vertical arrays. The inventory data is supplied as an upper bound to each constraint.",
40
+ "c1": {
41
+ "formula": "sumproduct(parts['chas',], x)",
42
+ "upper": 450
43
+ },
44
+ "c2": {
45
+ "formula": "sumproduct(parts['tube',], x)",
46
+ "upper": 250
47
+ },
48
+ "c3": {
49
+ "formula": "sumproduct(parts['cone',], x)",
50
+ "upper": 800
51
+ },
52
+ "c4": {
53
+ "formula": "sumproduct(parts['psup',], x)",
54
+ "upper": 450
55
+ },
56
+ "c5": {
57
+ "formula": "sumproduct(parts['elec',], x)",
58
+ "upper": 600
59
+ }
60
+ },
61
+ "objective": {
62
+ "total": {
63
+ "formula": "sumproduct(x, profits)",
64
+ "type": "maximize",
65
+ "finalValue": []
66
+ }
67
+ }
68
68
  }
@@ -1,92 +1,92 @@
1
- {
2
- "modelName": "UGProjectSelect0Example",
3
- "modelDescription": "RASON Example - Simulation Optimization: This example is discussed in the chapter, Defining Your Stochastic Optimization Model, within the RASON User Guide, downloadable from the Help tab. This example is a capital budgeting problem, where the projects being considered for funding have uncertain future cash flows. In this example, simulation optimization is used to find a solution using the Evolutionary Engine. Assume eight different capital projects are proposed for funding in your company. Each one has a known initial investment. Each project has a 90% chance of success, and if a project succeeds, it will have an uncertain (but positive) future cash flow. Funding all eight projects would require a total initial investment of $2.5 million, but our capital budget is only $1.5 million. Hence, we must choose a subset of the projects to fund that will maximize our expected total future cash flow, while ensuring that our total initial investment does not exceed our $1.5 million budget.",
4
- "comment": "Note that modelType is set to 'optimization', rather than 'simulation'. If modelType=simulation and POST rason.net/api/model/{nameorid}/solve is called to solve a stochastic optimization model, the workflow engine will run a simulation, only. In order to solve the model using stochastic optimization, you must specify 'modelType' = 'optimization'.",
5
- "modelType": "optimization",
6
- "modelSettings": {
7
- "comment": "When the model option simulationOptimization is set to True, the Evolutionary engine will be used to solve the model. The idea behind simulation optimization is straightforward: For each set of values for the decision variables considered by the optimizer, we perform one simulation, a compute user-specified summary measure – such as PsiMean(cash) in the Project Selection model – for the constraints and/or objective that depend on uncertainty. The optimizer uses these summary measures to decide what set of values it should try next for the decision variables – and the process is repeated. The great strength of simulation optimization is its generality – but this is also its weakness: It requires a new simulation at each step of the optimization, and because the method assumes no structure in the model, in general the number of steps can grow exponentially with the number of variables and constraints. ",
8
- "simulationOptimization": true,
9
- "numTrials": 1000
10
- },
11
- "engineSettings": {
12
- "comment": "The random seed setting is set to 1 in order to create reproducible results.",
13
- "randomSeed": 1
14
- },
15
- "variables": {
16
- "x": {
17
- "comment": "The x decision variable array will hold our 0-1 (binary) decision variables. If a variable is set to 1, the project is selected. If a variable is set to 0, the project is not selected.",
18
- "dimensions": [ 8 ],
19
- "type": "binary",
20
- "finalValue": []
21
- }
22
- },
23
- "uncertainVariables": {
24
- "comment": "To model the uncertainty in this problem, PSI functions are used that define uncertain variables with probability distributions within the uncertainVariables section. ",
25
- "successCashFlow": {
26
- "comment": "The uncertain variable, successCashFlow models the cash flow of a successful project. It is created here with 8 elements. Then the array is populated using the PsiTriangular() function, specifying a minimum, most likely and maximum cash flow for each of the 8 projects.",
27
- "dimensions": [ 8 ]
28
- },
29
- "successCashFlow[1]": {
30
- "comment": "Models cash flow for project 1.",
31
- "formula": "PsiTriangular(400000, 500000, 900000)"
32
- },
33
- "successCashFlow[2]": {
34
- "comment": "Models cash flow for project 2.",
35
- "formula": "PsiTriangular(500000, 750000, 1250000)"
36
- },
37
- "successCashFlow[3]": {
38
- "comment": "Models cash flow for project 3.",
39
- "formula": "PsiTriangular(500000, 1000000,1500000)"
40
- },
41
- "successCashFlow[4]": {
42
- "comment": "Models cash flow for project 4.",
43
- "formula": "PsiTriangular(400000, 600000, 900000)"
44
- },
45
- "successCashFlow[5]": {
46
- "comment": "Models cash flow for project 5.",
47
- "formula": "PsiTriangular(250000, 500000, 750000)"
48
- },
49
- "successCashFlow[6]": {
50
- "comment": "Models cash flow for project 6.",
51
- "formula": "PsiTriangular(300000, 500000, 600000)"
52
- },
53
- "successCashFlow[7]": {
54
- "comment": "Models cash flow for project 7.",
55
- "formula": "PsiTriangular(200000, 450000, 700000)"
56
- },
57
- "successCashFlow[8]": {
58
- "comment": "Models cash flow for project 8.",
59
- "formula": "PsiTriangular(400000, 500000, 700000)"
60
- },
61
- "successProbability": {
62
- "comment": "To model the chance of success we create the variable successProbability (within formulas) using the probability distribution, =PsiBinomial(1,0.9). On each trial, this distribution returns 1 with probability 90% and 0 with probability 10%.",
63
- "dimensions": [ 8 ],
64
- "formula": "PsiBinomial(1, 0.9)"
65
- }
66
- },
67
- "formulas": {
68
- "comment": "In formulas, cash multiplies the net cash flow from each project, expected cash flow minus the initial investment, by the x array which holds our binary decision variables.",
69
- "initialInvest": {
70
- "value": [ 325000, 450000, 550000, 300000, 150000, 250000, 150000, 325000 ]
71
- },
72
- "cash": {
73
- "formula": "sumproduct(successCashFlow * successProbability - initialInvest, x)"
74
- }
75
- },
76
- "constraints": {
77
- "comment": "Inside constraints, invest calculates the constraint that ensures that the total initial investment does not exceed $1,500,000, (initialInvest multiplied by the 0-1 decision variables in the x array).",
78
- "invest": {
79
- "formula": "sumproduct(initialInvest, x)",
80
- "upper": 1500000
81
- }
82
- },
83
- "objective": {
84
- "comment": "The objective maximizes the expected mean of cash by setting the chanceType property to ExpVal. ",
85
- "total": {
86
- "type": "maximize",
87
- "formula": "cash",
88
- "chanceType": "ExpVal",
89
- "finalValue": []
90
- }
91
- }
1
+ {
2
+ "modelName": "UGProjectSelect0Example",
3
+ "modelDescription": "RASON Example - Simulation Optimization: This example is discussed in the chapter, Defining Your Stochastic Optimization Model, within the RASON User Guide, downloadable from the Help tab. This example is a capital budgeting problem, where the projects being considered for funding have uncertain future cash flows. In this example, simulation optimization is used to find a solution using the Evolutionary Engine. Assume eight different capital projects are proposed for funding in your company. Each one has a known initial investment. Each project has a 90% chance of success, and if a project succeeds, it will have an uncertain (but positive) future cash flow. Funding all eight projects would require a total initial investment of $2.5 million, but our capital budget is only $1.5 million. Hence, we must choose a subset of the projects to fund that will maximize our expected total future cash flow, while ensuring that our total initial investment does not exceed our $1.5 million budget.",
4
+ "comment": "Note that modelType is set to 'optimization', rather than 'simulation'. If modelType=simulation and POST rason.net/api/model/{nameorid}/solve is called to solve a stochastic optimization model, the workflow engine will run a simulation, only. In order to solve the model using stochastic optimization, you must specify 'modelType' = 'optimization'.",
5
+ "modelType": "optimization",
6
+ "modelSettings": {
7
+ "comment": "When the model option simulationOptimization is set to True, the Evolutionary engine will be used to solve the model. The idea behind simulation optimization is straightforward: For each set of values for the decision variables considered by the optimizer, we perform one simulation, a compute user-specified summary measure – such as PsiMean(cash) in the Project Selection model – for the constraints and/or objective that depend on uncertainty. The optimizer uses these summary measures to decide what set of values it should try next for the decision variables – and the process is repeated. The great strength of simulation optimization is its generality – but this is also its weakness: It requires a new simulation at each step of the optimization, and because the method assumes no structure in the model, in general the number of steps can grow exponentially with the number of variables and constraints. ",
8
+ "simulationOptimization": true,
9
+ "numTrials": 1000
10
+ },
11
+ "engineSettings": {
12
+ "comment": "The random seed setting is set to 1 in order to create reproducible results.",
13
+ "randomSeed": 1
14
+ },
15
+ "variables": {
16
+ "x": {
17
+ "comment": "The x decision variable array will hold our 0-1 (binary) decision variables. If a variable is set to 1, the project is selected. If a variable is set to 0, the project is not selected.",
18
+ "dimensions": [ 8 ],
19
+ "type": "binary",
20
+ "finalValue": []
21
+ }
22
+ },
23
+ "uncertainVariables": {
24
+ "comment": "To model the uncertainty in this problem, PSI functions are used that define uncertain variables with probability distributions within the uncertainVariables section. ",
25
+ "successCashFlow": {
26
+ "comment": "The uncertain variable, successCashFlow models the cash flow of a successful project. It is created here with 8 elements. Then the array is populated using the PsiTriangular() function, specifying a minimum, most likely and maximum cash flow for each of the 8 projects.",
27
+ "dimensions": [ 8 ]
28
+ },
29
+ "successCashFlow[1]": {
30
+ "comment": "Models cash flow for project 1.",
31
+ "formula": "PsiTriangular(400000, 500000, 900000)"
32
+ },
33
+ "successCashFlow[2]": {
34
+ "comment": "Models cash flow for project 2.",
35
+ "formula": "PsiTriangular(500000, 750000, 1250000)"
36
+ },
37
+ "successCashFlow[3]": {
38
+ "comment": "Models cash flow for project 3.",
39
+ "formula": "PsiTriangular(500000, 1000000,1500000)"
40
+ },
41
+ "successCashFlow[4]": {
42
+ "comment": "Models cash flow for project 4.",
43
+ "formula": "PsiTriangular(400000, 600000, 900000)"
44
+ },
45
+ "successCashFlow[5]": {
46
+ "comment": "Models cash flow for project 5.",
47
+ "formula": "PsiTriangular(250000, 500000, 750000)"
48
+ },
49
+ "successCashFlow[6]": {
50
+ "comment": "Models cash flow for project 6.",
51
+ "formula": "PsiTriangular(300000, 500000, 600000)"
52
+ },
53
+ "successCashFlow[7]": {
54
+ "comment": "Models cash flow for project 7.",
55
+ "formula": "PsiTriangular(200000, 450000, 700000)"
56
+ },
57
+ "successCashFlow[8]": {
58
+ "comment": "Models cash flow for project 8.",
59
+ "formula": "PsiTriangular(400000, 500000, 700000)"
60
+ },
61
+ "successProbability": {
62
+ "comment": "To model the chance of success we create the variable successProbability (within formulas) using the probability distribution, =PsiBinomial(1,0.9). On each trial, this distribution returns 1 with probability 90% and 0 with probability 10%.",
63
+ "dimensions": [ 8 ],
64
+ "formula": "PsiBinomial(1, 0.9)"
65
+ }
66
+ },
67
+ "formulas": {
68
+ "comment": "In formulas, cash multiplies the net cash flow from each project, expected cash flow minus the initial investment, by the x array which holds our binary decision variables.",
69
+ "initialInvest": {
70
+ "value": [ 325000, 450000, 550000, 300000, 150000, 250000, 150000, 325000 ]
71
+ },
72
+ "cash": {
73
+ "formula": "sumproduct(successCashFlow * successProbability - initialInvest, x)"
74
+ }
75
+ },
76
+ "constraints": {
77
+ "comment": "Inside constraints, invest calculates the constraint that ensures that the total initial investment does not exceed $1,500,000, (initialInvest multiplied by the 0-1 decision variables in the x array).",
78
+ "invest": {
79
+ "formula": "sumproduct(initialInvest, x)",
80
+ "upper": 1500000
81
+ }
82
+ },
83
+ "objective": {
84
+ "comment": "The objective maximizes the expected mean of cash by setting the chanceType property to ExpVal. ",
85
+ "total": {
86
+ "type": "maximize",
87
+ "formula": "cash",
88
+ "chanceType": "ExpVal",
89
+ "finalValue": []
90
+ }
91
+ }
92
92
  }