mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-04 15:23:11 +02:00
chore: renamed parameters wdwr
This commit is contained in:
parent
1e5c98208e
commit
da8a82e077
Binary file not shown.
@ -380,18 +380,18 @@ gdzie $r_{t'}(\mathbf{x})$ oznacza realizację zysku dla scenariusza $t'$, a $p_
|
||||
|
||||
W kontekście przyjętych w projekcie oznaczeń, wyrażenie definiujące miarę ryzyka przyjmuje następującą postać:
|
||||
\begin{equation}
|
||||
giniRisk = \frac{1}{2}\cdot\sum_{t1 \in scenarios}\sum_{t2 \in scenarios} \lvert profit[t1]-profit[t2] \rvert \cdot \frac{1}{numberOfScenarios} \cdot \frac{1}{numberOfScenarios}
|
||||
riskMeasureGini = \frac{1}{2}\cdot\sum_{t1 \in scenarios}\sum_{t2 \in scenarios} \lvert profit[t1]-profit[t2] \rvert \cdot \frac{1}{numberOfScenarios} \cdot \frac{1}{numberOfScenarios}
|
||||
\end{equation}
|
||||
|
||||
\subsection{Model preferencji}
|
||||
Model preferencji oparto na minimalizacji ryzyka przy zadanym poziomie średniego zysku.
|
||||
\begin{equation}
|
||||
avgProfit<minAvgProfit
|
||||
averageProfit<minimalAverageProfit
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
minimize giniRisk
|
||||
minimize riskMeasureGini
|
||||
\end{equation}
|
||||
minAvgProfit stanowi dodatkowy parametr modelu. Załączniki 5 i 6 zawierają pliki z parametrami i modelem zadania dwukryterialnego wyboru - pliki źródłowe przeznaczone dla solvera CPLEX.
|
||||
minimalAverageProfit stanowi dodatkowy parametr modelu. Załączniki 5 i 6 zawierają pliki z parametrami i modelem zadania dwukryterialnego wyboru - pliki źródłowe przeznaczone dla solvera CPLEX.
|
||||
|
||||
\subsection{Zbiór rozwiązań efektywnych w przestrzeni ryzyko-zysk}
|
||||
Na rysunku \ref{fig:profit-risk} zaprezentowano rozwiązania efektywne modelu w przestrzeni ryzyko-zysk. Niebieskie trójkąty oznaczają rozwiązania efektywne dla różnych wartości wymaganego poziomu zysku. Uwzględniając ograniczenia obliczeniowe komputera, wygenerowano 52 równomiernie rozmieszczone rozwiązania, z których każde bazuje na 30 scenariuszach. Wprowadzono ograniczenie czasowe działania solvera dla pojedynczego rozwiązania na poziomie 5 minut. Całkowity czas obliczeń przekroczył 3 godziny. Załączniki 7 i 8 obejmują pliki parametrów oraz modelu wraz ze skryptem dla solvera CPLEX, które zostały wykorzystane do uzyskania rozwiązań. Kolorem żółtym wyróżniono rozwiązanie maksymalnego zysku oraz minimalnego ryzyka. Wartości odpowiadające tym rozwiązaniom przedstawiono w tabeli \ref{tab:min-max}.
|
||||
|
||||
@ -3,7 +3,7 @@ import pandas as pd
|
||||
from io import StringIO
|
||||
|
||||
# Your data
|
||||
data_str = """i;minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
data_str = """i;minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
1;-600;-600;0;0;0;0;0;0;0;0;0;0;0;0;0;50;50;50;50;50;50;50;50;50;50;50;50
|
||||
2;-67.59;-67.423334025;12.249866065;0;0;0;1;0;0;0;0;9;8;1;43;41;50;50;7;41;42;49;7;50;50;50;50
|
||||
3;464.82;465.647226284;26.015138747;0;0;0;0;0;0;0;29;20;19;9;52;30;50;41;0;30;31;41;0;50;50;50;50
|
||||
@ -30,7 +30,7 @@ df = pd.read_csv(StringIO(data_str), sep=';')
|
||||
|
||||
# Create the scatter plot
|
||||
plt.figure(figsize=(10, 6))
|
||||
plt.scatter(df['avgProfit'], df['giniRisk'], alpha=0.7, s=50)
|
||||
plt.scatter(df['averageProfit'], df['riskMeasureGini'], alpha=0.7, s=50)
|
||||
|
||||
# Add labels and title
|
||||
plt.xlabel('Przeciętny Zysk')
|
||||
@ -46,6 +46,6 @@ plt.tight_layout()
|
||||
plt.show()
|
||||
|
||||
# Print some basic statistics
|
||||
print(f"Average Profit range: {df['avgProfit'].min():.2f} to {df['avgProfit'].max():.2f}")
|
||||
print(f"Gini Risk range: {df['giniRisk'].min():.2f} to {df['giniRisk'].max():.2f}")
|
||||
print(f"Average Profit range: {df['averageProfit'].min():.2f} to {df['averageProfit'].max():.2f}")
|
||||
print(f"Gini Risk range: {df['riskMeasureGini'].min():.2f} to {df['riskMeasureGini'].max():.2f}")
|
||||
print(f"Number of data points: {len(df)}")
|
||||
@ -1,4 +1,4 @@
|
||||
i;minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
i;minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
1;-600;-600;0;0;0;0;0;0;0;0;0;0;0;0;0;50;50;50;50;50;50;50;50;50;50;50;50
|
||||
2;-67.59000000000003;-67.19889931518434;9.26551;1;0;0;0;0;1;0;0;10;8;6;34;40;50;44;16;40;42;44;16;50;50;50;50
|
||||
3;464.82;465.107;19.0047;0;0;0;1;0;0;0;0;23;20;14;64;27;50;36;0;27;30;36;0;50;50;50;50
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
10580.7;10580.8;257.666;336;0;149;190;0;1;134;0;50;301;51;370;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
avgProfit:
|
||||
averageProfit:
|
||||
10431.3
|
||||
10701.3
|
||||
10289.3
|
||||
@ -31,9 +31,9 @@ avgProfit:
|
||||
10594.3
|
||||
9900.24
|
||||
10777.9
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
20164;20164;574.598;346;0;0;250;289;9;401;0;50;689;583;370;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
avgProfit:
|
||||
averageProfit:
|
||||
20154.7
|
||||
20455.9
|
||||
20073
|
||||
@ -64,9 +64,9 @@ avgProfit:
|
||||
20397.9
|
||||
18593.3
|
||||
20510
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
26553.9;26553.9;796.113;270;0;150;190;700;270;400;0;50;850;530;370;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
avgProfit:
|
||||
averageProfit:
|
||||
26799.8
|
||||
27035.6
|
||||
26275.1
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
25488.3;25488.3;755.133;268;0;110;190;477;270;500;0;50;654;530;370;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
avgProfit:
|
||||
averageProfit:
|
||||
25609.4
|
||||
25873.7
|
||||
25413.2
|
||||
@ -31,9 +31,9 @@ avgProfit:
|
||||
25893.9
|
||||
23353.4
|
||||
25942
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
26020.6;26020.8;774.88;218;0;110;190;700;266;400;0;50;846;530;450;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
avgProfit:
|
||||
averageProfit:
|
||||
26186
|
||||
26404.1
|
||||
25894.4
|
||||
@ -64,9 +64,9 @@ avgProfit:
|
||||
26478.2
|
||||
23787.7
|
||||
26501.1
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
26553.9;26553.9;796.113;270;0;150;190;700;270;400;0;50;850;530;370;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
avgProfit:
|
||||
averageProfit:
|
||||
26799.8
|
||||
27035.6
|
||||
26275.1
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
10580.7;10580.8;257.666;336;0;149;190;0;1;134;0;50;301;51;370;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
Risk:
|
||||
184.458
|
||||
@ -31,7 +31,7 @@ Risk:
|
||||
184.694
|
||||
345.455
|
||||
205.291
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
20164;20164;574.598;346;0;0;250;289;9;401;0;50;689;583;370;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
Risk:
|
||||
403.784
|
||||
@ -64,7 +64,7 @@ Risk:
|
||||
409.978
|
||||
795.275
|
||||
421.261
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
26553.9;26553.9;796.113;270;0;150;190;700;270;400;0;50;850;530;370;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
Risk:
|
||||
559.839
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
25488.3;25488.3;755.133;268;0;110;190;477;270;500;0;50;654;530;370;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
Risk:
|
||||
530.713
|
||||
@ -31,7 +31,7 @@ Risk:
|
||||
542.315
|
||||
1072.76
|
||||
548.737
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
26020.6;26020.8;774.88;218;0;110;190;700;266;400;0;50;846;530;450;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
Risk:
|
||||
545.117
|
||||
@ -64,7 +64,7 @@ Risk:
|
||||
560.188
|
||||
1119.5
|
||||
563.245
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
26553.9;26553.9;796.113;270;0;150;190;700;270;400;0;50;850;530;370;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
Risk:
|
||||
559.839
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
i;minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
i;minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
1;-600;-600;0;0;0;0;0;0;0;0;0;0;0;0;0;50;50;50;50;50;50;50;50;50;50;50;50
|
||||
2;-67.59;-67.423334025;12.249866065;0;0;0;1;0;0;0;0;9;8;1;43;41;50;50;7;41;42;49;7;50;50;50;50
|
||||
3;464.82;465.647226284;26.015138747;0;0;0;0;0;0;0;29;20;19;9;52;30;50;41;0;30;31;41;0;50;50;50;50
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
8450.97;8451.020747071;306.383357869;111;0;0;150;72;0;191;200;50;256;131;210;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
avgProfit:
|
||||
averageProfit:
|
||||
8283.101223531
|
||||
8360.092861464
|
||||
8023.436774628
|
||||
@ -31,9 +31,9 @@ avgProfit:
|
||||
8650.006339759
|
||||
7571.333855925
|
||||
9103.892851116
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
8983.38;8983.400103901;332.936696297;111;0;49;110;83;15;144;200;50;317;149;250;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
avgProfit:
|
||||
averageProfit:
|
||||
8779.880622914
|
||||
8905.098118171
|
||||
8457.038873118
|
||||
@ -64,9 +64,9 @@ avgProfit:
|
||||
9208.592940681
|
||||
8041.287735389
|
||||
9707.228511359
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
9515.79;9515.804890325;360.18213126;110;0;50;110;110;11;160;200;50;350;130;250;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
avgProfit:
|
||||
averageProfit:
|
||||
9268.899026395
|
||||
9430.210649623
|
||||
8919.631184021
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
8450.97;8451.020747071;306.383357869;111;0;0;150;72;0;191;200;50;256;131;210;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
Risk:
|
||||
215.259123099
|
||||
@ -31,7 +31,7 @@ Risk:
|
||||
242.556855407
|
||||
439.843445573
|
||||
387.733839121
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
8983.38;8983.400103901;332.936696297;111;0;49;110;83;15;144;200;50;317;149;250;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
Risk:
|
||||
235.514485857
|
||||
@ -64,7 +64,7 @@ Risk:
|
||||
265.756800627
|
||||
471.056184256
|
||||
426.381300665
|
||||
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
|
||||
9515.79;9515.804890325;360.18213126;110;0;50;110;110;11;160;200;50;350;130;250;0;50;0;0;0;0;0;0;50;50;50;50
|
||||
Risk:
|
||||
257.771190407
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
// solution (optimal) with objective 11031.2880472593
|
||||
avgProfit: 11031.288047259, giniRisk: 473.954253809
|
||||
averageProfit: 11031.288047259, riskMeasureGini: 473.954253809
|
||||
|
||||
@ -1,20 +1,20 @@
|
||||
1 minAvgProfit: -600 avgProfit: -600, giniRisk: 0
|
||||
2 minAvgProfit: -67.59 avgProfit: -67.423334025, giniRisk: 12.249866065
|
||||
3 minAvgProfit: 464.82 avgProfit: 465.647226284, giniRisk: 26.015138747
|
||||
4 minAvgProfit: 997.23 avgProfit: 997.66185313, giniRisk: 40.349353614
|
||||
5 minAvgProfit: 1529.64 avgProfit: 1530.172175866, giniRisk: 54.689711726
|
||||
6 minAvgProfit: 2062.05 avgProfit: 2062.088549477, giniRisk: 69.062913221
|
||||
7 minAvgProfit: 2594.46 avgProfit: 2594.684714046, giniRisk: 84.265583873
|
||||
8 minAvgProfit: 3126.87 avgProfit: 3127.12427492, giniRisk: 99.497458717
|
||||
9 minAvgProfit: 3659.28 avgProfit: 3659.345897427, giniRisk: 114.728718529
|
||||
10 minAvgProfit: 4191.69 avgProfit: 4191.916591732, giniRisk: 129.963670504
|
||||
11 minAvgProfit: 4724.1 avgProfit: 4724.191045823, giniRisk: 145.204545226
|
||||
12 minAvgProfit: 5256.51 avgProfit: 5256.719240584, giniRisk: 162.349562672
|
||||
13 minAvgProfit: 5788.92 avgProfit: 5789.016098305, giniRisk: 182.46075748
|
||||
14 minAvgProfit: 6321.33 avgProfit: 6321.358645932, giniRisk: 205.000585625
|
||||
15 minAvgProfit: 6853.74 avgProfit: 6853.83219788, giniRisk: 229.023498807
|
||||
16 minAvgProfit: 7386.15 avgProfit: 7386.171785273, giniRisk: 253.962965038
|
||||
17 minAvgProfit: 7918.56 avgProfit: 7918.565798346, giniRisk: 279.907638363
|
||||
18 minAvgProfit: 8450.97 avgProfit: 8451.020747071, giniRisk: 306.383357869
|
||||
19 minAvgProfit: 8983.38 avgProfit: 8983.400103901, giniRisk: 332.936696297
|
||||
20 minAvgProfit: 9515.79 avgProfit: 9515.804890325, giniRisk: 360.18213126
|
||||
1 minimalAverageProfit: -600 averageProfit: -600, riskMeasureGini: 0
|
||||
2 minimalAverageProfit: -67.59 averageProfit: -67.423334025, riskMeasureGini: 12.249866065
|
||||
3 minimalAverageProfit: 464.82 averageProfit: 465.647226284, riskMeasureGini: 26.015138747
|
||||
4 minimalAverageProfit: 997.23 averageProfit: 997.66185313, riskMeasureGini: 40.349353614
|
||||
5 minimalAverageProfit: 1529.64 averageProfit: 1530.172175866, riskMeasureGini: 54.689711726
|
||||
6 minimalAverageProfit: 2062.05 averageProfit: 2062.088549477, riskMeasureGini: 69.062913221
|
||||
7 minimalAverageProfit: 2594.46 averageProfit: 2594.684714046, riskMeasureGini: 84.265583873
|
||||
8 minimalAverageProfit: 3126.87 averageProfit: 3127.12427492, riskMeasureGini: 99.497458717
|
||||
9 minimalAverageProfit: 3659.28 averageProfit: 3659.345897427, riskMeasureGini: 114.728718529
|
||||
10 minimalAverageProfit: 4191.69 averageProfit: 4191.916591732, riskMeasureGini: 129.963670504
|
||||
11 minimalAverageProfit: 4724.1 averageProfit: 4724.191045823, riskMeasureGini: 145.204545226
|
||||
12 minimalAverageProfit: 5256.51 averageProfit: 5256.719240584, riskMeasureGini: 162.349562672
|
||||
13 minimalAverageProfit: 5788.92 averageProfit: 5789.016098305, riskMeasureGini: 182.46075748
|
||||
14 minimalAverageProfit: 6321.33 averageProfit: 6321.358645932, riskMeasureGini: 205.000585625
|
||||
15 minimalAverageProfit: 6853.74 averageProfit: 6853.83219788, riskMeasureGini: 229.023498807
|
||||
16 minimalAverageProfit: 7386.15 averageProfit: 7386.171785273, riskMeasureGini: 253.962965038
|
||||
17 minimalAverageProfit: 7918.56 averageProfit: 7918.565798346, riskMeasureGini: 279.907638363
|
||||
18 minimalAverageProfit: 8450.97 averageProfit: 8451.020747071, riskMeasureGini: 306.383357869
|
||||
19 minimalAverageProfit: 8983.38 averageProfit: 8983.400103901, riskMeasureGini: 332.936696297
|
||||
20 minimalAverageProfit: 9515.79 averageProfit: 9515.804890325, riskMeasureGini: 360.18213126
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
Pierwsze wybrane rozwiazanie:
|
||||
1 minAvgProfit: 8450.97 avgProfit: 8451.020747071, giniRisk: 306.383357869
|
||||
Drugie wybrane rozwiazanie:
|
||||
31 minAvgProfit: 8983.38 avgProfit: 8983.400103901, giniRisk: 332.936696297
|
||||
Trzecie wybrane rozwiazanie:
|
||||
31 minAvgProfit: 9515.79 avgProfit: 9515.804890325, giniRisk: 360.18213126
|
||||
First solution:
|
||||
1 minimalAverageProfit: 8450.97 averageProfit: 8451.020747071, riskMeasureGini: 306.383357869
|
||||
Second solution:
|
||||
31 minimalAverageProfit: 8983.38 averageProfit: 8983.400103901, riskMeasureGini: 332.936696297
|
||||
Third solution:
|
||||
31 minimalAverageProfit: 9515.79 averageProfit: 9515.804890325, riskMeasureGini: 360.18213126
|
||||
|
||||
@ -1,48 +1,38 @@
|
||||
/*********************************************
|
||||
* OPL 12.5.1.0 Data
|
||||
* Author: Krzysztof Rudnicki
|
||||
*********************************************/
|
||||
numberOfMachineTypes = 5;
|
||||
numberOfMonths = 3;
|
||||
numberOfProductsTypes = 4;
|
||||
|
||||
/***************PARAMETRY********************/
|
||||
numberOfMachineTypes = 5; //ilosc typow maszun
|
||||
numberOfMonths = 3; //ilosc symulowanych miesiecy
|
||||
numberOfProductsTypes = 4; //ilosc typow produktow
|
||||
numberOfHoursInFactory = 384;
|
||||
numberOfScenarios = 1000;
|
||||
|
||||
numberOfHoursInFactory = 384; //liczba godzin roboczych w miesiacu 2*8*24=384
|
||||
numberOfScenarios = 1000; //ilosc scenariuszy w symulacji
|
||||
|
||||
// Ilosc maszyn poszczegolnych typow
|
||||
machineCount = [4 2 3 1 1];
|
||||
|
||||
// Koszty wykorzystania typow maszyn (wiersze)
|
||||
//w wytwarzaniu poszczegolnych typow produktow (kolumny)
|
||||
timeToProduce = [[ 0.4 0.6 0 0]
|
||||
[ 0.2 0.1 0 0.6]
|
||||
[ 0.1 0 0.7 0]
|
||||
[ 0.06 0.04 0 0.05]
|
||||
[ 0 0.05 0.02 0]];
|
||||
|
||||
// Pojemnosc rynku - typ produktu(kolumny) w miesiacu(wiersz)
|
||||
|
||||
maxProductsInMonth = [[ 200 0 100 200]
|
||||
[ 300 100 200 200]
|
||||
[ 0 300 100 200]];
|
||||
|
||||
// Magazyn
|
||||
storageMax = [200 200 200 200]; //maksymalna pojemnosc dla typow produktow
|
||||
storageCost = 1; //koszt magazynowania zl/sztuka/miesiac
|
||||
storageStart = [50 50 50 50]; //poczatkowa ilosc w magazynach
|
||||
|
||||
/************************* SCENARIOS *************************/
|
||||
// expected values (used only in t-student.R script)
|
||||
storageMax = [200 200 200 200];
|
||||
storageCost = 1;
|
||||
storageStart = [50 50 50 50];
|
||||
|
||||
|
||||
mu = [9 8 7 6];
|
||||
|
||||
// covariance (used only in t-student.R script)
|
||||
|
||||
sigma = [[ 16 -2 -1 -3]
|
||||
[ -2 9 -4 -1]
|
||||
[ -1 -4 4 1]
|
||||
[ -3 -1 1 1]];
|
||||
|
||||
// scenarios (generated by t-student.R script)
|
||||
|
||||
sellProfit = [[8.65514814631604 5.39276461442329 8.03724969792938 6.79964940685937]
|
||||
[6.35575682044805 10.7852400940011 6.64785935511483 5.82055888421908]
|
||||
[8.92335604267353 5.39191667647047 6.1375823313882 7.20599829208949]
|
||||
|
||||
@ -1,7 +1,3 @@
|
||||
/***********PARAMETRY************************/
|
||||
//Paramatry zostaladniej opisane w pliku .dat oraz raporcie
|
||||
|
||||
// Parametry liczbowe
|
||||
int numberOfMachineTypes = ...;
|
||||
int numberOfMonths = ...;
|
||||
int numberOfProductsTypes = ...;
|
||||
@ -9,57 +5,42 @@ int numberOfProductsTypes = ...;
|
||||
int numberOfHoursInFactory = ...;
|
||||
int numberOfScenarios = ...;
|
||||
|
||||
// Utworzenie wektorow indeksujacych
|
||||
{int} machines = asSet(1..numberOfMachineTypes);
|
||||
{int} months = asSet(1..numberOfMonths);
|
||||
{int} products = asSet(1..numberOfProductsTypes);
|
||||
{int} scenarios = asSet(1..numberOfScenarios);
|
||||
|
||||
//Parametry produkcji i sprzedazy
|
||||
int machineCount[machines] = ...;
|
||||
float timeToProduce[machines][products] = ...;
|
||||
int maxProductsInMonth[months][products] = ...;
|
||||
|
||||
//Parametry magazynowania
|
||||
int storageMax[products] = ...;
|
||||
int storageCost = ...;
|
||||
int storageStart[products] = ...;
|
||||
|
||||
//Parametry do generowania scenariusze (nieuzywane w modelu CPLEX)
|
||||
int mu[products] = ...;
|
||||
int sigma[products][products] = ...;
|
||||
|
||||
//Macierz scenariuszy dochodow ze sprzedazy: typ produkty (kolumna) - scenariusz (wiersz)
|
||||
float sellProfit[scenarios][products] = ...;
|
||||
|
||||
/*********** ZMIENNE DECYZYJNE ********************************************/
|
||||
dvar int produce[months][products]; // Liczba wyprodukowanych
|
||||
dvar int sell[months][products]; // Liczba sprzedanych
|
||||
dvar int stock[months][products]; // Liczba w magazynie
|
||||
dvar int produce[months][products];
|
||||
dvar int sell[months][products];
|
||||
dvar int stock[months][products];
|
||||
|
||||
// Czas wykorzystany na danym typie maszyna na dany typ produktu
|
||||
dvar float workTime[months][machines][products];
|
||||
|
||||
// Zmienna binarna - czy sprzedaz danego typu produktu przekaroczyla 80 procent pojemnosci rynku
|
||||
dvar boolean if80prec[months][products];
|
||||
|
||||
// Zmienna - ile pieniedzy nalezy odjac od dochodow z poszczegolnych produkow
|
||||
// w poszczegolnych miesiacach ze wzgledu na przekroczenie 80% pojmnosci rynku
|
||||
dvar float lowerProfit[scenarios][months][products];
|
||||
|
||||
/************ KRYTERIA OCENY *********************************************/
|
||||
// zysk policzony dla poszczegolnych scenariuszy
|
||||
dexpr float profit[i in scenarios] = sum(m in months, p in products)
|
||||
(sell[m][p]*sellProfit[i][p]-lowerProfit[i][m][p]- stock[m][p]*storageCost);
|
||||
// wartosc oczekiwana zysku policzona jako srednia
|
||||
dexpr float avgProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
|
||||
|
||||
// funkcja celu
|
||||
maximize avgProfit;
|
||||
dexpr float averageProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
|
||||
|
||||
maximize averageProfit;
|
||||
|
||||
// ************** OGRANICZENIA ******************************************/
|
||||
subject to {
|
||||
// Zmienne decyzyjne nie mniejsze niz zero
|
||||
forall(i in scenarios, m in months, mc in machines, p in products) {
|
||||
workTime[m][mc][p] >= 0;
|
||||
produce[m][p] >= 0;
|
||||
@ -67,30 +48,24 @@ subject to {
|
||||
stock[m][p] >= 0;
|
||||
lowerProfit[i][m][p] >= 0;
|
||||
}
|
||||
// Ogranicznie czasu produkcji maszyn w miesiacu
|
||||
forall(m in months, mc in machines) {
|
||||
sum(p in products) (workTime[m][mc][p]) <= (machineCount[mc]*numberOfHoursInFactory);
|
||||
}
|
||||
// Ograniczenie definiujace wykorzystany czas pracy maszyn
|
||||
forall(m in months, p in products, mc in machines) {
|
||||
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
|
||||
}
|
||||
// Ogranicznie maksymalnej pojemnosci rynku
|
||||
forall(m in months, p in products) {
|
||||
sell[m][p] <= maxProductsInMonth[m][p];
|
||||
}
|
||||
// Ogranicznie ustawiajace zmienna binarna po przekroczeniu 80 procent pojemnosci rynku
|
||||
forall(m in months, p in products) {
|
||||
sell[m][p] <= 0.8*maxProductsInMonth[m][p] + 1000000 * if80prec[m][p];
|
||||
sell[m][p] >= 0.8*maxProductsInMonth[m][p] * if80prec[m][p];
|
||||
}
|
||||
// Ograniczenia linearyzujace wplyw zmiennej binarnej na funkcje celu
|
||||
forall (i in scenarios,m in months, p in products) {
|
||||
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
|
||||
lowerProfit[i][m][p] <= 0.2 * sell[m][p]*sellProfit[i][p];
|
||||
0.2 * sell[m][p]*sellProfit[i][p] - lowerProfit[i][m][p] + 1000000 * if80prec[m][p] <= 1000000;
|
||||
}
|
||||
// Ograniczenie sprzedazy oraz definicja ilosci towaru pozostajacej w magazynie
|
||||
forall(m in months, p in products) {
|
||||
if(m == 1) { //pierwszy miesiac
|
||||
sell[m][p] <= produce[m][p]+storageStart[p];
|
||||
@ -100,8 +75,6 @@ subject to {
|
||||
stock[m][p]==(produce[m][p] + stock[m-1][p])-sell[m][p];
|
||||
}
|
||||
}
|
||||
// Ogranicznie maksymalnej ilosci magazynowanych produktow oraz
|
||||
// wymaganej ilosc pozostalej w magazynie na na koniec symulacji
|
||||
forall(m in months, p in products) {
|
||||
stock[m][p] <= storageMax[p];
|
||||
if(m == 3) {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,4 @@
|
||||
/***********PARAMETRY************************/
|
||||
//Paramatry zostaladniej opisane w pliku .dat oraz raporcie
|
||||
|
||||
// Parametry liczbowe
|
||||
int numberOfMachineTypes = ...;
|
||||
int numberOfMonths = ...;
|
||||
int numberOfProductsTypes = ...;
|
||||
@ -9,64 +6,46 @@ int numberOfProductsTypes = ...;
|
||||
int numberOfHoursInFactory = ...;
|
||||
int numberOfScenarios = ...;
|
||||
|
||||
// Utworzenie wektorow indeksujacych
|
||||
{int} machines = asSet(1..numberOfMachineTypes);
|
||||
{int} months = asSet(1..numberOfMonths);
|
||||
{int} products = asSet(1..numberOfProductsTypes);
|
||||
{int} scenarios = asSet(1..numberOfScenarios);
|
||||
|
||||
//Parametry produkcji i sprzedazy
|
||||
int machineCount[machines] = ...;
|
||||
float timeToProduce[machines][products] = ...;
|
||||
int maxProductsInMonth[months][products] = ...;
|
||||
|
||||
//Parametry magazynowania
|
||||
int storageMax[products] = ...;
|
||||
int storageCost = ...;
|
||||
int storageStart[products] = ...;
|
||||
|
||||
//Parametry do generowania scenariusze (nieuzywane w modelu CPLEX)
|
||||
int mu[products] = ...;
|
||||
int sigma[products][products] = ...;
|
||||
|
||||
//Macierz scenariuszy dochodow ze sprzedazy: typ produkty (kolumna) - scenariusz (wiersz)
|
||||
float sellProfit[scenarios][products] = ...;
|
||||
|
||||
/*********** ZMIENNE DECYZYJNE ********************************************/
|
||||
dvar int produce[months][products]; // Liczba wyprodukowanych
|
||||
dvar int sell[months][products]; // Liczba sprzedanych
|
||||
dvar int stock[months][products]; // Liczba w magazynie
|
||||
dvar int produce[months][products];
|
||||
dvar int sell[months][products];
|
||||
dvar int stock[months][products];
|
||||
|
||||
// Czas wykorzystany na danym typie maszyna na dany typ produktu
|
||||
dvar float workTime[months][machines][products];
|
||||
|
||||
// Zmienna binarna - czy sprzedaz danego typu produktu przekaroczyla 80 procent pojemnosci rynku
|
||||
dvar boolean if80prec[months][products];
|
||||
|
||||
// Zmienna - ile pieniedzy nalezy odjac od dochodow z poszczegolnych produkow
|
||||
// w poszczegolnych miesiacach ze wzgledu na przekroczenie 80% pojmnosci rynku
|
||||
dvar float lowerProfit[scenarios][months][products];
|
||||
|
||||
/************ KRYTERIA OCENY *********************************************/
|
||||
// ZYSK policzony dla poszczegolnych scenariuszy
|
||||
dexpr float profit[i in scenarios] = sum(m in months, p in products)
|
||||
(sell[m][p]*sellProfit[i][p]-lowerProfit[i][m][p]- stock[m][p]*storageCost);
|
||||
|
||||
// wartosc oczekiwana zysku policzona jako srednia
|
||||
dexpr float avgProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
|
||||
dexpr float averageProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
|
||||
|
||||
// RYZYKO zdefiniowane srednia roznica Giniego
|
||||
dexpr float giniRisk = sum (t1 in scenarios, t2 in scenarios ) (
|
||||
dexpr float riskMeasureGini = sum (t1 in scenarios, t2 in scenarios ) (
|
||||
0.5 * abs(profit[t1] - profit[t2]) * 1/numberOfScenarios * 1/numberOfScenarios
|
||||
);
|
||||
|
||||
// funkcja celu
|
||||
minimize giniRisk;
|
||||
//maximize avgProfit;
|
||||
minimize riskMeasureGini;
|
||||
|
||||
// ************** OGRANICZENIA ******************************************/
|
||||
subject to {
|
||||
// Zmienne decyzyjne nie mniejsze niz zero
|
||||
forall(i in scenarios, m in months, mc in machines, p in products) {
|
||||
workTime[m][mc][p] >= 0;
|
||||
produce[m][p] >= 0;
|
||||
@ -74,30 +53,24 @@ subject to {
|
||||
stock[m][p] >= 0;
|
||||
lowerProfit[i][m][p] >= 0;
|
||||
}
|
||||
// Ogranicznie czasu produkcji maszyn w miesiacu
|
||||
forall(m in months, mc in machines) {
|
||||
sum(p in products) (workTime[m][mc][p]) <= (machineCount[mc]*numberOfHoursInFactory);
|
||||
}
|
||||
// Ograniczenie definiujace wykorzystany czas pracy maszyn
|
||||
forall(m in months, p in products, mc in machines) {
|
||||
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
|
||||
}
|
||||
// Ogranicznie maksymalnej pojemnosci rynku
|
||||
forall(m in months, p in products) {
|
||||
sell[m][p] <= maxProductsInMonth[m][p];
|
||||
}
|
||||
// Ogranicznie ustawiajace zmienna binarna po przekroczeniu 80 procent pojemnosci rynku
|
||||
forall(m in months, p in products) {
|
||||
sell[m][p] <= 0.8*maxProductsInMonth[m][p] + 1000000 * if80prec[m][p];
|
||||
sell[m][p] >= 0.8*maxProductsInMonth[m][p] * if80prec[m][p];
|
||||
}
|
||||
// Ograniczenia linearyzujace wplyw zmiennej binarnej na funkcje celu
|
||||
forall (i in scenarios,m in months, p in products) {
|
||||
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
|
||||
lowerProfit[i][m][p] <= 0.2 * sell[m][p]*sellProfit[i][p];
|
||||
0.2 * sell[m][p]*sellProfit[i][p] - lowerProfit[i][m][p] + 1000000 * if80prec[m][p] <= 1000000;
|
||||
}
|
||||
// Ograniczenie sprzedazy oraz definicja ilosci towaru pozostajacej w magazynie
|
||||
forall(m in months, p in products) {
|
||||
if(m == 1) { //pierwszy miesiac
|
||||
sell[m][p] <= produce[m][p]+storageStart[p];
|
||||
@ -107,8 +80,6 @@ subject to {
|
||||
stock[m][p]==(produce[m][p] + stock[m-1][p])-sell[m][p];
|
||||
}
|
||||
}
|
||||
// Ogranicznie maksymalnej ilosci magazynowanych produktow oraz
|
||||
// wymaganej ilosc pozostalej w magazynie na na koniec symulacji
|
||||
forall(m in months, p in products) {
|
||||
stock[m][p] <= storageMax[p];
|
||||
if(m == 3) {
|
||||
@ -118,5 +89,5 @@ subject to {
|
||||
}
|
||||
execute {
|
||||
cplex.tilim = 600;
|
||||
writeln("avgProfit: ",avgProfit,", giniRisk: ",giniRisk);
|
||||
writeln("averageProfit: ",averageProfit,", riskMeasureGini: ",riskMeasureGini);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,3 @@
|
||||
/***********PARAMETRY************************/
|
||||
//Paramatry zostaladniej opisane w pliku .dat oraz raporcie
|
||||
|
||||
// Parametry liczbowe
|
||||
int numberOfMachineTypes = ...;
|
||||
int numberOfMonths = ...;
|
||||
int numberOfProductsTypes = ...;
|
||||
@ -9,67 +5,48 @@ int numberOfProductsTypes = ...;
|
||||
int numberOfHoursInFactory = ...;
|
||||
int numberOfScenarios = ...;
|
||||
|
||||
// Utworzenie wektorow indeksujacych
|
||||
{int} machines = asSet(1..numberOfMachineTypes);
|
||||
{int} months = asSet(1..numberOfMonths);
|
||||
{int} products = asSet(1..numberOfProductsTypes);
|
||||
{int} scenarios = asSet(1..numberOfScenarios);
|
||||
|
||||
//Parametry produkcji i sprzedazy
|
||||
int machineCount[machines] = ...;
|
||||
float timeToProduce[machines][products] = ...;
|
||||
int maxProductsInMonth[months][products] = ...;
|
||||
|
||||
//Parametry magazynowania
|
||||
int storageMax[products] = ...;
|
||||
int storageCost = ...;
|
||||
int storageStart[products] = ...;
|
||||
|
||||
//Parametry do generowania scenariusze (nieuzywane w modelu CPLEX)
|
||||
int mu[products] = ...;
|
||||
int sigma[products][products] = ...;
|
||||
|
||||
//Macierz scenariuszy dochodow ze sprzedazy: typ produkty (kolumna) - scenariusz (wiersz)
|
||||
float sellProfit[scenarios][products] = ...;
|
||||
|
||||
/******************* PARAMTERY METODY: WYMAGANY POZIOM ZYSKU ***********/
|
||||
float minAvgProfit = ...; //wymagany poziom zysku
|
||||
float minimalAverageProfit = ...; //wymagany poziom zysku
|
||||
|
||||
/*********** ZMIENNE DECYZYJNE ********************************************/
|
||||
dvar int produce[months][products]; // Liczba wyprodukowanych
|
||||
dvar int sell[months][products]; // Liczba sprzedanych
|
||||
dvar int stock[months][products]; // Liczba w magazynie
|
||||
dvar int produce[months][products];
|
||||
dvar int sell[months][products];
|
||||
dvar int stock[months][products];
|
||||
|
||||
// Czas wykorzystany na danym typie maszyna na dany typ produktu
|
||||
dvar float workTime[months][machines][products];
|
||||
|
||||
// Zmienna binarna - czy sprzedaz danego typu produktu przekaroczyla 80 procent pojemnosci rynku
|
||||
dvar boolean if80prec[months][products];
|
||||
|
||||
// Zmienna - ile pieniedzy nalezy odjac od dochodow z poszczegolnych produkow
|
||||
// w poszczegolnych miesiacach ze wzgledu na przekroczenie 80% pojmnosci rynku
|
||||
dvar float lowerProfit[scenarios][months][products];
|
||||
|
||||
/************ KRYTERIA OCENY *********************************************/
|
||||
// ZYSK policzony dla poszczegolnych scenariuszy
|
||||
dexpr float profit[i in scenarios] = sum(m in months, p in products)
|
||||
(sell[m][p]*sellProfit[i][p]-lowerProfit[i][m][p]- stock[m][p]*storageCost);
|
||||
|
||||
// wartosc oczekiwana zysku policzona jako srednia
|
||||
dexpr float avgProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
|
||||
dexpr float averageProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
|
||||
|
||||
// RYZYKO zdefiniowane srednia roznica Giniego
|
||||
dexpr float giniRisk = sum (t1 in scenarios, t2 in scenarios ) (
|
||||
dexpr float riskMeasureGini = sum (t1 in scenarios, t2 in scenarios ) (
|
||||
0.5 * abs(profit[t1] - profit[t2]) * 1/numberOfScenarios * 1/numberOfScenarios
|
||||
);
|
||||
|
||||
// funkcja celu
|
||||
minimize giniRisk;
|
||||
//maximize avgProfit;
|
||||
minimize riskMeasureGini;
|
||||
|
||||
// ************** OGRANICZENIA ******************************************/
|
||||
subject to {
|
||||
// Zmienne decyzyjne nie mniejsze niz zero
|
||||
forall(i in scenarios, m in months, mc in machines, p in products) {
|
||||
workTime[m][mc][p] >= 0;
|
||||
produce[m][p] >= 0;
|
||||
@ -77,30 +54,24 @@ subject to {
|
||||
stock[m][p] >= 0;
|
||||
lowerProfit[i][m][p] >= 0;
|
||||
}
|
||||
// Ogranicznie czasu produkcji maszyn w miesiacu
|
||||
forall(m in months, mc in machines) {
|
||||
sum(p in products) (workTime[m][mc][p]) <= (machineCount[mc]*numberOfHoursInFactory);
|
||||
}
|
||||
// Ograniczenie definiujace wykorzystany czas pracy maszyn
|
||||
forall(m in months, p in products, mc in machines) {
|
||||
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
|
||||
}
|
||||
// Ogranicznie maksymalnej pojemnosci rynku
|
||||
forall(m in months, p in products) {
|
||||
sell[m][p] <= maxProductsInMonth[m][p];
|
||||
}
|
||||
// Ogranicznie ustawiajace zmienna binarna po przekroczeniu 80 procent pojemnosci rynku
|
||||
forall(m in months, p in products) {
|
||||
sell[m][p] <= 0.8*maxProductsInMonth[m][p] + 1000000 * if80prec[m][p];
|
||||
sell[m][p] >= 0.8*maxProductsInMonth[m][p] * if80prec[m][p];
|
||||
}
|
||||
// Ograniczenia linearyzujace wplyw zmiennej binarnej na funkcje celu
|
||||
forall (i in scenarios,m in months, p in products) {
|
||||
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
|
||||
lowerProfit[i][m][p] <= 0.2 * sell[m][p]*sellProfit[i][p];
|
||||
0.2 * sell[m][p]*sellProfit[i][p] - lowerProfit[i][m][p] + 1000000 * if80prec[m][p] <= 1000000;
|
||||
}
|
||||
// Ograniczenie sprzedazy oraz definicja ilosci towaru pozostajacej w magazynie
|
||||
forall(m in months, p in products) {
|
||||
if(m == 1) { //pierwszy miesiac
|
||||
sell[m][p] <= produce[m][p]+storageStart[p];
|
||||
@ -110,23 +81,18 @@ subject to {
|
||||
stock[m][p]==(produce[m][p] + stock[m-1][p])-sell[m][p];
|
||||
}
|
||||
}
|
||||
// Ogranicznie maksymalnej ilosci magazynowanych produktow oraz
|
||||
// wymaganej ilosc pozostalej w magazynie na na koniec symulacji
|
||||
forall(m in months, p in products) {
|
||||
stock[m][p] <= storageMax[p];
|
||||
if(m == 3) {
|
||||
stock[m][p] >= 50;
|
||||
}
|
||||
}
|
||||
/******************OGRANICZENIE: WYMAGANY POZIOM ZYSKU ****************************/
|
||||
avgProfit>=minAvgProfit;
|
||||
averageProfit>=minimalAverageProfit;
|
||||
|
||||
}// Koniec ogranicznen
|
||||
}
|
||||
|
||||
main {
|
||||
var file = new IloOplOutputFile("result-minAvgProfit.txt");
|
||||
//var fileAP = new IloOplOutputFile("avgProfitScenario.txt");
|
||||
//var fileMR = new IloOplOutputFile("maxRiskScenario.txt");
|
||||
var file = new IloOplOutputFile("result-minimalAverageProfit.txt");
|
||||
|
||||
var mod = thisOplModel;
|
||||
var def = mod.modelDefinition;
|
||||
@ -134,25 +100,23 @@ main {
|
||||
var maxAvgProfit = 10048;
|
||||
var i = 1;
|
||||
|
||||
file.writeln("i;minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
|
||||
file.writeln("i;minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
|
||||
|
||||
data.minAvgProfit = -600.0;
|
||||
data.minimalAverageProfit = -600.0;
|
||||
|
||||
while (data.minAvgProfit <= maxAvgProfit) {
|
||||
while (data.minimalAverageProfit <= maxAvgProfit) {
|
||||
mod = new IloOplModel (def, cplex);
|
||||
mod.addDataSource(data);
|
||||
mod.generate();
|
||||
cplex.tilim = 10;
|
||||
cplex.solve();
|
||||
file.writeln(i,";",data.minAvgProfit,";",mod.avgProfit,";",mod.giniRisk,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
|
||||
writeln(i," minAvgProfit: ",data.minAvgProfit," avgProfit: ",mod.avgProfit,", giniRisk: ",mod.giniRisk);
|
||||
file.writeln(i,";",data.minimalAverageProfit,";",mod.averageProfit,";",mod.riskMeasureGini,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
|
||||
writeln(i," minimalAverageProfit: ",data.minimalAverageProfit," averageProfit: ",mod.averageProfit,", riskMeasureGini: ",mod.riskMeasureGini);
|
||||
mod.end();
|
||||
data.minAvgProfit = data.minAvgProfit + 532.41;
|
||||
data.minimalAverageProfit = data.minimalAverageProfit + 532.41;
|
||||
i = i+1;
|
||||
};
|
||||
|
||||
|
||||
file.close();
|
||||
//fileAP.close();
|
||||
//fileMR.close();
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,3 @@
|
||||
/***********PARAMETRY************************/
|
||||
//Paramatry zostaladniej opisane w pliku .dat oraz raporcie
|
||||
|
||||
// Parametry liczbowe
|
||||
int numberOfMachineTypes = ...;
|
||||
int numberOfMonths = ...;
|
||||
int numberOfProductsTypes = ...;
|
||||
@ -9,72 +5,52 @@ int numberOfProductsTypes = ...;
|
||||
int numberOfHoursInFactory = ...;
|
||||
int numberOfScenarios = ...;
|
||||
|
||||
// Utworzenie wektorow indeksujacych
|
||||
{int} machines = asSet(1..numberOfMachineTypes);
|
||||
{int} months = asSet(1..numberOfMonths);
|
||||
{int} products = asSet(1..numberOfProductsTypes);
|
||||
{int} scenarios = asSet(1..numberOfScenarios);
|
||||
|
||||
//Parametry produkcji i sprzedazy
|
||||
int machineCount[machines] = ...;
|
||||
float timeToProduce[machines][products] = ...;
|
||||
int maxProductsInMonth[months][products] = ...;
|
||||
|
||||
//Parametry magazynowania
|
||||
int storageMax[products] = ...;
|
||||
int storageCost = ...;
|
||||
int storageStart[products] = ...;
|
||||
|
||||
//Parametry do generowania scenariusze (nieuzywane w modelu CPLEX)
|
||||
int mu[products] = ...;
|
||||
int sigma[products][products] = ...;
|
||||
|
||||
//Macierz scenariuszy dochodow ze sprzedazy: typ produkty (kolumna) - scenariusz (wiersz)
|
||||
float sellProfit[scenarios][products] = ...;
|
||||
|
||||
/******************* PARAMTERY METODY: WYMAGANY POZIOM ZYSKU ***********/
|
||||
float minAvgProfit = ...; //wymagany poziom zysku
|
||||
float minimalAverageProfit = ...; //wymagany poziom zysku
|
||||
|
||||
/*********** ZMIENNE DECYZYJNE ********************************************/
|
||||
dvar int produce[months][products]; // Liczba wyprodukowanych
|
||||
dvar int sell[months][products]; // Liczba sprzedanych
|
||||
dvar int stock[months][products]; // Liczba w magazynie
|
||||
dvar int produce[months][products];
|
||||
dvar int sell[months][products];
|
||||
dvar int stock[months][products];
|
||||
|
||||
// Czas wykorzystany na danym typie maszyna na dany typ produktu
|
||||
dvar float workTime[months][machines][products];
|
||||
|
||||
// Zmienna binarna - czy sprzedaz danego typu produktu przekaroczyla 80 procent pojemnosci rynku
|
||||
dvar boolean if80prec[months][products];
|
||||
|
||||
// Zmienna - ile pieniedzy nalezy odjac od dochodow z poszczegolnych produkow
|
||||
// w poszczegolnych miesiacach ze wzgledu na przekroczenie 80% pojmnosci rynku
|
||||
dvar float lowerProfit[scenarios][months][products];
|
||||
|
||||
/************ KRYTERIA OCENY *********************************************/
|
||||
// ZYSK policzony dla poszczegolnych scenariuszy
|
||||
dexpr float profit[i in scenarios] = sum(m in months, p in products)
|
||||
(sell[m][p]*sellProfit[i][p]-lowerProfit[i][m][p]- stock[m][p]*storageCost);
|
||||
|
||||
// wartosc oczekiwana zysku policzona jako srednia
|
||||
dexpr float avgProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
|
||||
dexpr float averageProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
|
||||
|
||||
// DODATKOWE OBLICZNIE RYZYKA DLA KAZDEGO SCENARIUSZA - POTRZEBNE DO ANALIZY FSD
|
||||
dexpr float risk[i in scenarios] = sum (t in scenarios) (
|
||||
0.5 * abs(profit[i] - profit[t]) * 1/numberOfScenarios
|
||||
);
|
||||
|
||||
// RYZYKO zdefiniowane srednia roznica Giniego
|
||||
dexpr float giniRisk = sum (t1 in scenarios, t2 in scenarios ) (
|
||||
dexpr float riskMeasureGini = sum (t1 in scenarios, t2 in scenarios ) (
|
||||
0.5 * abs(profit[t1] - profit[t2]) * 1/numberOfScenarios * 1/numberOfScenarios
|
||||
);
|
||||
|
||||
// funkcja celu
|
||||
//minimize giniRisk;
|
||||
maximize avgProfit;
|
||||
maximize averageProfit;
|
||||
|
||||
// ************** OGRANICZENIA ******************************************/
|
||||
subject to {
|
||||
// Zmienne decyzyjne nie mniejsze niz zero
|
||||
forall(i in scenarios, m in months, mc in machines, p in products) {
|
||||
workTime[m][mc][p] >= 0;
|
||||
produce[m][p] >= 0;
|
||||
@ -82,30 +58,24 @@ subject to {
|
||||
stock[m][p] >= 0;
|
||||
lowerProfit[i][m][p] >= 0;
|
||||
}
|
||||
// Ogranicznie czasu produkcji maszyn w miesiacu
|
||||
forall(m in months, mc in machines) {
|
||||
sum(p in products) (workTime[m][mc][p]) <= (machineCount[mc]*numberOfHoursInFactory);
|
||||
}
|
||||
// Ograniczenie definiujace wykorzystany czas pracy maszyn
|
||||
forall(m in months, p in products, mc in machines) {
|
||||
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
|
||||
}
|
||||
// Ogranicznie maksymalnej pojemnosci rynku
|
||||
forall(m in months, p in products) {
|
||||
sell[m][p] <= maxProductsInMonth[m][p];
|
||||
}
|
||||
// Ogranicznie ustawiajace zmienna binarna po przekroczeniu 80 procent pojemnosci rynku
|
||||
forall(m in months, p in products) {
|
||||
sell[m][p] <= 0.8*maxProductsInMonth[m][p] + 1000000 * if80prec[m][p];
|
||||
sell[m][p] >= 0.8*maxProductsInMonth[m][p] * if80prec[m][p];
|
||||
}
|
||||
// Ograniczenia linearyzujace wplyw zmiennej binarnej na funkcje celu
|
||||
forall (i in scenarios,m in months, p in products) {
|
||||
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
|
||||
lowerProfit[i][m][p] <= 0.2 * sell[m][p]*sellProfit[i][p];
|
||||
0.2 * sell[m][p]*sellProfit[i][p] - lowerProfit[i][m][p] + 1000000 * if80prec[m][p] <= 1000000;
|
||||
}
|
||||
// Ograniczenie sprzedazy oraz definicja ilosci towaru pozostajacej w magazynie
|
||||
forall(m in months, p in products) {
|
||||
if(m == 1) { //pierwszy miesiac
|
||||
sell[m][p] <= produce[m][p]+storageStart[p];
|
||||
@ -115,50 +85,44 @@ subject to {
|
||||
stock[m][p]==(produce[m][p] + stock[m-1][p])-sell[m][p];
|
||||
}
|
||||
}
|
||||
// Ogranicznie maksymalnej ilosci magazynowanych produktow oraz
|
||||
// wymaganej ilosc pozostalej w magazynie na na koniec symulacji
|
||||
forall(m in months, p in products) {
|
||||
stock[m][p] <= storageMax[p];
|
||||
if(m == 3) {
|
||||
stock[m][p] >= 50;
|
||||
}
|
||||
}
|
||||
/******************OGRANICZENIE: WYMAGANY POZIOM ZYSKU ****************************/
|
||||
avgProfit>=minAvgProfit;
|
||||
averageProfit>=minimalAverageProfit;
|
||||
|
||||
}// Koniec ogranicznen
|
||||
}
|
||||
|
||||
main {
|
||||
//var fileProfit = new IloOplOutputFile("results-minAvgProfit-FSD-profit.txt");
|
||||
//var fileRisk = new IloOplOutputFile("results-minAvgProfit-FSD-risk.txt");
|
||||
var fileProfit = new IloOplOutputFile("results-minAvgProfit-FSD-profit(2).txt");
|
||||
var fileRisk = new IloOplOutputFile("results-minAvgProfit-FSD-risk(2).txt");
|
||||
var fileProfit = new IloOplOutputFile("results-minimalAverageProfit-FSD-profit_two.txt");
|
||||
var fileRisk = new IloOplOutputFile("results-minimalAverageProfit-FSD-risk_two.txt");
|
||||
|
||||
var mod = thisOplModel;
|
||||
var def = mod.modelDefinition;
|
||||
var data = mod.dataElements;
|
||||
var maxAvgProfit = 11031;
|
||||
var i = 1;
|
||||
/**************** Pierwsze wybrane rozwiazanie ************************************/
|
||||
fileProfit.writeln("minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
|
||||
fileRisk.writeln("minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
|
||||
fileProfit.writeln("minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
|
||||
fileRisk.writeln("minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
|
||||
|
||||
data.minAvgProfit = 8450.97;
|
||||
data.minimalAverageProfit = 8450.97;
|
||||
|
||||
mod = new IloOplModel (def, cplex);
|
||||
mod.addDataSource(data);
|
||||
mod.generate();
|
||||
|
||||
writeln("Pierwsze wybrane rozwiazanie: ");
|
||||
writeln("First solution: ");
|
||||
cplex.tilim = 60;
|
||||
cplex.solve();
|
||||
|
||||
writeln(i," minAvgProfit: ",data.minAvgProfit," avgProfit: ",mod.avgProfit,", giniRisk: ",mod.giniRisk);
|
||||
fileProfit.writeln(data.minAvgProfit,";",mod.avgProfit,";",mod.giniRisk,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
|
||||
fileRisk.writeln(data.minAvgProfit,";",mod.avgProfit,";",mod.giniRisk,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
|
||||
writeln(i," minimalAverageProfit: ",data.minimalAverageProfit," averageProfit: ",mod.averageProfit,", riskMeasureGini: ",mod.riskMeasureGini);
|
||||
fileProfit.writeln(data.minimalAverageProfit,";",mod.averageProfit,";",mod.riskMeasureGini,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
|
||||
fileRisk.writeln(data.minimalAverageProfit,";",mod.averageProfit,";",mod.riskMeasureGini,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
|
||||
|
||||
i = 1;4
|
||||
fileProfit.writeln("avgProfit: ");
|
||||
fileProfit.writeln("averageProfit: ");
|
||||
while (i<=data.numberOfScenarios) {
|
||||
fileProfit.writeln(mod.profit[i]);
|
||||
i++;
|
||||
@ -171,26 +135,25 @@ main {
|
||||
i++;
|
||||
};
|
||||
|
||||
/**************** Drugie wybrane rozwiazanie ************************************/
|
||||
fileProfit.writeln("minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
|
||||
fileRisk.writeln("minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
|
||||
fileProfit.writeln("minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
|
||||
fileRisk.writeln("minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
|
||||
|
||||
data.minAvgProfit = 8983.38;
|
||||
data.minimalAverageProfit = 8983.38;
|
||||
|
||||
|
||||
mod = new IloOplModel (def, cplex);
|
||||
mod.addDataSource(data);
|
||||
mod.generate();
|
||||
|
||||
writeln("Drugie wybrane rozwiazanie: ");
|
||||
writeln("Second solution: ");
|
||||
cplex.solve();
|
||||
|
||||
writeln(i," minAvgProfit: ",data.minAvgProfit," avgProfit: ",mod.avgProfit,", giniRisk: ",mod.giniRisk);
|
||||
fileProfit.writeln(data.minAvgProfit,";",mod.avgProfit,";",mod.giniRisk,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
|
||||
fileRisk.writeln(data.minAvgProfit,";",mod.avgProfit,";",mod.giniRisk,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
|
||||
writeln(i," minimalAverageProfit: ",data.minimalAverageProfit," averageProfit: ",mod.averageProfit,", riskMeasureGini: ",mod.riskMeasureGini);
|
||||
fileProfit.writeln(data.minimalAverageProfit,";",mod.averageProfit,";",mod.riskMeasureGini,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
|
||||
fileRisk.writeln(data.minimalAverageProfit,";",mod.averageProfit,";",mod.riskMeasureGini,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
|
||||
|
||||
i = 1;
|
||||
fileProfit.writeln("avgProfit: ");
|
||||
fileProfit.writeln("averageProfit: ");
|
||||
while (i<=data.numberOfScenarios) {
|
||||
fileProfit.writeln(mod.profit[i]);
|
||||
i++;
|
||||
@ -203,25 +166,24 @@ main {
|
||||
i++;
|
||||
};
|
||||
|
||||
/**************** Trzecie wybrane rozwiazanie ************************************/
|
||||
fileProfit.writeln("minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
|
||||
fileRisk.writeln("minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
|
||||
fileProfit.writeln("minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
|
||||
fileRisk.writeln("minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
|
||||
|
||||
data.minAvgProfit = 9515.79;
|
||||
data.minimalAverageProfit = 9515.79;
|
||||
|
||||
mod = new IloOplModel (def, cplex);
|
||||
mod.addDataSource(data);
|
||||
mod.generate();
|
||||
|
||||
writeln("Trzecie wybrane rozwiazanie: ");
|
||||
writeln("Third solution: ");
|
||||
cplex.solve();
|
||||
|
||||
writeln(i," minAvgProfit: ",data.minAvgProfit," avgProfit: ",mod.avgProfit,", giniRisk: ",mod.giniRisk);
|
||||
fileProfit.writeln(data.minAvgProfit,";",mod.avgProfit,";",mod.giniRisk,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
|
||||
fileRisk.writeln(data.minAvgProfit,";",mod.avgProfit,";",mod.giniRisk,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
|
||||
writeln(i," minimalAverageProfit: ",data.minimalAverageProfit," averageProfit: ",mod.averageProfit,", riskMeasureGini: ",mod.riskMeasureGini);
|
||||
fileProfit.writeln(data.minimalAverageProfit,";",mod.averageProfit,";",mod.riskMeasureGini,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
|
||||
fileRisk.writeln(data.minimalAverageProfit,";",mod.averageProfit,";",mod.riskMeasureGini,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
|
||||
|
||||
i = 1;
|
||||
fileProfit.writeln("avgProfit: ");
|
||||
fileProfit.writeln("averageProfit: ");
|
||||
while (i<=data.numberOfScenarios) {
|
||||
fileProfit.writeln(mod.profit[i]);
|
||||
i++;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user