mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-04 13:03:05 +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ć:
|
W kontekście przyjętych w projekcie oznaczeń, wyrażenie definiujące miarę ryzyka przyjmuje następującą postać:
|
||||||
\begin{equation}
|
\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}
|
\end{equation}
|
||||||
|
|
||||||
\subsection{Model preferencji}
|
\subsection{Model preferencji}
|
||||||
Model preferencji oparto na minimalizacji ryzyka przy zadanym poziomie średniego zysku.
|
Model preferencji oparto na minimalizacji ryzyka przy zadanym poziomie średniego zysku.
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
avgProfit<minAvgProfit
|
averageProfit<minimalAverageProfit
|
||||||
\end{equation}
|
\end{equation}
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
minimize giniRisk
|
minimize riskMeasureGini
|
||||||
\end{equation}
|
\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}
|
\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}.
|
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
|
from io import StringIO
|
||||||
|
|
||||||
# Your data
|
# 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
|
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
|
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
|
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
|
# Create the scatter plot
|
||||||
plt.figure(figsize=(10, 6))
|
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
|
# Add labels and title
|
||||||
plt.xlabel('Przeciętny Zysk')
|
plt.xlabel('Przeciętny Zysk')
|
||||||
@ -46,6 +46,6 @@ plt.tight_layout()
|
|||||||
plt.show()
|
plt.show()
|
||||||
|
|
||||||
# Print some basic statistics
|
# Print some basic statistics
|
||||||
print(f"Average Profit range: {df['avgProfit'].min():.2f} to {df['avgProfit'].max():.2f}")
|
print(f"Average Profit range: {df['averageProfit'].min():.2f} to {df['averageProfit'].max():.2f}")
|
||||||
print(f"Gini Risk range: {df['giniRisk'].min():.2f} to {df['giniRisk'].max():.2f}")
|
print(f"Gini Risk range: {df['riskMeasureGini'].min():.2f} to {df['riskMeasureGini'].max():.2f}")
|
||||||
print(f"Number of data points: {len(df)}")
|
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
|
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
|
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
|
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
|
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
|
10431.3
|
||||||
10701.3
|
10701.3
|
||||||
10289.3
|
10289.3
|
||||||
@ -31,9 +31,9 @@ avgProfit:
|
|||||||
10594.3
|
10594.3
|
||||||
9900.24
|
9900.24
|
||||||
10777.9
|
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
|
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
|
20154.7
|
||||||
20455.9
|
20455.9
|
||||||
20073
|
20073
|
||||||
@ -64,9 +64,9 @@ avgProfit:
|
|||||||
20397.9
|
20397.9
|
||||||
18593.3
|
18593.3
|
||||||
20510
|
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
|
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
|
26799.8
|
||||||
27035.6
|
27035.6
|
||||||
26275.1
|
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
|
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
|
25609.4
|
||||||
25873.7
|
25873.7
|
||||||
25413.2
|
25413.2
|
||||||
@ -31,9 +31,9 @@ avgProfit:
|
|||||||
25893.9
|
25893.9
|
||||||
23353.4
|
23353.4
|
||||||
25942
|
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
|
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
|
26186
|
||||||
26404.1
|
26404.1
|
||||||
25894.4
|
25894.4
|
||||||
@ -64,9 +64,9 @@ avgProfit:
|
|||||||
26478.2
|
26478.2
|
||||||
23787.7
|
23787.7
|
||||||
26501.1
|
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
|
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
|
26799.8
|
||||||
27035.6
|
27035.6
|
||||||
26275.1
|
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
|
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:
|
Risk:
|
||||||
184.458
|
184.458
|
||||||
@ -31,7 +31,7 @@ Risk:
|
|||||||
184.694
|
184.694
|
||||||
345.455
|
345.455
|
||||||
205.291
|
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
|
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:
|
Risk:
|
||||||
403.784
|
403.784
|
||||||
@ -64,7 +64,7 @@ Risk:
|
|||||||
409.978
|
409.978
|
||||||
795.275
|
795.275
|
||||||
421.261
|
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
|
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:
|
Risk:
|
||||||
559.839
|
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
|
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:
|
Risk:
|
||||||
530.713
|
530.713
|
||||||
@ -31,7 +31,7 @@ Risk:
|
|||||||
542.315
|
542.315
|
||||||
1072.76
|
1072.76
|
||||||
548.737
|
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
|
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:
|
Risk:
|
||||||
545.117
|
545.117
|
||||||
@ -64,7 +64,7 @@ Risk:
|
|||||||
560.188
|
560.188
|
||||||
1119.5
|
1119.5
|
||||||
563.245
|
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
|
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:
|
Risk:
|
||||||
559.839
|
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
|
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
|
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
|
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
|
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
|
8283.101223531
|
||||||
8360.092861464
|
8360.092861464
|
||||||
8023.436774628
|
8023.436774628
|
||||||
@ -31,9 +31,9 @@ avgProfit:
|
|||||||
8650.006339759
|
8650.006339759
|
||||||
7571.333855925
|
7571.333855925
|
||||||
9103.892851116
|
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
|
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
|
8779.880622914
|
||||||
8905.098118171
|
8905.098118171
|
||||||
8457.038873118
|
8457.038873118
|
||||||
@ -64,9 +64,9 @@ avgProfit:
|
|||||||
9208.592940681
|
9208.592940681
|
||||||
8041.287735389
|
8041.287735389
|
||||||
9707.228511359
|
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
|
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
|
9268.899026395
|
||||||
9430.210649623
|
9430.210649623
|
||||||
8919.631184021
|
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
|
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:
|
Risk:
|
||||||
215.259123099
|
215.259123099
|
||||||
@ -31,7 +31,7 @@ Risk:
|
|||||||
242.556855407
|
242.556855407
|
||||||
439.843445573
|
439.843445573
|
||||||
387.733839121
|
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
|
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:
|
Risk:
|
||||||
235.514485857
|
235.514485857
|
||||||
@ -64,7 +64,7 @@ Risk:
|
|||||||
265.756800627
|
265.756800627
|
||||||
471.056184256
|
471.056184256
|
||||||
426.381300665
|
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
|
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:
|
Risk:
|
||||||
257.771190407
|
257.771190407
|
||||||
|
|||||||
@ -1,2 +1,2 @@
|
|||||||
// solution (optimal) with objective 11031.2880472593
|
// 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
|
1 minimalAverageProfit: -600 averageProfit: -600, riskMeasureGini: 0
|
||||||
2 minAvgProfit: -67.59 avgProfit: -67.423334025, giniRisk: 12.249866065
|
2 minimalAverageProfit: -67.59 averageProfit: -67.423334025, riskMeasureGini: 12.249866065
|
||||||
3 minAvgProfit: 464.82 avgProfit: 465.647226284, giniRisk: 26.015138747
|
3 minimalAverageProfit: 464.82 averageProfit: 465.647226284, riskMeasureGini: 26.015138747
|
||||||
4 minAvgProfit: 997.23 avgProfit: 997.66185313, giniRisk: 40.349353614
|
4 minimalAverageProfit: 997.23 averageProfit: 997.66185313, riskMeasureGini: 40.349353614
|
||||||
5 minAvgProfit: 1529.64 avgProfit: 1530.172175866, giniRisk: 54.689711726
|
5 minimalAverageProfit: 1529.64 averageProfit: 1530.172175866, riskMeasureGini: 54.689711726
|
||||||
6 minAvgProfit: 2062.05 avgProfit: 2062.088549477, giniRisk: 69.062913221
|
6 minimalAverageProfit: 2062.05 averageProfit: 2062.088549477, riskMeasureGini: 69.062913221
|
||||||
7 minAvgProfit: 2594.46 avgProfit: 2594.684714046, giniRisk: 84.265583873
|
7 minimalAverageProfit: 2594.46 averageProfit: 2594.684714046, riskMeasureGini: 84.265583873
|
||||||
8 minAvgProfit: 3126.87 avgProfit: 3127.12427492, giniRisk: 99.497458717
|
8 minimalAverageProfit: 3126.87 averageProfit: 3127.12427492, riskMeasureGini: 99.497458717
|
||||||
9 minAvgProfit: 3659.28 avgProfit: 3659.345897427, giniRisk: 114.728718529
|
9 minimalAverageProfit: 3659.28 averageProfit: 3659.345897427, riskMeasureGini: 114.728718529
|
||||||
10 minAvgProfit: 4191.69 avgProfit: 4191.916591732, giniRisk: 129.963670504
|
10 minimalAverageProfit: 4191.69 averageProfit: 4191.916591732, riskMeasureGini: 129.963670504
|
||||||
11 minAvgProfit: 4724.1 avgProfit: 4724.191045823, giniRisk: 145.204545226
|
11 minimalAverageProfit: 4724.1 averageProfit: 4724.191045823, riskMeasureGini: 145.204545226
|
||||||
12 minAvgProfit: 5256.51 avgProfit: 5256.719240584, giniRisk: 162.349562672
|
12 minimalAverageProfit: 5256.51 averageProfit: 5256.719240584, riskMeasureGini: 162.349562672
|
||||||
13 minAvgProfit: 5788.92 avgProfit: 5789.016098305, giniRisk: 182.46075748
|
13 minimalAverageProfit: 5788.92 averageProfit: 5789.016098305, riskMeasureGini: 182.46075748
|
||||||
14 minAvgProfit: 6321.33 avgProfit: 6321.358645932, giniRisk: 205.000585625
|
14 minimalAverageProfit: 6321.33 averageProfit: 6321.358645932, riskMeasureGini: 205.000585625
|
||||||
15 minAvgProfit: 6853.74 avgProfit: 6853.83219788, giniRisk: 229.023498807
|
15 minimalAverageProfit: 6853.74 averageProfit: 6853.83219788, riskMeasureGini: 229.023498807
|
||||||
16 minAvgProfit: 7386.15 avgProfit: 7386.171785273, giniRisk: 253.962965038
|
16 minimalAverageProfit: 7386.15 averageProfit: 7386.171785273, riskMeasureGini: 253.962965038
|
||||||
17 minAvgProfit: 7918.56 avgProfit: 7918.565798346, giniRisk: 279.907638363
|
17 minimalAverageProfit: 7918.56 averageProfit: 7918.565798346, riskMeasureGini: 279.907638363
|
||||||
18 minAvgProfit: 8450.97 avgProfit: 8451.020747071, giniRisk: 306.383357869
|
18 minimalAverageProfit: 8450.97 averageProfit: 8451.020747071, riskMeasureGini: 306.383357869
|
||||||
19 minAvgProfit: 8983.38 avgProfit: 8983.400103901, giniRisk: 332.936696297
|
19 minimalAverageProfit: 8983.38 averageProfit: 8983.400103901, riskMeasureGini: 332.936696297
|
||||||
20 minAvgProfit: 9515.79 avgProfit: 9515.804890325, giniRisk: 360.18213126
|
20 minimalAverageProfit: 9515.79 averageProfit: 9515.804890325, riskMeasureGini: 360.18213126
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
Pierwsze wybrane rozwiazanie:
|
First solution:
|
||||||
1 minAvgProfit: 8450.97 avgProfit: 8451.020747071, giniRisk: 306.383357869
|
1 minimalAverageProfit: 8450.97 averageProfit: 8451.020747071, riskMeasureGini: 306.383357869
|
||||||
Drugie wybrane rozwiazanie:
|
Second solution:
|
||||||
31 minAvgProfit: 8983.38 avgProfit: 8983.400103901, giniRisk: 332.936696297
|
31 minimalAverageProfit: 8983.38 averageProfit: 8983.400103901, riskMeasureGini: 332.936696297
|
||||||
Trzecie wybrane rozwiazanie:
|
Third solution:
|
||||||
31 minAvgProfit: 9515.79 avgProfit: 9515.804890325, giniRisk: 360.18213126
|
31 minimalAverageProfit: 9515.79 averageProfit: 9515.804890325, riskMeasureGini: 360.18213126
|
||||||
|
|||||||
@ -1,48 +1,38 @@
|
|||||||
/*********************************************
|
numberOfMachineTypes = 5;
|
||||||
* OPL 12.5.1.0 Data
|
numberOfMonths = 3;
|
||||||
* Author: Krzysztof Rudnicki
|
numberOfProductsTypes = 4;
|
||||||
*********************************************/
|
|
||||||
|
|
||||||
/***************PARAMETRY********************/
|
|
||||||
numberOfMachineTypes = 5; //ilosc typow maszun
|
|
||||||
numberOfMonths = 3; //ilosc symulowanych miesiecy
|
|
||||||
numberOfProductsTypes = 4; //ilosc typow produktow
|
|
||||||
|
|
||||||
numberOfHoursInFactory = 384; //liczba godzin roboczych w miesiacu 2*8*24=384
|
numberOfHoursInFactory = 384;
|
||||||
numberOfScenarios = 1000; //ilosc scenariuszy w symulacji
|
numberOfScenarios = 1000;
|
||||||
|
|
||||||
// Ilosc maszyn poszczegolnych typow
|
|
||||||
machineCount = [4 2 3 1 1];
|
machineCount = [4 2 3 1 1];
|
||||||
|
|
||||||
// Koszty wykorzystania typow maszyn (wiersze)
|
|
||||||
//w wytwarzaniu poszczegolnych typow produktow (kolumny)
|
|
||||||
timeToProduce = [[ 0.4 0.6 0 0]
|
timeToProduce = [[ 0.4 0.6 0 0]
|
||||||
[ 0.2 0.1 0 0.6]
|
[ 0.2 0.1 0 0.6]
|
||||||
[ 0.1 0 0.7 0]
|
[ 0.1 0 0.7 0]
|
||||||
[ 0.06 0.04 0 0.05]
|
[ 0.06 0.04 0 0.05]
|
||||||
[ 0 0.05 0.02 0]];
|
[ 0 0.05 0.02 0]];
|
||||||
|
|
||||||
// Pojemnosc rynku - typ produktu(kolumny) w miesiacu(wiersz)
|
|
||||||
maxProductsInMonth = [[ 200 0 100 200]
|
maxProductsInMonth = [[ 200 0 100 200]
|
||||||
[ 300 100 200 200]
|
[ 300 100 200 200]
|
||||||
[ 0 300 100 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 *************************/
|
storageMax = [200 200 200 200];
|
||||||
// expected values (used only in t-student.R script)
|
storageCost = 1;
|
||||||
|
storageStart = [50 50 50 50];
|
||||||
|
|
||||||
|
|
||||||
mu = [9 8 7 6];
|
mu = [9 8 7 6];
|
||||||
|
|
||||||
// covariance (used only in t-student.R script)
|
|
||||||
sigma = [[ 16 -2 -1 -3]
|
sigma = [[ 16 -2 -1 -3]
|
||||||
[ -2 9 -4 -1]
|
[ -2 9 -4 -1]
|
||||||
[ -1 -4 4 1]
|
[ -1 -4 4 1]
|
||||||
[ -3 -1 1 1]];
|
[ -3 -1 1 1]];
|
||||||
|
|
||||||
// scenarios (generated by t-student.R script)
|
|
||||||
sellProfit = [[8.65514814631604 5.39276461442329 8.03724969792938 6.79964940685937]
|
sellProfit = [[8.65514814631604 5.39276461442329 8.03724969792938 6.79964940685937]
|
||||||
[6.35575682044805 10.7852400940011 6.64785935511483 5.82055888421908]
|
[6.35575682044805 10.7852400940011 6.64785935511483 5.82055888421908]
|
||||||
[8.92335604267353 5.39191667647047 6.1375823313882 7.20599829208949]
|
[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 numberOfMachineTypes = ...;
|
||||||
int numberOfMonths = ...;
|
int numberOfMonths = ...;
|
||||||
int numberOfProductsTypes = ...;
|
int numberOfProductsTypes = ...;
|
||||||
@ -9,57 +5,42 @@ int numberOfProductsTypes = ...;
|
|||||||
int numberOfHoursInFactory = ...;
|
int numberOfHoursInFactory = ...;
|
||||||
int numberOfScenarios = ...;
|
int numberOfScenarios = ...;
|
||||||
|
|
||||||
// Utworzenie wektorow indeksujacych
|
|
||||||
{int} machines = asSet(1..numberOfMachineTypes);
|
{int} machines = asSet(1..numberOfMachineTypes);
|
||||||
{int} months = asSet(1..numberOfMonths);
|
{int} months = asSet(1..numberOfMonths);
|
||||||
{int} products = asSet(1..numberOfProductsTypes);
|
{int} products = asSet(1..numberOfProductsTypes);
|
||||||
{int} scenarios = asSet(1..numberOfScenarios);
|
{int} scenarios = asSet(1..numberOfScenarios);
|
||||||
|
|
||||||
//Parametry produkcji i sprzedazy
|
|
||||||
int machineCount[machines] = ...;
|
int machineCount[machines] = ...;
|
||||||
float timeToProduce[machines][products] = ...;
|
float timeToProduce[machines][products] = ...;
|
||||||
int maxProductsInMonth[months][products] = ...;
|
int maxProductsInMonth[months][products] = ...;
|
||||||
|
|
||||||
//Parametry magazynowania
|
|
||||||
int storageMax[products] = ...;
|
int storageMax[products] = ...;
|
||||||
int storageCost = ...;
|
int storageCost = ...;
|
||||||
int storageStart[products] = ...;
|
int storageStart[products] = ...;
|
||||||
|
|
||||||
//Parametry do generowania scenariusze (nieuzywane w modelu CPLEX)
|
|
||||||
int mu[products] = ...;
|
int mu[products] = ...;
|
||||||
int sigma[products][products] = ...;
|
int sigma[products][products] = ...;
|
||||||
|
|
||||||
//Macierz scenariuszy dochodow ze sprzedazy: typ produkty (kolumna) - scenariusz (wiersz)
|
|
||||||
float sellProfit[scenarios][products] = ...;
|
float sellProfit[scenarios][products] = ...;
|
||||||
|
|
||||||
/*********** ZMIENNE DECYZYJNE ********************************************/
|
dvar int produce[months][products];
|
||||||
dvar int produce[months][products]; // Liczba wyprodukowanych
|
dvar int sell[months][products];
|
||||||
dvar int sell[months][products]; // Liczba sprzedanych
|
dvar int stock[months][products];
|
||||||
dvar int stock[months][products]; // Liczba w magazynie
|
|
||||||
|
|
||||||
// Czas wykorzystany na danym typie maszyna na dany typ produktu
|
|
||||||
dvar float workTime[months][machines][products];
|
dvar float workTime[months][machines][products];
|
||||||
|
|
||||||
// Zmienna binarna - czy sprzedaz danego typu produktu przekaroczyla 80 procent pojemnosci rynku
|
|
||||||
dvar boolean if80prec[months][products];
|
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];
|
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)
|
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);
|
(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
|
dexpr float averageProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
|
||||||
maximize avgProfit;
|
|
||||||
|
maximize averageProfit;
|
||||||
|
|
||||||
// ************** OGRANICZENIA ******************************************/
|
|
||||||
subject to {
|
subject to {
|
||||||
// Zmienne decyzyjne nie mniejsze niz zero
|
|
||||||
forall(i in scenarios, m in months, mc in machines, p in products) {
|
forall(i in scenarios, m in months, mc in machines, p in products) {
|
||||||
workTime[m][mc][p] >= 0;
|
workTime[m][mc][p] >= 0;
|
||||||
produce[m][p] >= 0;
|
produce[m][p] >= 0;
|
||||||
@ -67,30 +48,24 @@ subject to {
|
|||||||
stock[m][p] >= 0;
|
stock[m][p] >= 0;
|
||||||
lowerProfit[i][m][p] >= 0;
|
lowerProfit[i][m][p] >= 0;
|
||||||
}
|
}
|
||||||
// Ogranicznie czasu produkcji maszyn w miesiacu
|
|
||||||
forall(m in months, mc in machines) {
|
forall(m in months, mc in machines) {
|
||||||
sum(p in products) (workTime[m][mc][p]) <= (machineCount[mc]*numberOfHoursInFactory);
|
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) {
|
forall(m in months, p in products, mc in machines) {
|
||||||
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
|
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
|
||||||
}
|
}
|
||||||
// Ogranicznie maksymalnej pojemnosci rynku
|
|
||||||
forall(m in months, p in products) {
|
forall(m in months, p in products) {
|
||||||
sell[m][p] <= maxProductsInMonth[m][p];
|
sell[m][p] <= maxProductsInMonth[m][p];
|
||||||
}
|
}
|
||||||
// Ogranicznie ustawiajace zmienna binarna po przekroczeniu 80 procent pojemnosci rynku
|
|
||||||
forall(m in months, p in products) {
|
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] + 1000000 * if80prec[m][p];
|
||||||
sell[m][p] >= 0.8*maxProductsInMonth[m][p] * 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) {
|
forall (i in scenarios,m in months, p in products) {
|
||||||
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
|
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
|
||||||
lowerProfit[i][m][p] <= 0.2 * sell[m][p]*sellProfit[i][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;
|
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) {
|
forall(m in months, p in products) {
|
||||||
if(m == 1) { //pierwszy miesiac
|
if(m == 1) { //pierwszy miesiac
|
||||||
sell[m][p] <= produce[m][p]+storageStart[p];
|
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];
|
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) {
|
forall(m in months, p in products) {
|
||||||
stock[m][p] <= storageMax[p];
|
stock[m][p] <= storageMax[p];
|
||||||
if(m == 3) {
|
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 numberOfMachineTypes = ...;
|
||||||
int numberOfMonths = ...;
|
int numberOfMonths = ...;
|
||||||
int numberOfProductsTypes = ...;
|
int numberOfProductsTypes = ...;
|
||||||
@ -9,64 +6,46 @@ int numberOfProductsTypes = ...;
|
|||||||
int numberOfHoursInFactory = ...;
|
int numberOfHoursInFactory = ...;
|
||||||
int numberOfScenarios = ...;
|
int numberOfScenarios = ...;
|
||||||
|
|
||||||
// Utworzenie wektorow indeksujacych
|
|
||||||
{int} machines = asSet(1..numberOfMachineTypes);
|
{int} machines = asSet(1..numberOfMachineTypes);
|
||||||
{int} months = asSet(1..numberOfMonths);
|
{int} months = asSet(1..numberOfMonths);
|
||||||
{int} products = asSet(1..numberOfProductsTypes);
|
{int} products = asSet(1..numberOfProductsTypes);
|
||||||
{int} scenarios = asSet(1..numberOfScenarios);
|
{int} scenarios = asSet(1..numberOfScenarios);
|
||||||
|
|
||||||
//Parametry produkcji i sprzedazy
|
|
||||||
int machineCount[machines] = ...;
|
int machineCount[machines] = ...;
|
||||||
float timeToProduce[machines][products] = ...;
|
float timeToProduce[machines][products] = ...;
|
||||||
int maxProductsInMonth[months][products] = ...;
|
int maxProductsInMonth[months][products] = ...;
|
||||||
|
|
||||||
//Parametry magazynowania
|
|
||||||
int storageMax[products] = ...;
|
int storageMax[products] = ...;
|
||||||
int storageCost = ...;
|
int storageCost = ...;
|
||||||
int storageStart[products] = ...;
|
int storageStart[products] = ...;
|
||||||
|
|
||||||
//Parametry do generowania scenariusze (nieuzywane w modelu CPLEX)
|
|
||||||
int mu[products] = ...;
|
int mu[products] = ...;
|
||||||
int sigma[products][products] = ...;
|
int sigma[products][products] = ...;
|
||||||
|
|
||||||
//Macierz scenariuszy dochodow ze sprzedazy: typ produkty (kolumna) - scenariusz (wiersz)
|
|
||||||
float sellProfit[scenarios][products] = ...;
|
float sellProfit[scenarios][products] = ...;
|
||||||
|
|
||||||
/*********** ZMIENNE DECYZYJNE ********************************************/
|
dvar int produce[months][products];
|
||||||
dvar int produce[months][products]; // Liczba wyprodukowanych
|
dvar int sell[months][products];
|
||||||
dvar int sell[months][products]; // Liczba sprzedanych
|
dvar int stock[months][products];
|
||||||
dvar int stock[months][products]; // Liczba w magazynie
|
|
||||||
|
|
||||||
// Czas wykorzystany na danym typie maszyna na dany typ produktu
|
|
||||||
dvar float workTime[months][machines][products];
|
dvar float workTime[months][machines][products];
|
||||||
|
|
||||||
// Zmienna binarna - czy sprzedaz danego typu produktu przekaroczyla 80 procent pojemnosci rynku
|
|
||||||
dvar boolean if80prec[months][products];
|
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];
|
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)
|
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);
|
(sell[m][p]*sellProfit[i][p]-lowerProfit[i][m][p]- stock[m][p]*storageCost);
|
||||||
|
|
||||||
// wartosc oczekiwana zysku policzona jako srednia
|
dexpr float averageProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
|
||||||
dexpr float avgProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
|
|
||||||
|
|
||||||
// RYZYKO zdefiniowane srednia roznica Giniego
|
dexpr float riskMeasureGini = sum (t1 in scenarios, t2 in scenarios ) (
|
||||||
dexpr float giniRisk = sum (t1 in scenarios, t2 in scenarios ) (
|
|
||||||
0.5 * abs(profit[t1] - profit[t2]) * 1/numberOfScenarios * 1/numberOfScenarios
|
0.5 * abs(profit[t1] - profit[t2]) * 1/numberOfScenarios * 1/numberOfScenarios
|
||||||
);
|
);
|
||||||
|
|
||||||
// funkcja celu
|
minimize riskMeasureGini;
|
||||||
minimize giniRisk;
|
|
||||||
//maximize avgProfit;
|
|
||||||
|
|
||||||
// ************** OGRANICZENIA ******************************************/
|
|
||||||
subject to {
|
subject to {
|
||||||
// Zmienne decyzyjne nie mniejsze niz zero
|
|
||||||
forall(i in scenarios, m in months, mc in machines, p in products) {
|
forall(i in scenarios, m in months, mc in machines, p in products) {
|
||||||
workTime[m][mc][p] >= 0;
|
workTime[m][mc][p] >= 0;
|
||||||
produce[m][p] >= 0;
|
produce[m][p] >= 0;
|
||||||
@ -74,30 +53,24 @@ subject to {
|
|||||||
stock[m][p] >= 0;
|
stock[m][p] >= 0;
|
||||||
lowerProfit[i][m][p] >= 0;
|
lowerProfit[i][m][p] >= 0;
|
||||||
}
|
}
|
||||||
// Ogranicznie czasu produkcji maszyn w miesiacu
|
|
||||||
forall(m in months, mc in machines) {
|
forall(m in months, mc in machines) {
|
||||||
sum(p in products) (workTime[m][mc][p]) <= (machineCount[mc]*numberOfHoursInFactory);
|
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) {
|
forall(m in months, p in products, mc in machines) {
|
||||||
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
|
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
|
||||||
}
|
}
|
||||||
// Ogranicznie maksymalnej pojemnosci rynku
|
|
||||||
forall(m in months, p in products) {
|
forall(m in months, p in products) {
|
||||||
sell[m][p] <= maxProductsInMonth[m][p];
|
sell[m][p] <= maxProductsInMonth[m][p];
|
||||||
}
|
}
|
||||||
// Ogranicznie ustawiajace zmienna binarna po przekroczeniu 80 procent pojemnosci rynku
|
|
||||||
forall(m in months, p in products) {
|
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] + 1000000 * if80prec[m][p];
|
||||||
sell[m][p] >= 0.8*maxProductsInMonth[m][p] * 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) {
|
forall (i in scenarios,m in months, p in products) {
|
||||||
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
|
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
|
||||||
lowerProfit[i][m][p] <= 0.2 * sell[m][p]*sellProfit[i][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;
|
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) {
|
forall(m in months, p in products) {
|
||||||
if(m == 1) { //pierwszy miesiac
|
if(m == 1) { //pierwszy miesiac
|
||||||
sell[m][p] <= produce[m][p]+storageStart[p];
|
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];
|
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) {
|
forall(m in months, p in products) {
|
||||||
stock[m][p] <= storageMax[p];
|
stock[m][p] <= storageMax[p];
|
||||||
if(m == 3) {
|
if(m == 3) {
|
||||||
@ -118,5 +89,5 @@ subject to {
|
|||||||
}
|
}
|
||||||
execute {
|
execute {
|
||||||
cplex.tilim = 600;
|
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 numberOfMachineTypes = ...;
|
||||||
int numberOfMonths = ...;
|
int numberOfMonths = ...;
|
||||||
int numberOfProductsTypes = ...;
|
int numberOfProductsTypes = ...;
|
||||||
@ -9,67 +5,48 @@ int numberOfProductsTypes = ...;
|
|||||||
int numberOfHoursInFactory = ...;
|
int numberOfHoursInFactory = ...;
|
||||||
int numberOfScenarios = ...;
|
int numberOfScenarios = ...;
|
||||||
|
|
||||||
// Utworzenie wektorow indeksujacych
|
|
||||||
{int} machines = asSet(1..numberOfMachineTypes);
|
{int} machines = asSet(1..numberOfMachineTypes);
|
||||||
{int} months = asSet(1..numberOfMonths);
|
{int} months = asSet(1..numberOfMonths);
|
||||||
{int} products = asSet(1..numberOfProductsTypes);
|
{int} products = asSet(1..numberOfProductsTypes);
|
||||||
{int} scenarios = asSet(1..numberOfScenarios);
|
{int} scenarios = asSet(1..numberOfScenarios);
|
||||||
|
|
||||||
//Parametry produkcji i sprzedazy
|
|
||||||
int machineCount[machines] = ...;
|
int machineCount[machines] = ...;
|
||||||
float timeToProduce[machines][products] = ...;
|
float timeToProduce[machines][products] = ...;
|
||||||
int maxProductsInMonth[months][products] = ...;
|
int maxProductsInMonth[months][products] = ...;
|
||||||
|
|
||||||
//Parametry magazynowania
|
|
||||||
int storageMax[products] = ...;
|
int storageMax[products] = ...;
|
||||||
int storageCost = ...;
|
int storageCost = ...;
|
||||||
int storageStart[products] = ...;
|
int storageStart[products] = ...;
|
||||||
|
|
||||||
//Parametry do generowania scenariusze (nieuzywane w modelu CPLEX)
|
|
||||||
int mu[products] = ...;
|
int mu[products] = ...;
|
||||||
int sigma[products][products] = ...;
|
int sigma[products][products] = ...;
|
||||||
|
|
||||||
//Macierz scenariuszy dochodow ze sprzedazy: typ produkty (kolumna) - scenariusz (wiersz)
|
|
||||||
float sellProfit[scenarios][products] = ...;
|
float sellProfit[scenarios][products] = ...;
|
||||||
|
|
||||||
/******************* PARAMTERY METODY: WYMAGANY POZIOM ZYSKU ***********/
|
float minimalAverageProfit = ...; //wymagany poziom zysku
|
||||||
float minAvgProfit = ...; //wymagany poziom zysku
|
|
||||||
|
|
||||||
/*********** ZMIENNE DECYZYJNE ********************************************/
|
dvar int produce[months][products];
|
||||||
dvar int produce[months][products]; // Liczba wyprodukowanych
|
dvar int sell[months][products];
|
||||||
dvar int sell[months][products]; // Liczba sprzedanych
|
dvar int stock[months][products];
|
||||||
dvar int stock[months][products]; // Liczba w magazynie
|
|
||||||
|
|
||||||
// Czas wykorzystany na danym typie maszyna na dany typ produktu
|
|
||||||
dvar float workTime[months][machines][products];
|
dvar float workTime[months][machines][products];
|
||||||
|
|
||||||
// Zmienna binarna - czy sprzedaz danego typu produktu przekaroczyla 80 procent pojemnosci rynku
|
|
||||||
dvar boolean if80prec[months][products];
|
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];
|
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)
|
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);
|
(sell[m][p]*sellProfit[i][p]-lowerProfit[i][m][p]- stock[m][p]*storageCost);
|
||||||
|
|
||||||
// wartosc oczekiwana zysku policzona jako srednia
|
dexpr float averageProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
|
||||||
dexpr float avgProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
|
|
||||||
|
|
||||||
// RYZYKO zdefiniowane srednia roznica Giniego
|
dexpr float riskMeasureGini = sum (t1 in scenarios, t2 in scenarios ) (
|
||||||
dexpr float giniRisk = sum (t1 in scenarios, t2 in scenarios ) (
|
|
||||||
0.5 * abs(profit[t1] - profit[t2]) * 1/numberOfScenarios * 1/numberOfScenarios
|
0.5 * abs(profit[t1] - profit[t2]) * 1/numberOfScenarios * 1/numberOfScenarios
|
||||||
);
|
);
|
||||||
|
|
||||||
// funkcja celu
|
minimize riskMeasureGini;
|
||||||
minimize giniRisk;
|
|
||||||
//maximize avgProfit;
|
|
||||||
|
|
||||||
// ************** OGRANICZENIA ******************************************/
|
|
||||||
subject to {
|
subject to {
|
||||||
// Zmienne decyzyjne nie mniejsze niz zero
|
|
||||||
forall(i in scenarios, m in months, mc in machines, p in products) {
|
forall(i in scenarios, m in months, mc in machines, p in products) {
|
||||||
workTime[m][mc][p] >= 0;
|
workTime[m][mc][p] >= 0;
|
||||||
produce[m][p] >= 0;
|
produce[m][p] >= 0;
|
||||||
@ -77,30 +54,24 @@ subject to {
|
|||||||
stock[m][p] >= 0;
|
stock[m][p] >= 0;
|
||||||
lowerProfit[i][m][p] >= 0;
|
lowerProfit[i][m][p] >= 0;
|
||||||
}
|
}
|
||||||
// Ogranicznie czasu produkcji maszyn w miesiacu
|
|
||||||
forall(m in months, mc in machines) {
|
forall(m in months, mc in machines) {
|
||||||
sum(p in products) (workTime[m][mc][p]) <= (machineCount[mc]*numberOfHoursInFactory);
|
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) {
|
forall(m in months, p in products, mc in machines) {
|
||||||
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
|
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
|
||||||
}
|
}
|
||||||
// Ogranicznie maksymalnej pojemnosci rynku
|
|
||||||
forall(m in months, p in products) {
|
forall(m in months, p in products) {
|
||||||
sell[m][p] <= maxProductsInMonth[m][p];
|
sell[m][p] <= maxProductsInMonth[m][p];
|
||||||
}
|
}
|
||||||
// Ogranicznie ustawiajace zmienna binarna po przekroczeniu 80 procent pojemnosci rynku
|
|
||||||
forall(m in months, p in products) {
|
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] + 1000000 * if80prec[m][p];
|
||||||
sell[m][p] >= 0.8*maxProductsInMonth[m][p] * 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) {
|
forall (i in scenarios,m in months, p in products) {
|
||||||
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
|
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
|
||||||
lowerProfit[i][m][p] <= 0.2 * sell[m][p]*sellProfit[i][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;
|
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) {
|
forall(m in months, p in products) {
|
||||||
if(m == 1) { //pierwszy miesiac
|
if(m == 1) { //pierwszy miesiac
|
||||||
sell[m][p] <= produce[m][p]+storageStart[p];
|
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];
|
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) {
|
forall(m in months, p in products) {
|
||||||
stock[m][p] <= storageMax[p];
|
stock[m][p] <= storageMax[p];
|
||||||
if(m == 3) {
|
if(m == 3) {
|
||||||
stock[m][p] >= 50;
|
stock[m][p] >= 50;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/******************OGRANICZENIE: WYMAGANY POZIOM ZYSKU ****************************/
|
averageProfit>=minimalAverageProfit;
|
||||||
avgProfit>=minAvgProfit;
|
|
||||||
|
|
||||||
}// Koniec ogranicznen
|
}
|
||||||
|
|
||||||
main {
|
main {
|
||||||
var file = new IloOplOutputFile("result-minAvgProfit.txt");
|
var file = new IloOplOutputFile("result-minimalAverageProfit.txt");
|
||||||
//var fileAP = new IloOplOutputFile("avgProfitScenario.txt");
|
|
||||||
//var fileMR = new IloOplOutputFile("maxRiskScenario.txt");
|
|
||||||
|
|
||||||
var mod = thisOplModel;
|
var mod = thisOplModel;
|
||||||
var def = mod.modelDefinition;
|
var def = mod.modelDefinition;
|
||||||
@ -134,25 +100,23 @@ main {
|
|||||||
var maxAvgProfit = 10048;
|
var maxAvgProfit = 10048;
|
||||||
var i = 1;
|
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 = new IloOplModel (def, cplex);
|
||||||
mod.addDataSource(data);
|
mod.addDataSource(data);
|
||||||
mod.generate();
|
mod.generate();
|
||||||
cplex.tilim = 10;
|
cplex.tilim = 10;
|
||||||
cplex.solve();
|
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]);
|
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," minAvgProfit: ",data.minAvgProfit," avgProfit: ",mod.avgProfit,", giniRisk: ",mod.giniRisk);
|
writeln(i," minimalAverageProfit: ",data.minimalAverageProfit," averageProfit: ",mod.averageProfit,", riskMeasureGini: ",mod.riskMeasureGini);
|
||||||
mod.end();
|
mod.end();
|
||||||
data.minAvgProfit = data.minAvgProfit + 532.41;
|
data.minimalAverageProfit = data.minimalAverageProfit + 532.41;
|
||||||
i = i+1;
|
i = i+1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
file.close();
|
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 numberOfMachineTypes = ...;
|
||||||
int numberOfMonths = ...;
|
int numberOfMonths = ...;
|
||||||
int numberOfProductsTypes = ...;
|
int numberOfProductsTypes = ...;
|
||||||
@ -9,72 +5,52 @@ int numberOfProductsTypes = ...;
|
|||||||
int numberOfHoursInFactory = ...;
|
int numberOfHoursInFactory = ...;
|
||||||
int numberOfScenarios = ...;
|
int numberOfScenarios = ...;
|
||||||
|
|
||||||
// Utworzenie wektorow indeksujacych
|
|
||||||
{int} machines = asSet(1..numberOfMachineTypes);
|
{int} machines = asSet(1..numberOfMachineTypes);
|
||||||
{int} months = asSet(1..numberOfMonths);
|
{int} months = asSet(1..numberOfMonths);
|
||||||
{int} products = asSet(1..numberOfProductsTypes);
|
{int} products = asSet(1..numberOfProductsTypes);
|
||||||
{int} scenarios = asSet(1..numberOfScenarios);
|
{int} scenarios = asSet(1..numberOfScenarios);
|
||||||
|
|
||||||
//Parametry produkcji i sprzedazy
|
|
||||||
int machineCount[machines] = ...;
|
int machineCount[machines] = ...;
|
||||||
float timeToProduce[machines][products] = ...;
|
float timeToProduce[machines][products] = ...;
|
||||||
int maxProductsInMonth[months][products] = ...;
|
int maxProductsInMonth[months][products] = ...;
|
||||||
|
|
||||||
//Parametry magazynowania
|
|
||||||
int storageMax[products] = ...;
|
int storageMax[products] = ...;
|
||||||
int storageCost = ...;
|
int storageCost = ...;
|
||||||
int storageStart[products] = ...;
|
int storageStart[products] = ...;
|
||||||
|
|
||||||
//Parametry do generowania scenariusze (nieuzywane w modelu CPLEX)
|
|
||||||
int mu[products] = ...;
|
int mu[products] = ...;
|
||||||
int sigma[products][products] = ...;
|
int sigma[products][products] = ...;
|
||||||
|
|
||||||
//Macierz scenariuszy dochodow ze sprzedazy: typ produkty (kolumna) - scenariusz (wiersz)
|
|
||||||
float sellProfit[scenarios][products] = ...;
|
float sellProfit[scenarios][products] = ...;
|
||||||
|
|
||||||
/******************* PARAMTERY METODY: WYMAGANY POZIOM ZYSKU ***********/
|
float minimalAverageProfit = ...; //wymagany poziom zysku
|
||||||
float minAvgProfit = ...; //wymagany poziom zysku
|
|
||||||
|
|
||||||
/*********** ZMIENNE DECYZYJNE ********************************************/
|
dvar int produce[months][products];
|
||||||
dvar int produce[months][products]; // Liczba wyprodukowanych
|
dvar int sell[months][products];
|
||||||
dvar int sell[months][products]; // Liczba sprzedanych
|
dvar int stock[months][products];
|
||||||
dvar int stock[months][products]; // Liczba w magazynie
|
|
||||||
|
|
||||||
// Czas wykorzystany na danym typie maszyna na dany typ produktu
|
|
||||||
dvar float workTime[months][machines][products];
|
dvar float workTime[months][machines][products];
|
||||||
|
|
||||||
// Zmienna binarna - czy sprzedaz danego typu produktu przekaroczyla 80 procent pojemnosci rynku
|
|
||||||
dvar boolean if80prec[months][products];
|
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];
|
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)
|
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);
|
(sell[m][p]*sellProfit[i][p]-lowerProfit[i][m][p]- stock[m][p]*storageCost);
|
||||||
|
|
||||||
// wartosc oczekiwana zysku policzona jako srednia
|
dexpr float averageProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
|
||||||
dexpr float avgProfit = 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) (
|
dexpr float risk[i in scenarios] = sum (t in scenarios) (
|
||||||
0.5 * abs(profit[i] - profit[t]) * 1/numberOfScenarios
|
0.5 * abs(profit[i] - profit[t]) * 1/numberOfScenarios
|
||||||
);
|
);
|
||||||
|
|
||||||
// RYZYKO zdefiniowane srednia roznica Giniego
|
dexpr float riskMeasureGini = sum (t1 in scenarios, t2 in scenarios ) (
|
||||||
dexpr float giniRisk = sum (t1 in scenarios, t2 in scenarios ) (
|
|
||||||
0.5 * abs(profit[t1] - profit[t2]) * 1/numberOfScenarios * 1/numberOfScenarios
|
0.5 * abs(profit[t1] - profit[t2]) * 1/numberOfScenarios * 1/numberOfScenarios
|
||||||
);
|
);
|
||||||
|
|
||||||
// funkcja celu
|
maximize averageProfit;
|
||||||
//minimize giniRisk;
|
|
||||||
maximize avgProfit;
|
|
||||||
|
|
||||||
// ************** OGRANICZENIA ******************************************/
|
|
||||||
subject to {
|
subject to {
|
||||||
// Zmienne decyzyjne nie mniejsze niz zero
|
|
||||||
forall(i in scenarios, m in months, mc in machines, p in products) {
|
forall(i in scenarios, m in months, mc in machines, p in products) {
|
||||||
workTime[m][mc][p] >= 0;
|
workTime[m][mc][p] >= 0;
|
||||||
produce[m][p] >= 0;
|
produce[m][p] >= 0;
|
||||||
@ -82,30 +58,24 @@ subject to {
|
|||||||
stock[m][p] >= 0;
|
stock[m][p] >= 0;
|
||||||
lowerProfit[i][m][p] >= 0;
|
lowerProfit[i][m][p] >= 0;
|
||||||
}
|
}
|
||||||
// Ogranicznie czasu produkcji maszyn w miesiacu
|
|
||||||
forall(m in months, mc in machines) {
|
forall(m in months, mc in machines) {
|
||||||
sum(p in products) (workTime[m][mc][p]) <= (machineCount[mc]*numberOfHoursInFactory);
|
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) {
|
forall(m in months, p in products, mc in machines) {
|
||||||
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
|
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
|
||||||
}
|
}
|
||||||
// Ogranicznie maksymalnej pojemnosci rynku
|
|
||||||
forall(m in months, p in products) {
|
forall(m in months, p in products) {
|
||||||
sell[m][p] <= maxProductsInMonth[m][p];
|
sell[m][p] <= maxProductsInMonth[m][p];
|
||||||
}
|
}
|
||||||
// Ogranicznie ustawiajace zmienna binarna po przekroczeniu 80 procent pojemnosci rynku
|
|
||||||
forall(m in months, p in products) {
|
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] + 1000000 * if80prec[m][p];
|
||||||
sell[m][p] >= 0.8*maxProductsInMonth[m][p] * 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) {
|
forall (i in scenarios,m in months, p in products) {
|
||||||
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
|
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
|
||||||
lowerProfit[i][m][p] <= 0.2 * sell[m][p]*sellProfit[i][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;
|
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) {
|
forall(m in months, p in products) {
|
||||||
if(m == 1) { //pierwszy miesiac
|
if(m == 1) { //pierwszy miesiac
|
||||||
sell[m][p] <= produce[m][p]+storageStart[p];
|
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];
|
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) {
|
forall(m in months, p in products) {
|
||||||
stock[m][p] <= storageMax[p];
|
stock[m][p] <= storageMax[p];
|
||||||
if(m == 3) {
|
if(m == 3) {
|
||||||
stock[m][p] >= 50;
|
stock[m][p] >= 50;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/******************OGRANICZENIE: WYMAGANY POZIOM ZYSKU ****************************/
|
averageProfit>=minimalAverageProfit;
|
||||||
avgProfit>=minAvgProfit;
|
|
||||||
|
|
||||||
}// Koniec ogranicznen
|
}
|
||||||
|
|
||||||
main {
|
main {
|
||||||
//var fileProfit = new IloOplOutputFile("results-minAvgProfit-FSD-profit.txt");
|
var fileProfit = new IloOplOutputFile("results-minimalAverageProfit-FSD-profit_two.txt");
|
||||||
//var fileRisk = new IloOplOutputFile("results-minAvgProfit-FSD-risk.txt");
|
var fileRisk = new IloOplOutputFile("results-minimalAverageProfit-FSD-risk_two.txt");
|
||||||
var fileProfit = new IloOplOutputFile("results-minAvgProfit-FSD-profit(2).txt");
|
|
||||||
var fileRisk = new IloOplOutputFile("results-minAvgProfit-FSD-risk(2).txt");
|
|
||||||
|
|
||||||
var mod = thisOplModel;
|
var mod = thisOplModel;
|
||||||
var def = mod.modelDefinition;
|
var def = mod.modelDefinition;
|
||||||
var data = mod.dataElements;
|
var data = mod.dataElements;
|
||||||
var maxAvgProfit = 11031;
|
var maxAvgProfit = 11031;
|
||||||
var i = 1;
|
var i = 1;
|
||||||
/**************** Pierwsze wybrane rozwiazanie ************************************/
|
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");
|
||||||
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("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("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.minAvgProfit = 8450.97;
|
data.minimalAverageProfit = 8450.97;
|
||||||
|
|
||||||
mod = new IloOplModel (def, cplex);
|
mod = new IloOplModel (def, cplex);
|
||||||
mod.addDataSource(data);
|
mod.addDataSource(data);
|
||||||
mod.generate();
|
mod.generate();
|
||||||
|
|
||||||
writeln("Pierwsze wybrane rozwiazanie: ");
|
writeln("First solution: ");
|
||||||
cplex.tilim = 60;
|
cplex.tilim = 60;
|
||||||
cplex.solve();
|
cplex.solve();
|
||||||
|
|
||||||
writeln(i," minAvgProfit: ",data.minAvgProfit," avgProfit: ",mod.avgProfit,", giniRisk: ",mod.giniRisk);
|
writeln(i," minimalAverageProfit: ",data.minimalAverageProfit," averageProfit: ",mod.averageProfit,", riskMeasureGini: ",mod.riskMeasureGini);
|
||||||
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]);
|
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.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.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
|
i = 1;4
|
||||||
fileProfit.writeln("avgProfit: ");
|
fileProfit.writeln("averageProfit: ");
|
||||||
while (i<=data.numberOfScenarios) {
|
while (i<=data.numberOfScenarios) {
|
||||||
fileProfit.writeln(mod.profit[i]);
|
fileProfit.writeln(mod.profit[i]);
|
||||||
i++;
|
i++;
|
||||||
@ -171,26 +135,25 @@ main {
|
|||||||
i++;
|
i++;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**************** Drugie wybrane rozwiazanie ************************************/
|
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");
|
||||||
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("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("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.minAvgProfit = 8983.38;
|
data.minimalAverageProfit = 8983.38;
|
||||||
|
|
||||||
|
|
||||||
mod = new IloOplModel (def, cplex);
|
mod = new IloOplModel (def, cplex);
|
||||||
mod.addDataSource(data);
|
mod.addDataSource(data);
|
||||||
mod.generate();
|
mod.generate();
|
||||||
|
|
||||||
writeln("Drugie wybrane rozwiazanie: ");
|
writeln("Second solution: ");
|
||||||
cplex.solve();
|
cplex.solve();
|
||||||
|
|
||||||
writeln(i," minAvgProfit: ",data.minAvgProfit," avgProfit: ",mod.avgProfit,", giniRisk: ",mod.giniRisk);
|
writeln(i," minimalAverageProfit: ",data.minimalAverageProfit," averageProfit: ",mod.averageProfit,", riskMeasureGini: ",mod.riskMeasureGini);
|
||||||
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]);
|
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.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.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;
|
i = 1;
|
||||||
fileProfit.writeln("avgProfit: ");
|
fileProfit.writeln("averageProfit: ");
|
||||||
while (i<=data.numberOfScenarios) {
|
while (i<=data.numberOfScenarios) {
|
||||||
fileProfit.writeln(mod.profit[i]);
|
fileProfit.writeln(mod.profit[i]);
|
||||||
i++;
|
i++;
|
||||||
@ -203,25 +166,24 @@ main {
|
|||||||
i++;
|
i++;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**************** Trzecie wybrane rozwiazanie ************************************/
|
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");
|
||||||
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("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("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.minAvgProfit = 9515.79;
|
data.minimalAverageProfit = 9515.79;
|
||||||
|
|
||||||
mod = new IloOplModel (def, cplex);
|
mod = new IloOplModel (def, cplex);
|
||||||
mod.addDataSource(data);
|
mod.addDataSource(data);
|
||||||
mod.generate();
|
mod.generate();
|
||||||
|
|
||||||
writeln("Trzecie wybrane rozwiazanie: ");
|
writeln("Third solution: ");
|
||||||
cplex.solve();
|
cplex.solve();
|
||||||
|
|
||||||
writeln(i," minAvgProfit: ",data.minAvgProfit," avgProfit: ",mod.avgProfit,", giniRisk: ",mod.giniRisk);
|
writeln(i," minimalAverageProfit: ",data.minimalAverageProfit," averageProfit: ",mod.averageProfit,", riskMeasureGini: ",mod.riskMeasureGini);
|
||||||
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]);
|
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.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.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;
|
i = 1;
|
||||||
fileProfit.writeln("avgProfit: ");
|
fileProfit.writeln("averageProfit: ");
|
||||||
while (i<=data.numberOfScenarios) {
|
while (i<=data.numberOfScenarios) {
|
||||||
fileProfit.writeln(mod.profit[i]);
|
fileProfit.writeln(mod.profit[i]);
|
||||||
i++;
|
i++;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user