@frontlinesystems/rason-mcp-server 2026.5.1 → 2026.5.3
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 -35
- package/examples/EXAMPLES_REFERENCE.md +128 -128
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic.json +111 -111
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic2.json +108 -108
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic3.json +111 -111
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic4.json +99 -99
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic5.json +101 -101
- package/examples/{optimization → Optimization}/DataBinding/ProductMixCsv.json +81 -81
- package/examples/{optimization → Optimization}/DataBinding/ProductMixCsv4.json +96 -96
- package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel.json +73 -73
- package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel1.json +86 -86
- package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel11.json +108 -108
- package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel2.json +77 -77
- package/examples/{optimization → Optimization}/DataBinding/ProductMixTab.json +89 -89
- package/examples/{optimization → Optimization}/DataBinding/ProductMixTab1.json +73 -73
- package/examples/{optimization → Optimization}/DataBinding/ProductMixTab2.json +77 -77
- package/examples/{optimization → Optimization}/Linear/Inventory.json +199 -199
- package/examples/{optimization → Optimization}/Linear/Matop.json +119 -119
- package/examples/{optimization → Optimization}/Linear/ProductMix.json +97 -97
- package/examples/{optimization → Optimization}/Linear/ProductMix2.json +72 -72
- package/examples/{optimization → Optimization}/Linear/ProductMix3.json +49 -49
- package/examples/{optimization → Optimization}/Linear/ProductMix4.json +56 -56
- package/examples/{optimization → Optimization}/Linear/ProductMixCsv1.json +106 -106
- package/examples/{optimization → Optimization}/Linear/ProductMixCsv2.json +106 -106
- package/examples/{optimization → Optimization}/Linear/ProductMixSQL11.json +82 -82
- package/examples/{optimization → Optimization}/Linear/Rowop.json +126 -126
- package/examples/{optimization → Optimization}/NonLinear/AirlineHub.json +63 -63
- package/examples/{optimization → Optimization}/NonLinear/AirlineHub2.json +47 -47
- package/examples/{optimization → Optimization}/NonLinear/AirlineHub3.json +47 -47
- package/examples/{optimization → Optimization}/NonSmooth/Inventory2.json +159 -159
- package/examples/{optimization → Optimization}/Quadratic/PortfolioOpt.json +55 -55
- package/examples/{optimization → Optimization}/Quadratic/PortfolioOpt2.json +65 -65
- package/examples/{optimization → Optimization}/WithUncertainty/GasCompanyChance.json +78 -78
- package/examples/{optimization → Optimization}/WithUncertainty/GasCompanyRecourse.json +78 -78
- package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect.json +77 -77
- package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect2.json +81 -81
- package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect3.json +84 -84
- package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect4.json +74 -74
- package/examples/{simulation → Simulation}/CandyStoreSalesUsingSIP.json +147 -147
- package/examples/{simulation → Simulation}/CollegeFundGrowth1.json +423 -423
- package/examples/{simulation → Simulation}/CollegeFundGrowth1SIPModel.json +27 -27
- package/examples/{simulation → Simulation}/CollegeFundGrowth2.json +415 -415
- package/examples/{simulation → Simulation}/CollegeFundGrowthSIP.json +401 -401
- package/examples/{simulation → Simulation}/GBMSimulationModel.json +236 -236
- package/examples/{simulation → Simulation}/YieldManagement(Sim).json +69 -69
- package/examples/{simulation → Simulation}/YieldManagement2(Sim).json +72 -72
- package/examples/calculation/DMNExamples/DMN Box Fun with typeDef result.json +53 -53
- package/examples/calculation/DMNExamples/DMN Context example.json +69 -69
- package/examples/calculation/DMNExamples/DMN DT with typeDef result.json +43 -43
- package/examples/calculation/DMNExamples/FEEL Date Time example.json +28 -28
- package/examples/calculation/DMNExamples/FEEL For iteration example.json +66 -66
- package/examples/calculation/DMNExamples/FEEL For with two indices.json +15 -15
- package/examples/calculation/DMNExamples/FEEL For with typeDef result.json +88 -88
- package/examples/calculation/DMNExamples/FEEL If Then Else example.json +25 -25
- package/examples/calculation/DMNExamples/FEEL List example.json +37 -37
- package/examples/calculation/DMNExamples/FEEL List operator.json +17 -17
- package/examples/calculation/DMNExamples/FEEL List with typeDef collection.json +36 -36
- package/examples/calculation/DMNExamples/FEEL Some or Every example.json +65 -65
- package/examples/calculation/DecisionTables/DT Datasource example.json +52 -52
- package/examples/calculation/DecisionTables/DT Date and Time examples.json +91 -91
- package/examples/calculation/DecisionTables/DT Expression example.json +32 -32
- package/examples/calculation/DecisionTables/DT Hit Policy examples.json +136 -136
- package/examples/calculation/DecisionTables/DT Loan Recommend model.json +81 -81
- package/examples/calculation/DecisionTables/DT Loan Strategy Model and Predictive CSV-XML.json +218 -218
- package/examples/calculation/DecisionTables/DT Loan Strategy model and Datasource.json +286 -286
- package/examples/calculation/DecisionTables/DT Loan Strategy model and Predictive.json +203 -203
- package/examples/calculation/DecisionTables/DT Loan Strategy model by scratch.json +214 -214
- package/examples/calculation/DecisionTables/DT Output Order example.json +39 -39
- package/examples/calculation/DecisionTables/DT Unique example.json +38 -38
- package/examples/calculation/TypeDefinitions/TypeDefCF.json +64 -64
- package/examples/calculation/TypeDefinitions/TypeDefDT.json +57 -57
- package/examples/datamining/AffinityAnalysis/AssociationRules.json +51 -51
- package/examples/datamining/Classification/DecisionTree.json +90 -90
- package/examples/datamining/Classification/DiscriminantAnalysis.json +81 -81
- package/examples/datamining/Classification/Ensembles/Bagging.json +66 -66
- package/examples/datamining/Classification/Ensembles/Boosting.json +67 -67
- package/examples/datamining/Classification/Ensembles/RandomTrees.json +91 -91
- package/examples/datamining/Classification/FindBestModel.json +86 -86
- package/examples/datamining/Classification/LogisticRegression.json +82 -82
- package/examples/datamining/Classification/NaiveBayes.json +78 -78
- package/examples/datamining/Classification/NearestNeighbors.json +84 -84
- package/examples/datamining/Classification/NeuralNetwork.json +92 -92
- package/examples/datamining/Clustering/Hierarchical.json +54 -54
- package/examples/datamining/Clustering/KMeans.json +71 -71
- package/examples/datamining/DataSources/DelimitedFile.json +49 -49
- package/examples/datamining/DataSources/JSONFile.json +49 -49
- package/examples/datamining/DataSources/MSAccessDatabase.json +49 -49
- package/examples/datamining/DataSources/MSExcelTable.json +50 -50
- package/examples/datamining/DataSources/MSSQLDatabase.json +49 -49
- package/examples/datamining/DataSources/ODATATable.json +49 -49
- package/examples/datamining/DataSources/ODBCDatabase.json +49 -49
- package/examples/datamining/FeatureSelection/LinearWrapping.json +53 -53
- package/examples/datamining/FeatureSelection/LogisticWrapping.json +56 -56
- package/examples/datamining/FeatureSelection/Univariate.json +78 -78
- package/examples/datamining/Regression/DecisionTree.json +82 -82
- package/examples/datamining/Regression/Ensembles/Bagging.json +62 -62
- package/examples/datamining/Regression/Ensembles/Boosting.json +62 -62
- package/examples/datamining/Regression/Ensembles/RandomTrees.json +78 -78
- package/examples/datamining/Regression/FindBestModel.json +86 -86
- package/examples/datamining/Regression/LinearRegression.json +124 -124
- package/examples/datamining/Regression/NearestNeighbors.json +77 -77
- package/examples/datamining/Regression/NeuralNetwork.json +82 -82
- package/examples/datamining/Scoring/JSONClassifier.json +62 -62
- package/examples/datamining/Scoring/JSONClassifierNN.json +62 -62
- package/examples/datamining/Scoring/JSONClusterizer.json +37 -37
- package/examples/datamining/Scoring/JSONForecaster.json +49 -49
- package/examples/datamining/Scoring/JSONLinearRegression.json +56 -56
- package/examples/datamining/Scoring/JSONPCA.json +41 -41
- package/examples/datamining/Scoring/JSONRegressor.json +56 -56
- package/examples/datamining/Scoring/JSONTransformer.json +38 -38
- package/examples/datamining/Scoring/PMMLClassifier.json +42 -42
- package/examples/datamining/Scoring/PMMLForecaster.json +43 -43
- package/examples/datamining/Scoring/PMMLRegressor.json +38 -38
- package/examples/datamining/Scoring/PMMLTransformer.json +38 -38
- package/examples/datamining/Simulation/LinearRegressionSimulation.json +117 -117
- package/examples/datamining/Simulation/SyntheticDataGeneration.json +108 -108
- package/examples/datamining/Simulation/pmml-risk-scoring.json +62 -62
- package/examples/datamining/Summarizer/Summarization.json +54 -54
- package/examples/datamining/TextMining/LatentSemanticAnalysis.json +51 -51
- package/examples/datamining/TextMining/TfIdf-FileData.json +65 -65
- package/examples/datamining/TextMining/TfIdf-InlineData.json +55 -55
- package/examples/datamining/TimeSeries/AddHoltWinters.json +79 -79
- package/examples/datamining/TimeSeries/Arima.json +74 -74
- package/examples/datamining/TimeSeries/DoubleExponential.json +65 -65
- package/examples/datamining/TimeSeries/Exponential.json +64 -64
- package/examples/datamining/TimeSeries/LagAnalysis.json +48 -48
- package/examples/datamining/TimeSeries/MovingAverage.json +65 -65
- package/examples/datamining/TimeSeries/MulHoltWinters.json +65 -65
- package/examples/datamining/TimeSeries/NoTrendHoltWinters.json +65 -65
- package/examples/datamining/Transformation/Binning.json +69 -69
- package/examples/datamining/Transformation/CanonicalVariateAnalysis.json +47 -47
- package/examples/datamining/Transformation/CategoryReduction.json +51 -51
- package/examples/datamining/Transformation/Factorization.json +50 -50
- package/examples/datamining/Transformation/MissingDataHandling.json +83 -83
- package/examples/datamining/Transformation/OneHotEncoding-DataInline.json +54 -54
- package/examples/datamining/Transformation/OneHotEncoding-DatainFile.json +48 -48
- package/examples/datamining/Transformation/PartitionTimeSeries.json +48 -48
- package/examples/datamining/Transformation/Partitioning-DF.json +72 -72
- package/examples/datamining/Transformation/Partitioning.json +46 -46
- package/examples/datamining/Transformation/PartitioningWithOversampling-DF.json +65 -65
- package/examples/datamining/Transformation/PartitioningWithOversampling.json +44 -44
- package/examples/datamining/Transformation/PrincipalComponentsAnalysis.json +52 -52
- package/examples/datamining/Transformation/Rescaling.json +67 -67
- package/examples/datamining/Transformation/Sampling.json +43 -43
- package/examples/datamining/Transformation/StratifiedSampling.json +46 -46
- package/examples/flow/SQLServerTransform.json +260 -260
- package/examples/flow/dm-calc-pipeline.json +277 -277
- package/examples/flow/dm-pipeline-simulation.json +113 -113
- package/examples/flow/opt-sim-pipeline.json +159 -159
- package/examples/flow/sim-dm-pipeline.json +106 -106
- package/examples/flow/sim-sim-pipeline.json +136 -136
- package/examples/index.json +4678 -4678
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/DataFiltering/ListwithFilter.json +52 -52
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ProductMix5.json +57 -57
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/compoundWhileStatement.json +35 -35
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ifThenElseStatement.json +33 -33
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/nestedLoop.json +25 -25
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/ParallelArray.json +47 -47
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/indexedArray.json +69 -69
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/nonParallelArray.json +49 -49
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/sumAggregateExample.json +337 -337
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/tsp.json +61 -61
- package/examples/rason-features/BoxIterators/Box_Fun_Loop_Iter_Sim_RASON.json +190 -190
- package/examples/rason-features/BoxIterators/Box_Fun_Loop_Sim_RASON.json +75 -75
- package/examples/rason-features/BoxIterators/Box_Fun_Sim_RASON.json +108 -108
- package/examples/rason-features/BoxIterators/Box_Iter_SIM_RASON.json +68 -68
- package/examples/rason-features/BoxIterators/Box_Iterator_Calc_Loop.json +183 -183
- package/examples/rason-features/BoxIterators/Box_Iterator_with_typeDef_partial.json +79 -79
- package/examples/rason-features/BoxLambdaExamples/BoxFunOptimize.json +154 -154
- package/examples/rason-features/BoxLambdaExamples/BoxFunSimulate.json +118 -118
- package/examples/rason-features/BoxLambdaExamples/LambdaFunOptimize.json +142 -142
- package/examples/rason-features/BoxLambdaExamples/LambdaFunSimulate.json +81 -81
- package/examples/rason-features/ReferenceGuide/RGFirehouseLocation.json +69 -69
- package/examples/rason-features/ReferenceGuide/RGFirehouseLocationConic.json +113 -113
- package/examples/rason-features/ReferenceGuide/RGProductMixCsv1.json +107 -107
- package/examples/rason-features/ReferenceGuide/RGProductMixExcel11.json +117 -117
- package/examples/rason-features/ReferenceGuide/RGProductMixSQL11.json +108 -108
- package/examples/rason-features/UserGuide/UGAirlineHubCSV.json +67 -67
- package/examples/rason-features/UserGuide/UGForecast.json +50 -50
- package/examples/rason-features/UserGuide/UGProductMix1.json +48 -48
- package/examples/rason-features/UserGuide/UGProductMix2.json +48 -48
- package/examples/rason-features/UserGuide/UGProductMixTab1.json +67 -67
- package/examples/rason-features/UserGuide/UGProductMixTab2.json +76 -76
- package/examples/rason-features/UserGuide/UGProductMixTab3.json +66 -66
- package/examples/rason-features/UserGuide/UGProductMixTab4.json +70 -70
- package/examples/rason-features/UserGuide/UGProductMixTab5.json +67 -67
- package/examples/rason-features/UserGuide/UGProjectSelect0.json +91 -91
- package/examples/rason-features/UserGuide/UGProjectSelect1.json +74 -74
- package/examples/rason-features/UserGuide/UGProjectSelect2.json +74 -74
- package/examples/rason-features/UserGuide/UGYieldManagement1.json +61 -61
- package/examples/rason-features/UserGuide/UGYieldManagement2.json +61 -61
- package/examples/rason-features/UserGuide/UGYieldManagement3.json +63 -63
- package/out/index.cjs +1 -1
- package/package.json +3 -2
|
@@ -1,120 +1,120 @@
|
|
|
1
|
-
{
|
|
2
|
-
"modelName": "matopExample",
|
|
3
|
-
"modelDescription": "RASON example model uses Frontline's MATOP function to solve a famous and difficult fixed-charge transportation optimization model. The optimal objective = 3712. In a fixed charge constraint, a binary variable is forced to 1 if the corresponding continuous variable is nonzero. In other words, if X >0 then Y = 1. From here the binary variable may be multiplied by a constant value to model a penalty or charge.",
|
|
4
|
-
|
|
5
|
-
"modelType": "optimization",
|
|
6
|
-
"variables": {
|
|
7
|
-
"comment": "This model includes two variable blocks, x and y. The x variable array contains 252 continuous variables. The y variable array contains 252 binary (0,1) variables.",
|
|
8
|
-
"x": {
|
|
9
|
-
"comment": "Creates x double array to hold 252 variables (14 * 18). All vars have been given an initial value of 0 using 'initial' and a lower bound of 0, using 'lower'. The final variable values will be returned in the results due to the presence of the finalValue keyword.",
|
|
10
|
-
"dimensions": [ 14, 18 ],
|
|
11
|
-
"value": 0,
|
|
12
|
-
"lower": 0,
|
|
13
|
-
"finalValue": []
|
|
14
|
-
},
|
|
15
|
-
"y": {
|
|
16
|
-
"comment": "Creates y double array to hold 252 more variables (14 * 18). All vars have been given an initial value of 0 using 'initial', a lower bound of 0, using 'lower' and an upper bound of 1 using 'upper'. The 'type' property specifies that variables in this array must be integer, or binary variables, taking on values of either 0 or 1. The final variable values will be returned in the results due to the presence of the finalValue keyword. The 'fix' constraint will ensure that if the corresponding x variable is nonzero, the corresponding y variable will be forced to 1, (i.e. if x(1,1) is > 0, y(1,1) = 1. ",
|
|
17
|
-
"dimensions": [ 14, 18 ],
|
|
18
|
-
"value": 0,
|
|
19
|
-
"lower": 0,
|
|
20
|
-
"upper": 1,
|
|
21
|
-
"type": "int",
|
|
22
|
-
"finalValue": []
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
"data": {
|
|
26
|
-
"comment": "The data section contains constant parameters utilized in the model to generate the constraints and the objective.",
|
|
27
|
-
"I": {
|
|
28
|
-
"comment": "Creates an array of size 14, all values are set to the value of 1.",
|
|
29
|
-
"dimensions": [ 14 ],
|
|
30
|
-
"value": 1
|
|
31
|
-
},
|
|
32
|
-
"J": {
|
|
33
|
-
"comment": "Creates an array of size 18, all values are set to the value of 1.",
|
|
34
|
-
"dimensions": [ 18 ],
|
|
35
|
-
"value": 1
|
|
36
|
-
},
|
|
37
|
-
"Demand": {
|
|
38
|
-
"comment": "Creates an array of size 18 holding the demand. Array dimension inferred by number of values passed for 'value'.",
|
|
39
|
-
"value": [ 6, 13, 21, 11, 20, 4, 35, 13, 20, 9, 7, 18, 14, 22, 33, 45, 11, 8 ]
|
|
40
|
-
},
|
|
41
|
-
"Supply": {
|
|
42
|
-
"comment": "Creates an array of size 14 holding the supply values. Array dimension inferred by number of values passed for 'value'.",
|
|
43
|
-
"value": [ 21, 19, 24, 10, 27, 25, 10, 16, 17, 38, 22, 33, 22, 26 ]
|
|
44
|
-
},
|
|
45
|
-
"Cost": {
|
|
46
|
-
"comment": "Creates the Cost matrix These are the Transportation costs per mile traveled.",
|
|
47
|
-
"value": [
|
|
48
|
-
[ 4, 4, 10, 3, 4, 9, 10, 9, 3, 10, 5, 10, 9, 10, 5, 8, 9, 8 ],
|
|
49
|
-
[ 7, 1, 7, 4, 6, 7, 7, 1, 4, 4, 10, 1, 7, 5, 8, 3, 3, 1 ],
|
|
50
|
-
[ 10, 10, 4, 10, 3, 2, 3, 8, 3, 7, 1, 5, 5, 6, 1, 8, 3, 8 ],
|
|
51
|
-
[ 7, 1, 1, 1, 10, 1, 7, 6, 6, 2, 5, 5, 7, 9, 6, 3, 3, 5 ],
|
|
52
|
-
[ 4, 10, 2, 1, 7, 8, 1, 2, 4, 5, 9, 2, 8, 7, 2, 8, 5, 3 ],
|
|
53
|
-
[ 3, 7, 4, 10, 8, 10, 9, 9, 6, 8, 9, 5, 5, 6, 1, 4, 9, 5 ],
|
|
54
|
-
[ 2, 7, 10, 10, 4, 10, 6, 8, 6, 6, 6, 8, 2, 3, 6, 9, 7, 5 ],
|
|
55
|
-
[ 1, 7, 10, 1, 7, 3, 1, 10, 10, 6, 2, 9, 1, 6, 5, 8, 6, 5 ],
|
|
56
|
-
[ 10, 7, 4, 1, 1, 1, 8, 4, 4, 3, 2, 4, 6, 6, 8, 3, 6, 6 ],
|
|
57
|
-
[ 4, 7, 1, 3, 3, 1, 3, 3, 5, 9, 9, 2, 6, 8, 2, 4, 3, 6 ],
|
|
58
|
-
[ 4, 1, 1, 2, 1, 4, 6, 8, 2, 4, 2, 5, 5, 8, 7, 4, 6, 9 ],
|
|
59
|
-
[ 7, 4, 1, 3, 10, 3, 1, 5, 2, 5, 1, 5, 6, 6, 3, 9, 9, 3 ],
|
|
60
|
-
[ 4, 7, 1, 10, 3, 8, 2, 9, 9, 6, 6, 9, 7, 7, 9, 1, 3, 10 ],
|
|
61
|
-
[ 6, 4, 8, 1, 2, 3, 4, 9, 9, 2, 6, 2, 5, 7, 8, 10, 10, 2 ]
|
|
62
|
-
]
|
|
63
|
-
},
|
|
64
|
-
"FixedCost": {
|
|
65
|
-
"comment": "Creates the FixedCost matrix. These are the fixed costs that must be applied if a route is selected.",
|
|
66
|
-
"value": [
|
|
67
|
-
[ 202.0, 222.0, 100.0, 174.0, 116.0, 253.0, 252.0, 113.0, 261.0, 240.0, 106.0, 146.0, 76.0, 169.0, 247.0, 194.0, 208.0, 242.0 ],
|
|
68
|
-
[ 190.0, 158.0, 243.0, 175.0, 191.0, 243.0, 162.0, 251.0, 248.0, 213.0, 123.0, 65.0, 73.0, 246.0, 181.0, 132.0, 91.0, 264.0 ],
|
|
69
|
-
[ 229.0, 112.0, 107.0, 193.0, 214.0, 120.0, 154.0, 150.0, 94.0, 74.0, 104.0, 152.0, 94.0, 258.0, 264.0, 88.0, 262.0, 220.0 ],
|
|
70
|
-
[ 190.0, 198.0, 130.0, 118.0, 135.0, 91.0, 243.0, 258.0, 98.0, 78.0, 188.0, 129.0, 162.0, 208.0, 110.0, 186.0, 262.0, 223.0 ],
|
|
71
|
-
[ 154.0, 217.0, 156.0, 91.0, 233.0, 191.0, 172.0, 157.0, 202.0, 212.0, 169.0, 173.0, 150.0, 96.0, 210.0, 194.0, 106.0, 221.0 ],
|
|
72
|
-
[ 141.0, 149.0, 234.0, 230.0, 126.0, 113.0, 101.0, 240.0, 138.0, 87.0, 242.0, 189.0, 93.0, 204.0, 184.0, 176.0, 148.0, 140.0 ],
|
|
73
|
-
[ 131.0, 256.0, 147.0, 252.0, 107.0, 112.0, 165.0, 255.0, 71.0, 244.0, 192.0, 168.0, 250.0, 132.0, 177.0, 195.0, 98.0, 105.0 ],
|
|
74
|
-
[ 211.0, 85.0, 124.0, 171.0, 139.0, 115.0, 65.0, 253.0, 217.0, 178.0, 186.0, 87.0, 119.0, 137.0, 82.0, 208.0, 205.0, 223.0 ],
|
|
75
|
-
[ 147.0, 149.0, 214.0, 105.0, 132.0, 131.0, 202.0, 213.0, 81.0, 234.0, 226.0, 202.0, 138.0, 245.0, 148.0, 209.0, 177.0, 152.0 ],
|
|
76
|
-
[ 249.0, 126.0, 145.0, 235.0, 234.0, 92.0, 201.0, 142.0, 106.0, 113.0, 134.0, 90.0, 138.0, 114.0, 239.0, 222.0, 262.0, 205.0 ],
|
|
77
|
-
[ 95.0, 251.0, 145.0, 131.0, 130.0, 222.0, 192.0, 179.0, 183.0, 234.0, 196.0, 106.0, 200.0, 147.0, 72.0, 176.0, 231.0, 160.0 ],
|
|
78
|
-
[ 109.0, 234.0, 78.0, 115.0, 136.0, 221.0, 252.0, 129.0, 80.0, 94.0, 65.0, 177.0, 258.0, 137.0, 185.0, 242.0, 181.0, 132.0 ],
|
|
79
|
-
[ 107.0, 233.0, 91.0, 112.0, 261.0, 150.0, 119.0, 102.0, 207.0, 138.0, 71.0, 122.0, 125.0, 166.0, 168.0, 144.0, 174.0, 241.0 ],
|
|
80
|
-
[ 191.0, 154.0, 101.0, 66.0, 156.0, 128.0, 234.0, 75.0, 86.0, 210.0, 231.0, 79.0, 105.0, 166.0, 147.0, 171.0, 241.0, 80.0 ]
|
|
81
|
-
]
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
"formulas": {
|
|
85
|
-
"comment": "A new matrix is created using the MATOP function by applying two operators, oper1 and oper2, MATOP(A, oper1, oper2, B); For each k: MATOP[x, y] = MATOP[x, y] oper2 (A[x, k] oper1 B[k, y]). For more information on this function, see https://www.solver.com/risk-solver-help/psi-function-help/matrices/matop.",
|
|
86
|
-
"xup": {
|
|
87
|
-
"dimensions": [ 14, 18 ],
|
|
88
|
-
"formula": "MATOP(Supply, 'min', '+', transpose(Demand))"
|
|
89
|
-
}
|
|
90
|
-
},
|
|
91
|
-
"constraints": {
|
|
92
|
-
"comment": "Contains 18 + 14 + 252 = 284 constraints.",
|
|
93
|
-
"con1": {
|
|
94
|
-
"comment": "Adds up the continuous variable values by row and sets each formula equal to the appropriate demand value (i.e. x(1,1) + x(1,2) + x(1,3) + ... x(1,18) = 6 where 6 is Demand[1].",
|
|
95
|
-
"dimensions": [ 18 ],
|
|
96
|
-
"formula": "transpose(MMULT(transpose(I), x))",
|
|
97
|
-
"equal": "Demand"
|
|
98
|
-
},
|
|
99
|
-
"con2": {
|
|
100
|
-
"comment": "Adds up the continuous variable values by column and sets each formula equal to the appropriate supply value (i.e. x(1,1) + x(2,1) + x(3,1) + ... x(14,1) = 21 where 21 is Supply[1].",
|
|
101
|
-
"dimensions": [ 14 ],
|
|
102
|
-
"formula": "MMULT(x, J)",
|
|
103
|
-
"equal": "Supply"
|
|
104
|
-
},
|
|
105
|
-
"fix": {
|
|
106
|
-
"comment": "Formula applied to each element of the matrix, i.e. xup(1,1) * y(1,1) - x (1,1) >= 0. This constraint forces the y variable to 1 if the x variable is nonzero. This type of constraint is otherwise known as a fixed-charge constraint because it applies a fixed cost if a truck route is selected.",
|
|
107
|
-
"dimensions": [ 14, 18 ],
|
|
108
|
-
"formula": "xup * y - x",
|
|
109
|
-
"lower": 0
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
"objective": {
|
|
113
|
-
"obj": {
|
|
114
|
-
"comment": "The objective minimizes the transportation costs by adding the sumproduct of the Fixed Cost matrix and the y matrix with the sumproduct of the Cost matrix and the x matrix.",
|
|
115
|
-
"type": "minimize",
|
|
116
|
-
"formula": "sumproduct(Fixedcost, y) + sumproduct(Cost, x)",
|
|
117
|
-
"finalValue": []
|
|
118
|
-
}
|
|
119
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"modelName": "matopExample",
|
|
3
|
+
"modelDescription": "RASON example model uses Frontline's MATOP function to solve a famous and difficult fixed-charge transportation optimization model. The optimal objective = 3712. In a fixed charge constraint, a binary variable is forced to 1 if the corresponding continuous variable is nonzero. In other words, if X >0 then Y = 1. From here the binary variable may be multiplied by a constant value to model a penalty or charge.",
|
|
4
|
+
|
|
5
|
+
"modelType": "optimization",
|
|
6
|
+
"variables": {
|
|
7
|
+
"comment": "This model includes two variable blocks, x and y. The x variable array contains 252 continuous variables. The y variable array contains 252 binary (0,1) variables.",
|
|
8
|
+
"x": {
|
|
9
|
+
"comment": "Creates x double array to hold 252 variables (14 * 18). All vars have been given an initial value of 0 using 'initial' and a lower bound of 0, using 'lower'. The final variable values will be returned in the results due to the presence of the finalValue keyword.",
|
|
10
|
+
"dimensions": [ 14, 18 ],
|
|
11
|
+
"value": 0,
|
|
12
|
+
"lower": 0,
|
|
13
|
+
"finalValue": []
|
|
14
|
+
},
|
|
15
|
+
"y": {
|
|
16
|
+
"comment": "Creates y double array to hold 252 more variables (14 * 18). All vars have been given an initial value of 0 using 'initial', a lower bound of 0, using 'lower' and an upper bound of 1 using 'upper'. The 'type' property specifies that variables in this array must be integer, or binary variables, taking on values of either 0 or 1. The final variable values will be returned in the results due to the presence of the finalValue keyword. The 'fix' constraint will ensure that if the corresponding x variable is nonzero, the corresponding y variable will be forced to 1, (i.e. if x(1,1) is > 0, y(1,1) = 1. ",
|
|
17
|
+
"dimensions": [ 14, 18 ],
|
|
18
|
+
"value": 0,
|
|
19
|
+
"lower": 0,
|
|
20
|
+
"upper": 1,
|
|
21
|
+
"type": "int",
|
|
22
|
+
"finalValue": []
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"data": {
|
|
26
|
+
"comment": "The data section contains constant parameters utilized in the model to generate the constraints and the objective.",
|
|
27
|
+
"I": {
|
|
28
|
+
"comment": "Creates an array of size 14, all values are set to the value of 1.",
|
|
29
|
+
"dimensions": [ 14 ],
|
|
30
|
+
"value": 1
|
|
31
|
+
},
|
|
32
|
+
"J": {
|
|
33
|
+
"comment": "Creates an array of size 18, all values are set to the value of 1.",
|
|
34
|
+
"dimensions": [ 18 ],
|
|
35
|
+
"value": 1
|
|
36
|
+
},
|
|
37
|
+
"Demand": {
|
|
38
|
+
"comment": "Creates an array of size 18 holding the demand. Array dimension inferred by number of values passed for 'value'.",
|
|
39
|
+
"value": [ 6, 13, 21, 11, 20, 4, 35, 13, 20, 9, 7, 18, 14, 22, 33, 45, 11, 8 ]
|
|
40
|
+
},
|
|
41
|
+
"Supply": {
|
|
42
|
+
"comment": "Creates an array of size 14 holding the supply values. Array dimension inferred by number of values passed for 'value'.",
|
|
43
|
+
"value": [ 21, 19, 24, 10, 27, 25, 10, 16, 17, 38, 22, 33, 22, 26 ]
|
|
44
|
+
},
|
|
45
|
+
"Cost": {
|
|
46
|
+
"comment": "Creates the Cost matrix These are the Transportation costs per mile traveled.",
|
|
47
|
+
"value": [
|
|
48
|
+
[ 4, 4, 10, 3, 4, 9, 10, 9, 3, 10, 5, 10, 9, 10, 5, 8, 9, 8 ],
|
|
49
|
+
[ 7, 1, 7, 4, 6, 7, 7, 1, 4, 4, 10, 1, 7, 5, 8, 3, 3, 1 ],
|
|
50
|
+
[ 10, 10, 4, 10, 3, 2, 3, 8, 3, 7, 1, 5, 5, 6, 1, 8, 3, 8 ],
|
|
51
|
+
[ 7, 1, 1, 1, 10, 1, 7, 6, 6, 2, 5, 5, 7, 9, 6, 3, 3, 5 ],
|
|
52
|
+
[ 4, 10, 2, 1, 7, 8, 1, 2, 4, 5, 9, 2, 8, 7, 2, 8, 5, 3 ],
|
|
53
|
+
[ 3, 7, 4, 10, 8, 10, 9, 9, 6, 8, 9, 5, 5, 6, 1, 4, 9, 5 ],
|
|
54
|
+
[ 2, 7, 10, 10, 4, 10, 6, 8, 6, 6, 6, 8, 2, 3, 6, 9, 7, 5 ],
|
|
55
|
+
[ 1, 7, 10, 1, 7, 3, 1, 10, 10, 6, 2, 9, 1, 6, 5, 8, 6, 5 ],
|
|
56
|
+
[ 10, 7, 4, 1, 1, 1, 8, 4, 4, 3, 2, 4, 6, 6, 8, 3, 6, 6 ],
|
|
57
|
+
[ 4, 7, 1, 3, 3, 1, 3, 3, 5, 9, 9, 2, 6, 8, 2, 4, 3, 6 ],
|
|
58
|
+
[ 4, 1, 1, 2, 1, 4, 6, 8, 2, 4, 2, 5, 5, 8, 7, 4, 6, 9 ],
|
|
59
|
+
[ 7, 4, 1, 3, 10, 3, 1, 5, 2, 5, 1, 5, 6, 6, 3, 9, 9, 3 ],
|
|
60
|
+
[ 4, 7, 1, 10, 3, 8, 2, 9, 9, 6, 6, 9, 7, 7, 9, 1, 3, 10 ],
|
|
61
|
+
[ 6, 4, 8, 1, 2, 3, 4, 9, 9, 2, 6, 2, 5, 7, 8, 10, 10, 2 ]
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
"FixedCost": {
|
|
65
|
+
"comment": "Creates the FixedCost matrix. These are the fixed costs that must be applied if a route is selected.",
|
|
66
|
+
"value": [
|
|
67
|
+
[ 202.0, 222.0, 100.0, 174.0, 116.0, 253.0, 252.0, 113.0, 261.0, 240.0, 106.0, 146.0, 76.0, 169.0, 247.0, 194.0, 208.0, 242.0 ],
|
|
68
|
+
[ 190.0, 158.0, 243.0, 175.0, 191.0, 243.0, 162.0, 251.0, 248.0, 213.0, 123.0, 65.0, 73.0, 246.0, 181.0, 132.0, 91.0, 264.0 ],
|
|
69
|
+
[ 229.0, 112.0, 107.0, 193.0, 214.0, 120.0, 154.0, 150.0, 94.0, 74.0, 104.0, 152.0, 94.0, 258.0, 264.0, 88.0, 262.0, 220.0 ],
|
|
70
|
+
[ 190.0, 198.0, 130.0, 118.0, 135.0, 91.0, 243.0, 258.0, 98.0, 78.0, 188.0, 129.0, 162.0, 208.0, 110.0, 186.0, 262.0, 223.0 ],
|
|
71
|
+
[ 154.0, 217.0, 156.0, 91.0, 233.0, 191.0, 172.0, 157.0, 202.0, 212.0, 169.0, 173.0, 150.0, 96.0, 210.0, 194.0, 106.0, 221.0 ],
|
|
72
|
+
[ 141.0, 149.0, 234.0, 230.0, 126.0, 113.0, 101.0, 240.0, 138.0, 87.0, 242.0, 189.0, 93.0, 204.0, 184.0, 176.0, 148.0, 140.0 ],
|
|
73
|
+
[ 131.0, 256.0, 147.0, 252.0, 107.0, 112.0, 165.0, 255.0, 71.0, 244.0, 192.0, 168.0, 250.0, 132.0, 177.0, 195.0, 98.0, 105.0 ],
|
|
74
|
+
[ 211.0, 85.0, 124.0, 171.0, 139.0, 115.0, 65.0, 253.0, 217.0, 178.0, 186.0, 87.0, 119.0, 137.0, 82.0, 208.0, 205.0, 223.0 ],
|
|
75
|
+
[ 147.0, 149.0, 214.0, 105.0, 132.0, 131.0, 202.0, 213.0, 81.0, 234.0, 226.0, 202.0, 138.0, 245.0, 148.0, 209.0, 177.0, 152.0 ],
|
|
76
|
+
[ 249.0, 126.0, 145.0, 235.0, 234.0, 92.0, 201.0, 142.0, 106.0, 113.0, 134.0, 90.0, 138.0, 114.0, 239.0, 222.0, 262.0, 205.0 ],
|
|
77
|
+
[ 95.0, 251.0, 145.0, 131.0, 130.0, 222.0, 192.0, 179.0, 183.0, 234.0, 196.0, 106.0, 200.0, 147.0, 72.0, 176.0, 231.0, 160.0 ],
|
|
78
|
+
[ 109.0, 234.0, 78.0, 115.0, 136.0, 221.0, 252.0, 129.0, 80.0, 94.0, 65.0, 177.0, 258.0, 137.0, 185.0, 242.0, 181.0, 132.0 ],
|
|
79
|
+
[ 107.0, 233.0, 91.0, 112.0, 261.0, 150.0, 119.0, 102.0, 207.0, 138.0, 71.0, 122.0, 125.0, 166.0, 168.0, 144.0, 174.0, 241.0 ],
|
|
80
|
+
[ 191.0, 154.0, 101.0, 66.0, 156.0, 128.0, 234.0, 75.0, 86.0, 210.0, 231.0, 79.0, 105.0, 166.0, 147.0, 171.0, 241.0, 80.0 ]
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"formulas": {
|
|
85
|
+
"comment": "A new matrix is created using the MATOP function by applying two operators, oper1 and oper2, MATOP(A, oper1, oper2, B); For each k: MATOP[x, y] = MATOP[x, y] oper2 (A[x, k] oper1 B[k, y]). For more information on this function, see https://www.solver.com/risk-solver-help/psi-function-help/matrices/matop.",
|
|
86
|
+
"xup": {
|
|
87
|
+
"dimensions": [ 14, 18 ],
|
|
88
|
+
"formula": "MATOP(Supply, 'min', '+', transpose(Demand))"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"constraints": {
|
|
92
|
+
"comment": "Contains 18 + 14 + 252 = 284 constraints.",
|
|
93
|
+
"con1": {
|
|
94
|
+
"comment": "Adds up the continuous variable values by row and sets each formula equal to the appropriate demand value (i.e. x(1,1) + x(1,2) + x(1,3) + ... x(1,18) = 6 where 6 is Demand[1].",
|
|
95
|
+
"dimensions": [ 18 ],
|
|
96
|
+
"formula": "transpose(MMULT(transpose(I), x))",
|
|
97
|
+
"equal": "Demand"
|
|
98
|
+
},
|
|
99
|
+
"con2": {
|
|
100
|
+
"comment": "Adds up the continuous variable values by column and sets each formula equal to the appropriate supply value (i.e. x(1,1) + x(2,1) + x(3,1) + ... x(14,1) = 21 where 21 is Supply[1].",
|
|
101
|
+
"dimensions": [ 14 ],
|
|
102
|
+
"formula": "MMULT(x, J)",
|
|
103
|
+
"equal": "Supply"
|
|
104
|
+
},
|
|
105
|
+
"fix": {
|
|
106
|
+
"comment": "Formula applied to each element of the matrix, i.e. xup(1,1) * y(1,1) - x (1,1) >= 0. This constraint forces the y variable to 1 if the x variable is nonzero. This type of constraint is otherwise known as a fixed-charge constraint because it applies a fixed cost if a truck route is selected.",
|
|
107
|
+
"dimensions": [ 14, 18 ],
|
|
108
|
+
"formula": "xup * y - x",
|
|
109
|
+
"lower": 0
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"objective": {
|
|
113
|
+
"obj": {
|
|
114
|
+
"comment": "The objective minimizes the transportation costs by adding the sumproduct of the Fixed Cost matrix and the y matrix with the sumproduct of the Cost matrix and the x matrix.",
|
|
115
|
+
"type": "minimize",
|
|
116
|
+
"formula": "sumproduct(Fixedcost, y) + sumproduct(Cost, x)",
|
|
117
|
+
"finalValue": []
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
120
|
}
|
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
{
|
|
2
|
-
"modelName": "productMixExample",
|
|
3
|
-
"modelDescription": "Product Mix RASON Optimization Example: Recall that the Product Mix example finds the optimal product mix that a company should manufacture in order to maximize gross profit. Assume a company manufactures TVs, stereos and speakers, using a common parts inventory of power supplies, speaker cones, etc. Parts are in limited supply. Determine the most profitable mix of products to produce. See our Tutorial Online for step-by-step instructions on formulating this linear programming model. This RASON model was converted from a model created in Excel using Analytic Solver.",
|
|
4
|
-
"modelType": "optimization",
|
|
5
|
-
|
|
6
|
-
"variables": {
|
|
7
|
-
"comment": "The variables are the number of TVs, stereos, and speakers to build. In the original Excel worksheet, they were located in cells D9:F9 where D9 = the number of TVs to be produced, E9 = the number of Stereos to be produced and F9 = the number of Speakers to be produced.",
|
|
8
|
-
"d9:f9": {
|
|
9
|
-
"comment": "D9 is the number of TVs to produce, E9 is the number of Stereos to produce and F9 is the number of Speakers to produce. The keyword, lower, sets the lower bound of each variable to 0. The keyword, value, sets the initial value of the variable to 1. The keyword, finalValue, returns the final value of each variable in the result.",
|
|
10
|
-
"lower": 0,
|
|
11
|
-
"value": 1,
|
|
12
|
-
"finalValue": []
|
|
13
|
-
}
|
|
14
|
-
},
|
|
15
|
-
|
|
16
|
-
"data": {
|
|
17
|
-
"comment": "This section contains the data used to formulate the constraints and the objective. D17:F17 contains the profit per unit for each TV, Stereo, and Speaker produced. The next 5 arrays contain the number of parts required to produce each TV, Stereo and Speaker: D11:F11 - Number of Chassis required, D12:F12 - Number of LCD Screens required, D13:F13 - Number of Speakers required, D14:F14 - Number of Power Supplies required, D15:F15 - Number of Electronics required.",
|
|
18
|
-
"d17:f17": {
|
|
19
|
-
"comment": "Profit per unit for each [TV, Stereo, Speaker]",
|
|
20
|
-
"value": [
|
|
21
|
-
[ 75, 50, 35 ]
|
|
22
|
-
]
|
|
23
|
-
},
|
|
24
|
-
"d11:f11": {
|
|
25
|
-
"comment": "Number of chassis required for each [TV, Stereo, Speaker]",
|
|
26
|
-
"value": [
|
|
27
|
-
[ 1, 1, 0 ]
|
|
28
|
-
]
|
|
29
|
-
},
|
|
30
|
-
"d12:f12": {
|
|
31
|
-
"comment": "Number of LCD Screens required for each [TV, Stereo, Speaker]",
|
|
32
|
-
"value": [
|
|
33
|
-
[ 1, 0, 0 ]
|
|
34
|
-
]
|
|
35
|
-
},
|
|
36
|
-
"d13:f13": {
|
|
37
|
-
"comment": "Number of Speakers required for each [TV, Stereo, Speaker]",
|
|
38
|
-
"value": [
|
|
39
|
-
[ 2, 2, 1 ]
|
|
40
|
-
]
|
|
41
|
-
},
|
|
42
|
-
"d14:f14": {
|
|
43
|
-
"comment": "Number of Power Supplies required for each [TV, Stereo, Speaker]",
|
|
44
|
-
"value": [
|
|
45
|
-
[ 1, 1, 0 ]
|
|
46
|
-
]
|
|
47
|
-
},
|
|
48
|
-
"d15:f15": {
|
|
49
|
-
"comment": "Number of Electronics required for each [TV, Stereo, Speaker]",
|
|
50
|
-
"value": [
|
|
51
|
-
[ 2, 1, 1 ]
|
|
52
|
-
]
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
|
|
56
|
-
"constraints": {
|
|
57
|
-
"comment": "5 Constraints limit the amount of products used, to the amount of parts on hand: Chassis - 450, Screens - 250, Speakers - 800, Power Supplies - 450 and Electronics - 600. Notice the use of the Excel sumproduct function to multiply the variables (D9:F9) by the number of parts required to produce each [TV, Stereo, Speaker]. RASON supports the majority of EXCEL functions in the calculation of constraints and the objective. The keywords, lower and upper, set the lower and upper bounds of each constraint, respectively.",
|
|
58
|
-
"c11": {
|
|
59
|
-
"Comment": "Limits the number of Chassis to 450 =#TVS * 1 + #Stereos * 1 + #Speakers * 0",
|
|
60
|
-
"formula": "sumproduct(d9:f9, d11:f11)",
|
|
61
|
-
"lower": 0,
|
|
62
|
-
"upper": 450
|
|
63
|
-
},
|
|
64
|
-
"c12": {
|
|
65
|
-
"Comment": "Limits the number of Screens to 250 =#TVS * 1 + #Stereos * 0 + #Speakers * 0",
|
|
66
|
-
"formula": "sumproduct(d9:f9, d12:f12)",
|
|
67
|
-
"lower": 0,
|
|
68
|
-
"upper": 250
|
|
69
|
-
},
|
|
70
|
-
"c13": {
|
|
71
|
-
"Comment": "Limits the number of Speakers to 800 =#TVS * 2 + #Stereos * 2 + #Speakers * 1",
|
|
72
|
-
"formula": "sumproduct(d9:f9, d13:f13)",
|
|
73
|
-
"lower": 0,
|
|
74
|
-
"upper": 800
|
|
75
|
-
},
|
|
76
|
-
"c14": {
|
|
77
|
-
"Comment": "Limits the number of Power Supplies to 450 =#TVS * 1 + #Stereos * 1 + #Speakers * 0",
|
|
78
|
-
"formula": "sumproduct(d9:f9, d14:f14)",
|
|
79
|
-
"lower": 0,
|
|
80
|
-
"upper": 450
|
|
81
|
-
},
|
|
82
|
-
"c15": {
|
|
83
|
-
"comment": "Limits the number of Electronics to 600: =#TVS * 2 + #Stereos * 1 + #Speakers * 1",
|
|
84
|
-
"formula": "sumproduct(d9:f9, d15:f15)",
|
|
85
|
-
"lower": 0,
|
|
86
|
-
"upper": 600
|
|
87
|
-
}
|
|
88
|
-
},
|
|
89
|
-
|
|
90
|
-
"objective": {
|
|
91
|
-
"comment": "Calculates the objective function to be maximized: =#TVS * 75 + #Stereos * 50 + #Speakers * 35. The keyword, finalValue, returns the final objective value in the result.",
|
|
92
|
-
"d18": {
|
|
93
|
-
"type": "maximize",
|
|
94
|
-
"formula": "sumproduct(d9:f9, d17:f17)",
|
|
95
|
-
"finalValue": []
|
|
96
|
-
}
|
|
97
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"modelName": "productMixExample",
|
|
3
|
+
"modelDescription": "Product Mix RASON Optimization Example: Recall that the Product Mix example finds the optimal product mix that a company should manufacture in order to maximize gross profit. Assume a company manufactures TVs, stereos and speakers, using a common parts inventory of power supplies, speaker cones, etc. Parts are in limited supply. Determine the most profitable mix of products to produce. See our Tutorial Online for step-by-step instructions on formulating this linear programming model. This RASON model was converted from a model created in Excel using Analytic Solver.",
|
|
4
|
+
"modelType": "optimization",
|
|
5
|
+
|
|
6
|
+
"variables": {
|
|
7
|
+
"comment": "The variables are the number of TVs, stereos, and speakers to build. In the original Excel worksheet, they were located in cells D9:F9 where D9 = the number of TVs to be produced, E9 = the number of Stereos to be produced and F9 = the number of Speakers to be produced.",
|
|
8
|
+
"d9:f9": {
|
|
9
|
+
"comment": "D9 is the number of TVs to produce, E9 is the number of Stereos to produce and F9 is the number of Speakers to produce. The keyword, lower, sets the lower bound of each variable to 0. The keyword, value, sets the initial value of the variable to 1. The keyword, finalValue, returns the final value of each variable in the result.",
|
|
10
|
+
"lower": 0,
|
|
11
|
+
"value": 1,
|
|
12
|
+
"finalValue": []
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
"data": {
|
|
17
|
+
"comment": "This section contains the data used to formulate the constraints and the objective. D17:F17 contains the profit per unit for each TV, Stereo, and Speaker produced. The next 5 arrays contain the number of parts required to produce each TV, Stereo and Speaker: D11:F11 - Number of Chassis required, D12:F12 - Number of LCD Screens required, D13:F13 - Number of Speakers required, D14:F14 - Number of Power Supplies required, D15:F15 - Number of Electronics required.",
|
|
18
|
+
"d17:f17": {
|
|
19
|
+
"comment": "Profit per unit for each [TV, Stereo, Speaker]",
|
|
20
|
+
"value": [
|
|
21
|
+
[ 75, 50, 35 ]
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"d11:f11": {
|
|
25
|
+
"comment": "Number of chassis required for each [TV, Stereo, Speaker]",
|
|
26
|
+
"value": [
|
|
27
|
+
[ 1, 1, 0 ]
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"d12:f12": {
|
|
31
|
+
"comment": "Number of LCD Screens required for each [TV, Stereo, Speaker]",
|
|
32
|
+
"value": [
|
|
33
|
+
[ 1, 0, 0 ]
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"d13:f13": {
|
|
37
|
+
"comment": "Number of Speakers required for each [TV, Stereo, Speaker]",
|
|
38
|
+
"value": [
|
|
39
|
+
[ 2, 2, 1 ]
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"d14:f14": {
|
|
43
|
+
"comment": "Number of Power Supplies required for each [TV, Stereo, Speaker]",
|
|
44
|
+
"value": [
|
|
45
|
+
[ 1, 1, 0 ]
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"d15:f15": {
|
|
49
|
+
"comment": "Number of Electronics required for each [TV, Stereo, Speaker]",
|
|
50
|
+
"value": [
|
|
51
|
+
[ 2, 1, 1 ]
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
"constraints": {
|
|
57
|
+
"comment": "5 Constraints limit the amount of products used, to the amount of parts on hand: Chassis - 450, Screens - 250, Speakers - 800, Power Supplies - 450 and Electronics - 600. Notice the use of the Excel sumproduct function to multiply the variables (D9:F9) by the number of parts required to produce each [TV, Stereo, Speaker]. RASON supports the majority of EXCEL functions in the calculation of constraints and the objective. The keywords, lower and upper, set the lower and upper bounds of each constraint, respectively.",
|
|
58
|
+
"c11": {
|
|
59
|
+
"Comment": "Limits the number of Chassis to 450 =#TVS * 1 + #Stereos * 1 + #Speakers * 0",
|
|
60
|
+
"formula": "sumproduct(d9:f9, d11:f11)",
|
|
61
|
+
"lower": 0,
|
|
62
|
+
"upper": 450
|
|
63
|
+
},
|
|
64
|
+
"c12": {
|
|
65
|
+
"Comment": "Limits the number of Screens to 250 =#TVS * 1 + #Stereos * 0 + #Speakers * 0",
|
|
66
|
+
"formula": "sumproduct(d9:f9, d12:f12)",
|
|
67
|
+
"lower": 0,
|
|
68
|
+
"upper": 250
|
|
69
|
+
},
|
|
70
|
+
"c13": {
|
|
71
|
+
"Comment": "Limits the number of Speakers to 800 =#TVS * 2 + #Stereos * 2 + #Speakers * 1",
|
|
72
|
+
"formula": "sumproduct(d9:f9, d13:f13)",
|
|
73
|
+
"lower": 0,
|
|
74
|
+
"upper": 800
|
|
75
|
+
},
|
|
76
|
+
"c14": {
|
|
77
|
+
"Comment": "Limits the number of Power Supplies to 450 =#TVS * 1 + #Stereos * 1 + #Speakers * 0",
|
|
78
|
+
"formula": "sumproduct(d9:f9, d14:f14)",
|
|
79
|
+
"lower": 0,
|
|
80
|
+
"upper": 450
|
|
81
|
+
},
|
|
82
|
+
"c15": {
|
|
83
|
+
"comment": "Limits the number of Electronics to 600: =#TVS * 2 + #Stereos * 1 + #Speakers * 1",
|
|
84
|
+
"formula": "sumproduct(d9:f9, d15:f15)",
|
|
85
|
+
"lower": 0,
|
|
86
|
+
"upper": 600
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
|
|
90
|
+
"objective": {
|
|
91
|
+
"comment": "Calculates the objective function to be maximized: =#TVS * 75 + #Stereos * 50 + #Speakers * 35. The keyword, finalValue, returns the final objective value in the result.",
|
|
92
|
+
"d18": {
|
|
93
|
+
"type": "maximize",
|
|
94
|
+
"formula": "sumproduct(d9:f9, d17:f17)",
|
|
95
|
+
"finalValue": []
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
98
|
}
|
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
{
|
|
2
|
-
"modelName": "productMix2Example",
|
|
3
|
-
"modelDescription": "Product Mix RASON Optimization Example 2: Recall that the Product Mix example finds the optimal product mix that a company should manufacture in order to maximize gross profit. In this version of the Product Mix model, the data section now contains 2 arrays, rather than 6: D17:F17 - the profit per unit of each [TV, Stereo, Speaker] produced and D11:F15, a double array, - the number of each product required to produce each [TV, Stereo, Speaker]. In the first example, 6 separate arrays were used to supply the constraint coefficient values, or the number of parts required to produce each product. In this example, all values are passed in 1 array. The variables, constraints and objective sections all remain unchanged.",
|
|
4
|
-
"modelType": "optimization",
|
|
5
|
-
"variables": {
|
|
6
|
-
"comment": "The variables are the number of [TVs, Stereos, Speakers] to build. This section remains unchanged from the original Product Mix Example.",
|
|
7
|
-
"d9:f9": {
|
|
8
|
-
"comment": "D9 is the number of TVS to produce, E9 is the number of Stereos to produce and F9 is the number of Speakers to produce.",
|
|
9
|
-
"lower": 0,
|
|
10
|
-
"value": 0,
|
|
11
|
-
"finalValue": []
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"data": {
|
|
15
|
-
"comment": "D17:F17 contain the coefficient values (profit per unit produced) for each [TV, Stereo, Speaker].",
|
|
16
|
-
"d17:f17": {
|
|
17
|
-
"value": [
|
|
18
|
-
[ 75, 50, 35 ]
|
|
19
|
-
]
|
|
20
|
-
},
|
|
21
|
-
"d11:f15": {
|
|
22
|
-
"comment": "D11:F15 contains all constraint coefficient values, or the number of parts required to produce each [TV, Stereo, Speaker]. The first row of the array passes the number of chassis required to produce each product, the 2nd, the number of Screens, the 3rd, the number of Speakers, the 4th, the number of Power Supply kits and lastly, the number of Electronic kits required to produce each product.",
|
|
23
|
-
"value": [
|
|
24
|
-
[ 1, 1, 0 ],
|
|
25
|
-
[ 1, 0, 0 ],
|
|
26
|
-
[ 2, 2, 1 ],
|
|
27
|
-
[ 1, 1, 0 ],
|
|
28
|
-
[ 2, 1, 1 ]
|
|
29
|
-
]
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
"constraints": {
|
|
33
|
-
"comment": "Five constraints limit the number of parts used to the number of parts in inventory: C11 - Number of chassis used <= 450, C12 - Number of screens used <= 250, C13 = Number of Speakers used <= 800, C14 = Number of Power Supply kits used <= 450 and C15 = Number of Electronic kits used <= 600. The Excel sumproduct function is used to multiply the variables by the amount of products required to produce each product. This section remains unchanged.",
|
|
34
|
-
"c11": {
|
|
35
|
-
"comment": "Limits the number of Chassis to 450 =#TVS * 1 + #Stereos * 1 + #Speakers * 0",
|
|
36
|
-
"formula": "sumproduct(d9:f9, d11:f11)",
|
|
37
|
-
"lower": 0,
|
|
38
|
-
"upper": 450
|
|
39
|
-
},
|
|
40
|
-
"c12": {
|
|
41
|
-
"comment": "Limits the number of Screens to 250 =#TVS * 1 + #Stereos * 0 + #Speakers * 0",
|
|
42
|
-
"formula": "sumproduct(d9:f9, d12:f12)",
|
|
43
|
-
"lower": 0,
|
|
44
|
-
"upper": 250
|
|
45
|
-
},
|
|
46
|
-
"c13": {
|
|
47
|
-
"comment": "Limits the number of Speakers to 800 =#TVS * 2 + #Stereos * 2 + #Speakers * 1",
|
|
48
|
-
"formula": "sumproduct(d9:f9, d13:f13)",
|
|
49
|
-
"lower": 0,
|
|
50
|
-
"upper": 800
|
|
51
|
-
},
|
|
52
|
-
"c14": {
|
|
53
|
-
"comment": "Limits the number of Power Supplies to 450 =#TVS * 1 + #Stereos * 1 + #Speakers * 0",
|
|
54
|
-
"formula": "sumproduct(d9:f9, d14:f14)",
|
|
55
|
-
"lower": 0,
|
|
56
|
-
"upper": 450
|
|
57
|
-
},
|
|
58
|
-
"c15": {
|
|
59
|
-
"comment": "Limits the number of Electronics to 600: =#TVS * 2 + #Stereos * 1 + #Speakers * 1",
|
|
60
|
-
"formula": "sumproduct(d9:f9, d15:f15)",
|
|
61
|
-
"lower": 0,
|
|
62
|
-
"upper": 600
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
"objective": {
|
|
66
|
-
"comment": "Calculates the objective function to be maximized: =#TVS * 75 + #Stereos * 50 + #Speakers * 35. This section remains unchanged.",
|
|
67
|
-
"d18": {
|
|
68
|
-
"type": "maximize",
|
|
69
|
-
"formula": "sumproduct(d9:f9, d17:f17)",
|
|
70
|
-
"finalValue": []
|
|
71
|
-
}
|
|
72
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"modelName": "productMix2Example",
|
|
3
|
+
"modelDescription": "Product Mix RASON Optimization Example 2: Recall that the Product Mix example finds the optimal product mix that a company should manufacture in order to maximize gross profit. In this version of the Product Mix model, the data section now contains 2 arrays, rather than 6: D17:F17 - the profit per unit of each [TV, Stereo, Speaker] produced and D11:F15, a double array, - the number of each product required to produce each [TV, Stereo, Speaker]. In the first example, 6 separate arrays were used to supply the constraint coefficient values, or the number of parts required to produce each product. In this example, all values are passed in 1 array. The variables, constraints and objective sections all remain unchanged.",
|
|
4
|
+
"modelType": "optimization",
|
|
5
|
+
"variables": {
|
|
6
|
+
"comment": "The variables are the number of [TVs, Stereos, Speakers] to build. This section remains unchanged from the original Product Mix Example.",
|
|
7
|
+
"d9:f9": {
|
|
8
|
+
"comment": "D9 is the number of TVS to produce, E9 is the number of Stereos to produce and F9 is the number of Speakers to produce.",
|
|
9
|
+
"lower": 0,
|
|
10
|
+
"value": 0,
|
|
11
|
+
"finalValue": []
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"data": {
|
|
15
|
+
"comment": "D17:F17 contain the coefficient values (profit per unit produced) for each [TV, Stereo, Speaker].",
|
|
16
|
+
"d17:f17": {
|
|
17
|
+
"value": [
|
|
18
|
+
[ 75, 50, 35 ]
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"d11:f15": {
|
|
22
|
+
"comment": "D11:F15 contains all constraint coefficient values, or the number of parts required to produce each [TV, Stereo, Speaker]. The first row of the array passes the number of chassis required to produce each product, the 2nd, the number of Screens, the 3rd, the number of Speakers, the 4th, the number of Power Supply kits and lastly, the number of Electronic kits required to produce each product.",
|
|
23
|
+
"value": [
|
|
24
|
+
[ 1, 1, 0 ],
|
|
25
|
+
[ 1, 0, 0 ],
|
|
26
|
+
[ 2, 2, 1 ],
|
|
27
|
+
[ 1, 1, 0 ],
|
|
28
|
+
[ 2, 1, 1 ]
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"constraints": {
|
|
33
|
+
"comment": "Five constraints limit the number of parts used to the number of parts in inventory: C11 - Number of chassis used <= 450, C12 - Number of screens used <= 250, C13 = Number of Speakers used <= 800, C14 = Number of Power Supply kits used <= 450 and C15 = Number of Electronic kits used <= 600. The Excel sumproduct function is used to multiply the variables by the amount of products required to produce each product. This section remains unchanged.",
|
|
34
|
+
"c11": {
|
|
35
|
+
"comment": "Limits the number of Chassis to 450 =#TVS * 1 + #Stereos * 1 + #Speakers * 0",
|
|
36
|
+
"formula": "sumproduct(d9:f9, d11:f11)",
|
|
37
|
+
"lower": 0,
|
|
38
|
+
"upper": 450
|
|
39
|
+
},
|
|
40
|
+
"c12": {
|
|
41
|
+
"comment": "Limits the number of Screens to 250 =#TVS * 1 + #Stereos * 0 + #Speakers * 0",
|
|
42
|
+
"formula": "sumproduct(d9:f9, d12:f12)",
|
|
43
|
+
"lower": 0,
|
|
44
|
+
"upper": 250
|
|
45
|
+
},
|
|
46
|
+
"c13": {
|
|
47
|
+
"comment": "Limits the number of Speakers to 800 =#TVS * 2 + #Stereos * 2 + #Speakers * 1",
|
|
48
|
+
"formula": "sumproduct(d9:f9, d13:f13)",
|
|
49
|
+
"lower": 0,
|
|
50
|
+
"upper": 800
|
|
51
|
+
},
|
|
52
|
+
"c14": {
|
|
53
|
+
"comment": "Limits the number of Power Supplies to 450 =#TVS * 1 + #Stereos * 1 + #Speakers * 0",
|
|
54
|
+
"formula": "sumproduct(d9:f9, d14:f14)",
|
|
55
|
+
"lower": 0,
|
|
56
|
+
"upper": 450
|
|
57
|
+
},
|
|
58
|
+
"c15": {
|
|
59
|
+
"comment": "Limits the number of Electronics to 600: =#TVS * 2 + #Stereos * 1 + #Speakers * 1",
|
|
60
|
+
"formula": "sumproduct(d9:f9, d15:f15)",
|
|
61
|
+
"lower": 0,
|
|
62
|
+
"upper": 600
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"objective": {
|
|
66
|
+
"comment": "Calculates the objective function to be maximized: =#TVS * 75 + #Stereos * 50 + #Speakers * 35. This section remains unchanged.",
|
|
67
|
+
"d18": {
|
|
68
|
+
"type": "maximize",
|
|
69
|
+
"formula": "sumproduct(d9:f9, d17:f17)",
|
|
70
|
+
"finalValue": []
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
73
|
}
|