chore: renamed parameters wdwr

This commit is contained in:
Krzysztof kuhy Rudnicki 2025-05-24 23:54:18 +02:00
parent 1e5c98208e
commit da8a82e077
22 changed files with 3096 additions and 345 deletions

View File

@ -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}.

View File

@ -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)}")

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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++;