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ć:
\begin{equation}
giniRisk = \frac{1}{2}\cdot\sum_{t1 \in scenarios}\sum_{t2 \in scenarios} \lvert profit[t1]-profit[t2] \rvert \cdot \frac{1}{numberOfScenarios} \cdot \frac{1}{numberOfScenarios}
riskMeasureGini = \frac{1}{2}\cdot\sum_{t1 \in scenarios}\sum_{t2 \in scenarios} \lvert profit[t1]-profit[t2] \rvert \cdot \frac{1}{numberOfScenarios} \cdot \frac{1}{numberOfScenarios}
\end{equation}
\subsection{Model preferencji}
Model preferencji oparto na minimalizacji ryzyka przy zadanym poziomie średniego zysku.
\begin{equation}
avgProfit<minAvgProfit
averageProfit<minimalAverageProfit
\end{equation}
\begin{equation}
minimize giniRisk
minimize riskMeasureGini
\end{equation}
minAvgProfit stanowi dodatkowy parametr modelu. Załączniki 5 i 6 zawierają pliki z parametrami i modelem zadania dwukryterialnego wyboru - pliki źródłowe przeznaczone dla solvera CPLEX.
minimalAverageProfit stanowi dodatkowy parametr modelu. Załączniki 5 i 6 zawierają pliki z parametrami i modelem zadania dwukryterialnego wyboru - pliki źródłowe przeznaczone dla solvera CPLEX.
\subsection{Zbiór rozwiązań efektywnych w przestrzeni ryzyko-zysk}
Na rysunku \ref{fig:profit-risk} zaprezentowano rozwiązania efektywne modelu w przestrzeni ryzyko-zysk. Niebieskie trójkąty oznaczają rozwiązania efektywne dla różnych wartości wymaganego poziomu zysku. Uwzględniając ograniczenia obliczeniowe komputera, wygenerowano 52 równomiernie rozmieszczone rozwiązania, z których każde bazuje na 30 scenariuszach. Wprowadzono ograniczenie czasowe działania solvera dla pojedynczego rozwiązania na poziomie 5 minut. Całkowity czas obliczeń przekroczył 3 godziny. Załączniki 7 i 8 obejmują pliki parametrów oraz modelu wraz ze skryptem dla solvera CPLEX, które zostały wykorzystane do uzyskania rozwiązań. Kolorem żółtym wyróżniono rozwiązanie maksymalnego zysku oraz minimalnego ryzyka. Wartości odpowiadające tym rozwiązaniom przedstawiono w tabeli \ref{tab:min-max}.

View File

@ -3,7 +3,7 @@ import pandas as pd
from io import StringIO
# Your data
data_str = """i;minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
data_str = """i;minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
1;-600;-600;0;0;0;0;0;0;0;0;0;0;0;0;0;50;50;50;50;50;50;50;50;50;50;50;50
2;-67.59;-67.423334025;12.249866065;0;0;0;1;0;0;0;0;9;8;1;43;41;50;50;7;41;42;49;7;50;50;50;50
3;464.82;465.647226284;26.015138747;0;0;0;0;0;0;0;29;20;19;9;52;30;50;41;0;30;31;41;0;50;50;50;50
@ -30,7 +30,7 @@ df = pd.read_csv(StringIO(data_str), sep=';')
# Create the scatter plot
plt.figure(figsize=(10, 6))
plt.scatter(df['avgProfit'], df['giniRisk'], alpha=0.7, s=50)
plt.scatter(df['averageProfit'], df['riskMeasureGini'], alpha=0.7, s=50)
# Add labels and title
plt.xlabel('Przeciętny Zysk')
@ -46,6 +46,6 @@ plt.tight_layout()
plt.show()
# Print some basic statistics
print(f"Average Profit range: {df['avgProfit'].min():.2f} to {df['avgProfit'].max():.2f}")
print(f"Gini Risk range: {df['giniRisk'].min():.2f} to {df['giniRisk'].max():.2f}")
print(f"Average Profit range: {df['averageProfit'].min():.2f} to {df['averageProfit'].max():.2f}")
print(f"Gini Risk range: {df['riskMeasureGini'].min():.2f} to {df['riskMeasureGini'].max():.2f}")
print(f"Number of data points: {len(df)}")

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

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
avgProfit:
averageProfit:
10431.3
10701.3
10289.3
@ -31,9 +31,9 @@ avgProfit:
10594.3
9900.24
10777.9
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
20164;20164;574.598;346;0;0;250;289;9;401;0;50;689;583;370;0;50;0;0;0;0;0;0;50;50;50;50
avgProfit:
averageProfit:
20154.7
20455.9
20073
@ -64,9 +64,9 @@ avgProfit:
20397.9
18593.3
20510
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
26553.9;26553.9;796.113;270;0;150;190;700;270;400;0;50;850;530;370;0;50;0;0;0;0;0;0;50;50;50;50
avgProfit:
averageProfit:
26799.8
27035.6
26275.1

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
avgProfit:
averageProfit:
25609.4
25873.7
25413.2
@ -31,9 +31,9 @@ avgProfit:
25893.9
23353.4
25942
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
26020.6;26020.8;774.88;218;0;110;190;700;266;400;0;50;846;530;450;0;50;0;0;0;0;0;0;50;50;50;50
avgProfit:
averageProfit:
26186
26404.1
25894.4
@ -64,9 +64,9 @@ avgProfit:
26478.2
23787.7
26501.1
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
26553.9;26553.9;796.113;270;0;150;190;700;270;400;0;50;850;530;370;0;50;0;0;0;0;0;0;50;50;50;50
avgProfit:
averageProfit:
26799.8
27035.6
26275.1

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
Risk:
184.458
@ -31,7 +31,7 @@ Risk:
184.694
345.455
205.291
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
20164;20164;574.598;346;0;0;250;289;9;401;0;50;689;583;370;0;50;0;0;0;0;0;0;50;50;50;50
Risk:
403.784
@ -64,7 +64,7 @@ Risk:
409.978
795.275
421.261
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
26553.9;26553.9;796.113;270;0;150;190;700;270;400;0;50;850;530;370;0;50;0;0;0;0;0;0;50;50;50;50
Risk:
559.839

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
Risk:
530.713
@ -31,7 +31,7 @@ Risk:
542.315
1072.76
548.737
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
26020.6;26020.8;774.88;218;0;110;190;700;266;400;0;50;846;530;450;0;50;0;0;0;0;0;0;50;50;50;50
Risk:
545.117
@ -64,7 +64,7 @@ Risk:
560.188
1119.5
563.245
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
26553.9;26553.9;796.113;270;0;150;190;700;270;400;0;50;850;530;370;0;50;0;0;0;0;0;0;50;50;50;50
Risk:
559.839

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

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
avgProfit:
averageProfit:
8283.101223531
8360.092861464
8023.436774628
@ -31,9 +31,9 @@ avgProfit:
8650.006339759
7571.333855925
9103.892851116
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
8983.38;8983.400103901;332.936696297;111;0;49;110;83;15;144;200;50;317;149;250;0;50;0;0;0;0;0;0;50;50;50;50
avgProfit:
averageProfit:
8779.880622914
8905.098118171
8457.038873118
@ -64,9 +64,9 @@ avgProfit:
9208.592940681
8041.287735389
9707.228511359
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
9515.79;9515.804890325;360.18213126;110;0;50;110;110;11;160;200;50;350;130;250;0;50;0;0;0;0;0;0;50;50;50;50
avgProfit:
averageProfit:
9268.899026395
9430.210649623
8919.631184021

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
Risk:
215.259123099
@ -31,7 +31,7 @@ Risk:
242.556855407
439.843445573
387.733839121
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
8983.38;8983.400103901;332.936696297;111;0;49;110;83;15;144;200;50;317;149;250;0;50;0;0;0;0;0;0;50;50;50;50
Risk:
235.514485857
@ -64,7 +64,7 @@ Risk:
265.756800627
471.056184256
426.381300665
minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4
9515.79;9515.804890325;360.18213126;110;0;50;110;110;11;160;200;50;350;130;250;0;50;0;0;0;0;0;0;50;50;50;50
Risk:
257.771190407

View File

@ -1,2 +1,2 @@
// 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
2 minAvgProfit: -67.59 avgProfit: -67.423334025, giniRisk: 12.249866065
3 minAvgProfit: 464.82 avgProfit: 465.647226284, giniRisk: 26.015138747
4 minAvgProfit: 997.23 avgProfit: 997.66185313, giniRisk: 40.349353614
5 minAvgProfit: 1529.64 avgProfit: 1530.172175866, giniRisk: 54.689711726
6 minAvgProfit: 2062.05 avgProfit: 2062.088549477, giniRisk: 69.062913221
7 minAvgProfit: 2594.46 avgProfit: 2594.684714046, giniRisk: 84.265583873
8 minAvgProfit: 3126.87 avgProfit: 3127.12427492, giniRisk: 99.497458717
9 minAvgProfit: 3659.28 avgProfit: 3659.345897427, giniRisk: 114.728718529
10 minAvgProfit: 4191.69 avgProfit: 4191.916591732, giniRisk: 129.963670504
11 minAvgProfit: 4724.1 avgProfit: 4724.191045823, giniRisk: 145.204545226
12 minAvgProfit: 5256.51 avgProfit: 5256.719240584, giniRisk: 162.349562672
13 minAvgProfit: 5788.92 avgProfit: 5789.016098305, giniRisk: 182.46075748
14 minAvgProfit: 6321.33 avgProfit: 6321.358645932, giniRisk: 205.000585625
15 minAvgProfit: 6853.74 avgProfit: 6853.83219788, giniRisk: 229.023498807
16 minAvgProfit: 7386.15 avgProfit: 7386.171785273, giniRisk: 253.962965038
17 minAvgProfit: 7918.56 avgProfit: 7918.565798346, giniRisk: 279.907638363
18 minAvgProfit: 8450.97 avgProfit: 8451.020747071, giniRisk: 306.383357869
19 minAvgProfit: 8983.38 avgProfit: 8983.400103901, giniRisk: 332.936696297
20 minAvgProfit: 9515.79 avgProfit: 9515.804890325, giniRisk: 360.18213126
1 minimalAverageProfit: -600 averageProfit: -600, riskMeasureGini: 0
2 minimalAverageProfit: -67.59 averageProfit: -67.423334025, riskMeasureGini: 12.249866065
3 minimalAverageProfit: 464.82 averageProfit: 465.647226284, riskMeasureGini: 26.015138747
4 minimalAverageProfit: 997.23 averageProfit: 997.66185313, riskMeasureGini: 40.349353614
5 minimalAverageProfit: 1529.64 averageProfit: 1530.172175866, riskMeasureGini: 54.689711726
6 minimalAverageProfit: 2062.05 averageProfit: 2062.088549477, riskMeasureGini: 69.062913221
7 minimalAverageProfit: 2594.46 averageProfit: 2594.684714046, riskMeasureGini: 84.265583873
8 minimalAverageProfit: 3126.87 averageProfit: 3127.12427492, riskMeasureGini: 99.497458717
9 minimalAverageProfit: 3659.28 averageProfit: 3659.345897427, riskMeasureGini: 114.728718529
10 minimalAverageProfit: 4191.69 averageProfit: 4191.916591732, riskMeasureGini: 129.963670504
11 minimalAverageProfit: 4724.1 averageProfit: 4724.191045823, riskMeasureGini: 145.204545226
12 minimalAverageProfit: 5256.51 averageProfit: 5256.719240584, riskMeasureGini: 162.349562672
13 minimalAverageProfit: 5788.92 averageProfit: 5789.016098305, riskMeasureGini: 182.46075748
14 minimalAverageProfit: 6321.33 averageProfit: 6321.358645932, riskMeasureGini: 205.000585625
15 minimalAverageProfit: 6853.74 averageProfit: 6853.83219788, riskMeasureGini: 229.023498807
16 minimalAverageProfit: 7386.15 averageProfit: 7386.171785273, riskMeasureGini: 253.962965038
17 minimalAverageProfit: 7918.56 averageProfit: 7918.565798346, riskMeasureGini: 279.907638363
18 minimalAverageProfit: 8450.97 averageProfit: 8451.020747071, riskMeasureGini: 306.383357869
19 minimalAverageProfit: 8983.38 averageProfit: 8983.400103901, riskMeasureGini: 332.936696297
20 minimalAverageProfit: 9515.79 averageProfit: 9515.804890325, riskMeasureGini: 360.18213126

View File

@ -1,6 +1,6 @@
Pierwsze wybrane rozwiazanie:
1 minAvgProfit: 8450.97 avgProfit: 8451.020747071, giniRisk: 306.383357869
Drugie wybrane rozwiazanie:
31 minAvgProfit: 8983.38 avgProfit: 8983.400103901, giniRisk: 332.936696297
Trzecie wybrane rozwiazanie:
31 minAvgProfit: 9515.79 avgProfit: 9515.804890325, giniRisk: 360.18213126
First solution:
1 minimalAverageProfit: 8450.97 averageProfit: 8451.020747071, riskMeasureGini: 306.383357869
Second solution:
31 minimalAverageProfit: 8983.38 averageProfit: 8983.400103901, riskMeasureGini: 332.936696297
Third solution:
31 minimalAverageProfit: 9515.79 averageProfit: 9515.804890325, riskMeasureGini: 360.18213126

View File

@ -1,48 +1,38 @@
/*********************************************
* OPL 12.5.1.0 Data
* Author: Krzysztof Rudnicki
*********************************************/
/***************PARAMETRY********************/
numberOfMachineTypes = 5; //ilosc typow maszun
numberOfMonths = 3; //ilosc symulowanych miesiecy
numberOfProductsTypes = 4; //ilosc typow produktow
numberOfMachineTypes = 5;
numberOfMonths = 3;
numberOfProductsTypes = 4;
numberOfHoursInFactory = 384; //liczba godzin roboczych w miesiacu 2*8*24=384
numberOfScenarios = 1000; //ilosc scenariuszy w symulacji
numberOfHoursInFactory = 384;
numberOfScenarios = 1000;
// Ilosc maszyn poszczegolnych typow
machineCount = [4 2 3 1 1];
// Koszty wykorzystania typow maszyn (wiersze)
//w wytwarzaniu poszczegolnych typow produktow (kolumny)
timeToProduce = [[ 0.4 0.6 0 0]
[ 0.2 0.1 0 0.6]
[ 0.1 0 0.7 0]
[ 0.06 0.04 0 0.05]
[ 0 0.05 0.02 0]];
// Pojemnosc rynku - typ produktu(kolumny) w miesiacu(wiersz)
maxProductsInMonth = [[ 200 0 100 200]
[ 300 100 200 200]
[ 0 300 100 200]];
// Magazyn
storageMax = [200 200 200 200]; //maksymalna pojemnosc dla typow produktow
storageCost = 1; //koszt magazynowania zl/sztuka/miesiac
storageStart = [50 50 50 50]; //poczatkowa ilosc w magazynach
/************************* SCENARIOS *************************/
// expected values (used only in t-student.R script)
storageMax = [200 200 200 200];
storageCost = 1;
storageStart = [50 50 50 50];
mu = [9 8 7 6];
// covariance (used only in t-student.R script)
sigma = [[ 16 -2 -1 -3]
[ -2 9 -4 -1]
[ -1 -4 4 1]
[ -3 -1 1 1]];
// scenarios (generated by t-student.R script)
sellProfit = [[8.65514814631604 5.39276461442329 8.03724969792938 6.79964940685937]
[6.35575682044805 10.7852400940011 6.64785935511483 5.82055888421908]
[8.92335604267353 5.39191667647047 6.1375823313882 7.20599829208949]

View File

@ -1,7 +1,3 @@
/***********PARAMETRY************************/
//Paramatry zostaladniej opisane w pliku .dat oraz raporcie
// Parametry liczbowe
int numberOfMachineTypes = ...;
int numberOfMonths = ...;
int numberOfProductsTypes = ...;
@ -9,57 +5,42 @@ int numberOfProductsTypes = ...;
int numberOfHoursInFactory = ...;
int numberOfScenarios = ...;
// Utworzenie wektorow indeksujacych
{int} machines = asSet(1..numberOfMachineTypes);
{int} months = asSet(1..numberOfMonths);
{int} products = asSet(1..numberOfProductsTypes);
{int} scenarios = asSet(1..numberOfScenarios);
//Parametry produkcji i sprzedazy
int machineCount[machines] = ...;
float timeToProduce[machines][products] = ...;
int maxProductsInMonth[months][products] = ...;
//Parametry magazynowania
int storageMax[products] = ...;
int storageCost = ...;
int storageStart[products] = ...;
//Parametry do generowania scenariusze (nieuzywane w modelu CPLEX)
int mu[products] = ...;
int sigma[products][products] = ...;
//Macierz scenariuszy dochodow ze sprzedazy: typ produkty (kolumna) - scenariusz (wiersz)
float sellProfit[scenarios][products] = ...;
/*********** ZMIENNE DECYZYJNE ********************************************/
dvar int produce[months][products]; // Liczba wyprodukowanych
dvar int sell[months][products]; // Liczba sprzedanych
dvar int stock[months][products]; // Liczba w magazynie
dvar int produce[months][products];
dvar int sell[months][products];
dvar int stock[months][products];
// Czas wykorzystany na danym typie maszyna na dany typ produktu
dvar float workTime[months][machines][products];
// Zmienna binarna - czy sprzedaz danego typu produktu przekaroczyla 80 procent pojemnosci rynku
dvar boolean if80prec[months][products];
// Zmienna - ile pieniedzy nalezy odjac od dochodow z poszczegolnych produkow
// w poszczegolnych miesiacach ze wzgledu na przekroczenie 80% pojmnosci rynku
dvar float lowerProfit[scenarios][months][products];
/************ KRYTERIA OCENY *********************************************/
// zysk policzony dla poszczegolnych scenariuszy
dexpr float profit[i in scenarios] = sum(m in months, p in products)
(sell[m][p]*sellProfit[i][p]-lowerProfit[i][m][p]- stock[m][p]*storageCost);
// wartosc oczekiwana zysku policzona jako srednia
dexpr float avgProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
// funkcja celu
maximize avgProfit;
dexpr float averageProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
maximize averageProfit;
// ************** OGRANICZENIA ******************************************/
subject to {
// Zmienne decyzyjne nie mniejsze niz zero
forall(i in scenarios, m in months, mc in machines, p in products) {
workTime[m][mc][p] >= 0;
produce[m][p] >= 0;
@ -67,30 +48,24 @@ subject to {
stock[m][p] >= 0;
lowerProfit[i][m][p] >= 0;
}
// Ogranicznie czasu produkcji maszyn w miesiacu
forall(m in months, mc in machines) {
sum(p in products) (workTime[m][mc][p]) <= (machineCount[mc]*numberOfHoursInFactory);
}
// Ograniczenie definiujace wykorzystany czas pracy maszyn
forall(m in months, p in products, mc in machines) {
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
}
// Ogranicznie maksymalnej pojemnosci rynku
forall(m in months, p in products) {
sell[m][p] <= maxProductsInMonth[m][p];
}
// Ogranicznie ustawiajace zmienna binarna po przekroczeniu 80 procent pojemnosci rynku
forall(m in months, p in products) {
sell[m][p] <= 0.8*maxProductsInMonth[m][p] + 1000000 * if80prec[m][p];
sell[m][p] >= 0.8*maxProductsInMonth[m][p] * if80prec[m][p];
}
// Ograniczenia linearyzujace wplyw zmiennej binarnej na funkcje celu
forall (i in scenarios,m in months, p in products) {
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
lowerProfit[i][m][p] <= 0.2 * sell[m][p]*sellProfit[i][p];
0.2 * sell[m][p]*sellProfit[i][p] - lowerProfit[i][m][p] + 1000000 * if80prec[m][p] <= 1000000;
}
// Ograniczenie sprzedazy oraz definicja ilosci towaru pozostajacej w magazynie
forall(m in months, p in products) {
if(m == 1) { //pierwszy miesiac
sell[m][p] <= produce[m][p]+storageStart[p];
@ -100,8 +75,6 @@ subject to {
stock[m][p]==(produce[m][p] + stock[m-1][p])-sell[m][p];
}
}
// Ogranicznie maksymalnej ilosci magazynowanych produktow oraz
// wymaganej ilosc pozostalej w magazynie na na koniec symulacji
forall(m in months, p in products) {
stock[m][p] <= storageMax[p];
if(m == 3) {

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,4 @@
/***********PARAMETRY************************/
//Paramatry zostaladniej opisane w pliku .dat oraz raporcie
// Parametry liczbowe
int numberOfMachineTypes = ...;
int numberOfMonths = ...;
int numberOfProductsTypes = ...;
@ -9,64 +6,46 @@ int numberOfProductsTypes = ...;
int numberOfHoursInFactory = ...;
int numberOfScenarios = ...;
// Utworzenie wektorow indeksujacych
{int} machines = asSet(1..numberOfMachineTypes);
{int} months = asSet(1..numberOfMonths);
{int} products = asSet(1..numberOfProductsTypes);
{int} scenarios = asSet(1..numberOfScenarios);
//Parametry produkcji i sprzedazy
int machineCount[machines] = ...;
float timeToProduce[machines][products] = ...;
int maxProductsInMonth[months][products] = ...;
//Parametry magazynowania
int storageMax[products] = ...;
int storageCost = ...;
int storageStart[products] = ...;
//Parametry do generowania scenariusze (nieuzywane w modelu CPLEX)
int mu[products] = ...;
int sigma[products][products] = ...;
//Macierz scenariuszy dochodow ze sprzedazy: typ produkty (kolumna) - scenariusz (wiersz)
float sellProfit[scenarios][products] = ...;
/*********** ZMIENNE DECYZYJNE ********************************************/
dvar int produce[months][products]; // Liczba wyprodukowanych
dvar int sell[months][products]; // Liczba sprzedanych
dvar int stock[months][products]; // Liczba w magazynie
dvar int produce[months][products];
dvar int sell[months][products];
dvar int stock[months][products];
// Czas wykorzystany na danym typie maszyna na dany typ produktu
dvar float workTime[months][machines][products];
// Zmienna binarna - czy sprzedaz danego typu produktu przekaroczyla 80 procent pojemnosci rynku
dvar boolean if80prec[months][products];
// Zmienna - ile pieniedzy nalezy odjac od dochodow z poszczegolnych produkow
// w poszczegolnych miesiacach ze wzgledu na przekroczenie 80% pojmnosci rynku
dvar float lowerProfit[scenarios][months][products];
/************ KRYTERIA OCENY *********************************************/
// ZYSK policzony dla poszczegolnych scenariuszy
dexpr float profit[i in scenarios] = sum(m in months, p in products)
(sell[m][p]*sellProfit[i][p]-lowerProfit[i][m][p]- stock[m][p]*storageCost);
// wartosc oczekiwana zysku policzona jako srednia
dexpr float avgProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
dexpr float averageProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
// RYZYKO zdefiniowane srednia roznica Giniego
dexpr float giniRisk = sum (t1 in scenarios, t2 in scenarios ) (
dexpr float riskMeasureGini = sum (t1 in scenarios, t2 in scenarios ) (
0.5 * abs(profit[t1] - profit[t2]) * 1/numberOfScenarios * 1/numberOfScenarios
);
// funkcja celu
minimize giniRisk;
//maximize avgProfit;
minimize riskMeasureGini;
// ************** OGRANICZENIA ******************************************/
subject to {
// Zmienne decyzyjne nie mniejsze niz zero
forall(i in scenarios, m in months, mc in machines, p in products) {
workTime[m][mc][p] >= 0;
produce[m][p] >= 0;
@ -74,30 +53,24 @@ subject to {
stock[m][p] >= 0;
lowerProfit[i][m][p] >= 0;
}
// Ogranicznie czasu produkcji maszyn w miesiacu
forall(m in months, mc in machines) {
sum(p in products) (workTime[m][mc][p]) <= (machineCount[mc]*numberOfHoursInFactory);
}
// Ograniczenie definiujace wykorzystany czas pracy maszyn
forall(m in months, p in products, mc in machines) {
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
}
// Ogranicznie maksymalnej pojemnosci rynku
forall(m in months, p in products) {
sell[m][p] <= maxProductsInMonth[m][p];
}
// Ogranicznie ustawiajace zmienna binarna po przekroczeniu 80 procent pojemnosci rynku
forall(m in months, p in products) {
sell[m][p] <= 0.8*maxProductsInMonth[m][p] + 1000000 * if80prec[m][p];
sell[m][p] >= 0.8*maxProductsInMonth[m][p] * if80prec[m][p];
}
// Ograniczenia linearyzujace wplyw zmiennej binarnej na funkcje celu
forall (i in scenarios,m in months, p in products) {
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
lowerProfit[i][m][p] <= 0.2 * sell[m][p]*sellProfit[i][p];
0.2 * sell[m][p]*sellProfit[i][p] - lowerProfit[i][m][p] + 1000000 * if80prec[m][p] <= 1000000;
}
// Ograniczenie sprzedazy oraz definicja ilosci towaru pozostajacej w magazynie
forall(m in months, p in products) {
if(m == 1) { //pierwszy miesiac
sell[m][p] <= produce[m][p]+storageStart[p];
@ -107,8 +80,6 @@ subject to {
stock[m][p]==(produce[m][p] + stock[m-1][p])-sell[m][p];
}
}
// Ogranicznie maksymalnej ilosci magazynowanych produktow oraz
// wymaganej ilosc pozostalej w magazynie na na koniec symulacji
forall(m in months, p in products) {
stock[m][p] <= storageMax[p];
if(m == 3) {
@ -118,5 +89,5 @@ subject to {
}
execute {
cplex.tilim = 600;
writeln("avgProfit: ",avgProfit,", giniRisk: ",giniRisk);
writeln("averageProfit: ",averageProfit,", riskMeasureGini: ",riskMeasureGini);
}

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,3 @@
/***********PARAMETRY************************/
//Paramatry zostaladniej opisane w pliku .dat oraz raporcie
// Parametry liczbowe
int numberOfMachineTypes = ...;
int numberOfMonths = ...;
int numberOfProductsTypes = ...;
@ -9,67 +5,48 @@ int numberOfProductsTypes = ...;
int numberOfHoursInFactory = ...;
int numberOfScenarios = ...;
// Utworzenie wektorow indeksujacych
{int} machines = asSet(1..numberOfMachineTypes);
{int} months = asSet(1..numberOfMonths);
{int} products = asSet(1..numberOfProductsTypes);
{int} scenarios = asSet(1..numberOfScenarios);
//Parametry produkcji i sprzedazy
int machineCount[machines] = ...;
float timeToProduce[machines][products] = ...;
int maxProductsInMonth[months][products] = ...;
//Parametry magazynowania
int storageMax[products] = ...;
int storageCost = ...;
int storageStart[products] = ...;
//Parametry do generowania scenariusze (nieuzywane w modelu CPLEX)
int mu[products] = ...;
int sigma[products][products] = ...;
//Macierz scenariuszy dochodow ze sprzedazy: typ produkty (kolumna) - scenariusz (wiersz)
float sellProfit[scenarios][products] = ...;
/******************* PARAMTERY METODY: WYMAGANY POZIOM ZYSKU ***********/
float minAvgProfit = ...; //wymagany poziom zysku
float minimalAverageProfit = ...; //wymagany poziom zysku
/*********** ZMIENNE DECYZYJNE ********************************************/
dvar int produce[months][products]; // Liczba wyprodukowanych
dvar int sell[months][products]; // Liczba sprzedanych
dvar int stock[months][products]; // Liczba w magazynie
dvar int produce[months][products];
dvar int sell[months][products];
dvar int stock[months][products];
// Czas wykorzystany na danym typie maszyna na dany typ produktu
dvar float workTime[months][machines][products];
// Zmienna binarna - czy sprzedaz danego typu produktu przekaroczyla 80 procent pojemnosci rynku
dvar boolean if80prec[months][products];
// Zmienna - ile pieniedzy nalezy odjac od dochodow z poszczegolnych produkow
// w poszczegolnych miesiacach ze wzgledu na przekroczenie 80% pojmnosci rynku
dvar float lowerProfit[scenarios][months][products];
/************ KRYTERIA OCENY *********************************************/
// ZYSK policzony dla poszczegolnych scenariuszy
dexpr float profit[i in scenarios] = sum(m in months, p in products)
(sell[m][p]*sellProfit[i][p]-lowerProfit[i][m][p]- stock[m][p]*storageCost);
// wartosc oczekiwana zysku policzona jako srednia
dexpr float avgProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
dexpr float averageProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
// RYZYKO zdefiniowane srednia roznica Giniego
dexpr float giniRisk = sum (t1 in scenarios, t2 in scenarios ) (
dexpr float riskMeasureGini = sum (t1 in scenarios, t2 in scenarios ) (
0.5 * abs(profit[t1] - profit[t2]) * 1/numberOfScenarios * 1/numberOfScenarios
);
// funkcja celu
minimize giniRisk;
//maximize avgProfit;
minimize riskMeasureGini;
// ************** OGRANICZENIA ******************************************/
subject to {
// Zmienne decyzyjne nie mniejsze niz zero
forall(i in scenarios, m in months, mc in machines, p in products) {
workTime[m][mc][p] >= 0;
produce[m][p] >= 0;
@ -77,30 +54,24 @@ subject to {
stock[m][p] >= 0;
lowerProfit[i][m][p] >= 0;
}
// Ogranicznie czasu produkcji maszyn w miesiacu
forall(m in months, mc in machines) {
sum(p in products) (workTime[m][mc][p]) <= (machineCount[mc]*numberOfHoursInFactory);
}
// Ograniczenie definiujace wykorzystany czas pracy maszyn
forall(m in months, p in products, mc in machines) {
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
}
// Ogranicznie maksymalnej pojemnosci rynku
forall(m in months, p in products) {
sell[m][p] <= maxProductsInMonth[m][p];
}
// Ogranicznie ustawiajace zmienna binarna po przekroczeniu 80 procent pojemnosci rynku
forall(m in months, p in products) {
sell[m][p] <= 0.8*maxProductsInMonth[m][p] + 1000000 * if80prec[m][p];
sell[m][p] >= 0.8*maxProductsInMonth[m][p] * if80prec[m][p];
}
// Ograniczenia linearyzujace wplyw zmiennej binarnej na funkcje celu
forall (i in scenarios,m in months, p in products) {
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
lowerProfit[i][m][p] <= 0.2 * sell[m][p]*sellProfit[i][p];
0.2 * sell[m][p]*sellProfit[i][p] - lowerProfit[i][m][p] + 1000000 * if80prec[m][p] <= 1000000;
}
// Ograniczenie sprzedazy oraz definicja ilosci towaru pozostajacej w magazynie
forall(m in months, p in products) {
if(m == 1) { //pierwszy miesiac
sell[m][p] <= produce[m][p]+storageStart[p];
@ -110,23 +81,18 @@ subject to {
stock[m][p]==(produce[m][p] + stock[m-1][p])-sell[m][p];
}
}
// Ogranicznie maksymalnej ilosci magazynowanych produktow oraz
// wymaganej ilosc pozostalej w magazynie na na koniec symulacji
forall(m in months, p in products) {
stock[m][p] <= storageMax[p];
if(m == 3) {
stock[m][p] >= 50;
}
}
/******************OGRANICZENIE: WYMAGANY POZIOM ZYSKU ****************************/
avgProfit>=minAvgProfit;
averageProfit>=minimalAverageProfit;
}// Koniec ogranicznen
}
main {
var file = new IloOplOutputFile("result-minAvgProfit.txt");
//var fileAP = new IloOplOutputFile("avgProfitScenario.txt");
//var fileMR = new IloOplOutputFile("maxRiskScenario.txt");
var file = new IloOplOutputFile("result-minimalAverageProfit.txt");
var mod = thisOplModel;
var def = mod.modelDefinition;
@ -134,25 +100,23 @@ main {
var maxAvgProfit = 10048;
var i = 1;
file.writeln("i;minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
file.writeln("i;minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
data.minAvgProfit = -600.0;
data.minimalAverageProfit = -600.0;
while (data.minAvgProfit <= maxAvgProfit) {
while (data.minimalAverageProfit <= maxAvgProfit) {
mod = new IloOplModel (def, cplex);
mod.addDataSource(data);
mod.generate();
cplex.tilim = 10;
cplex.solve();
file.writeln(i,";",data.minAvgProfit,";",mod.avgProfit,";",mod.giniRisk,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
writeln(i," minAvgProfit: ",data.minAvgProfit," avgProfit: ",mod.avgProfit,", giniRisk: ",mod.giniRisk);
file.writeln(i,";",data.minimalAverageProfit,";",mod.averageProfit,";",mod.riskMeasureGini,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
writeln(i," minimalAverageProfit: ",data.minimalAverageProfit," averageProfit: ",mod.averageProfit,", riskMeasureGini: ",mod.riskMeasureGini);
mod.end();
data.minAvgProfit = data.minAvgProfit + 532.41;
data.minimalAverageProfit = data.minimalAverageProfit + 532.41;
i = i+1;
};
file.close();
//fileAP.close();
//fileMR.close();
}

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,3 @@
/***********PARAMETRY************************/
//Paramatry zostaladniej opisane w pliku .dat oraz raporcie
// Parametry liczbowe
int numberOfMachineTypes = ...;
int numberOfMonths = ...;
int numberOfProductsTypes = ...;
@ -9,72 +5,52 @@ int numberOfProductsTypes = ...;
int numberOfHoursInFactory = ...;
int numberOfScenarios = ...;
// Utworzenie wektorow indeksujacych
{int} machines = asSet(1..numberOfMachineTypes);
{int} months = asSet(1..numberOfMonths);
{int} products = asSet(1..numberOfProductsTypes);
{int} scenarios = asSet(1..numberOfScenarios);
//Parametry produkcji i sprzedazy
int machineCount[machines] = ...;
float timeToProduce[machines][products] = ...;
int maxProductsInMonth[months][products] = ...;
//Parametry magazynowania
int storageMax[products] = ...;
int storageCost = ...;
int storageStart[products] = ...;
//Parametry do generowania scenariusze (nieuzywane w modelu CPLEX)
int mu[products] = ...;
int sigma[products][products] = ...;
//Macierz scenariuszy dochodow ze sprzedazy: typ produkty (kolumna) - scenariusz (wiersz)
float sellProfit[scenarios][products] = ...;
/******************* PARAMTERY METODY: WYMAGANY POZIOM ZYSKU ***********/
float minAvgProfit = ...; //wymagany poziom zysku
float minimalAverageProfit = ...; //wymagany poziom zysku
/*********** ZMIENNE DECYZYJNE ********************************************/
dvar int produce[months][products]; // Liczba wyprodukowanych
dvar int sell[months][products]; // Liczba sprzedanych
dvar int stock[months][products]; // Liczba w magazynie
dvar int produce[months][products];
dvar int sell[months][products];
dvar int stock[months][products];
// Czas wykorzystany na danym typie maszyna na dany typ produktu
dvar float workTime[months][machines][products];
// Zmienna binarna - czy sprzedaz danego typu produktu przekaroczyla 80 procent pojemnosci rynku
dvar boolean if80prec[months][products];
// Zmienna - ile pieniedzy nalezy odjac od dochodow z poszczegolnych produkow
// w poszczegolnych miesiacach ze wzgledu na przekroczenie 80% pojmnosci rynku
dvar float lowerProfit[scenarios][months][products];
/************ KRYTERIA OCENY *********************************************/
// ZYSK policzony dla poszczegolnych scenariuszy
dexpr float profit[i in scenarios] = sum(m in months, p in products)
(sell[m][p]*sellProfit[i][p]-lowerProfit[i][m][p]- stock[m][p]*storageCost);
// wartosc oczekiwana zysku policzona jako srednia
dexpr float avgProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
dexpr float averageProfit = sum(i in scenarios)(profit[i])/numberOfScenarios;
// DODATKOWE OBLICZNIE RYZYKA DLA KAZDEGO SCENARIUSZA - POTRZEBNE DO ANALIZY FSD
dexpr float risk[i in scenarios] = sum (t in scenarios) (
0.5 * abs(profit[i] - profit[t]) * 1/numberOfScenarios
);
// RYZYKO zdefiniowane srednia roznica Giniego
dexpr float giniRisk = sum (t1 in scenarios, t2 in scenarios ) (
dexpr float riskMeasureGini = sum (t1 in scenarios, t2 in scenarios ) (
0.5 * abs(profit[t1] - profit[t2]) * 1/numberOfScenarios * 1/numberOfScenarios
);
// funkcja celu
//minimize giniRisk;
maximize avgProfit;
maximize averageProfit;
// ************** OGRANICZENIA ******************************************/
subject to {
// Zmienne decyzyjne nie mniejsze niz zero
forall(i in scenarios, m in months, mc in machines, p in products) {
workTime[m][mc][p] >= 0;
produce[m][p] >= 0;
@ -82,30 +58,24 @@ subject to {
stock[m][p] >= 0;
lowerProfit[i][m][p] >= 0;
}
// Ogranicznie czasu produkcji maszyn w miesiacu
forall(m in months, mc in machines) {
sum(p in products) (workTime[m][mc][p]) <= (machineCount[mc]*numberOfHoursInFactory);
}
// Ograniczenie definiujace wykorzystany czas pracy maszyn
forall(m in months, p in products, mc in machines) {
workTime[m][mc][p] == produce[m][p]*timeToProduce[mc][p];
}
// Ogranicznie maksymalnej pojemnosci rynku
forall(m in months, p in products) {
sell[m][p] <= maxProductsInMonth[m][p];
}
// Ogranicznie ustawiajace zmienna binarna po przekroczeniu 80 procent pojemnosci rynku
forall(m in months, p in products) {
sell[m][p] <= 0.8*maxProductsInMonth[m][p] + 1000000 * if80prec[m][p];
sell[m][p] >= 0.8*maxProductsInMonth[m][p] * if80prec[m][p];
}
// Ograniczenia linearyzujace wplyw zmiennej binarnej na funkcje celu
forall (i in scenarios,m in months, p in products) {
lowerProfit[i][m][p] <= 1000000 * if80prec[m][p];
lowerProfit[i][m][p] <= 0.2 * sell[m][p]*sellProfit[i][p];
0.2 * sell[m][p]*sellProfit[i][p] - lowerProfit[i][m][p] + 1000000 * if80prec[m][p] <= 1000000;
}
// Ograniczenie sprzedazy oraz definicja ilosci towaru pozostajacej w magazynie
forall(m in months, p in products) {
if(m == 1) { //pierwszy miesiac
sell[m][p] <= produce[m][p]+storageStart[p];
@ -115,50 +85,44 @@ subject to {
stock[m][p]==(produce[m][p] + stock[m-1][p])-sell[m][p];
}
}
// Ogranicznie maksymalnej ilosci magazynowanych produktow oraz
// wymaganej ilosc pozostalej w magazynie na na koniec symulacji
forall(m in months, p in products) {
stock[m][p] <= storageMax[p];
if(m == 3) {
stock[m][p] >= 50;
}
}
/******************OGRANICZENIE: WYMAGANY POZIOM ZYSKU ****************************/
avgProfit>=minAvgProfit;
averageProfit>=minimalAverageProfit;
}// Koniec ogranicznen
}
main {
//var fileProfit = new IloOplOutputFile("results-minAvgProfit-FSD-profit.txt");
//var fileRisk = new IloOplOutputFile("results-minAvgProfit-FSD-risk.txt");
var fileProfit = new IloOplOutputFile("results-minAvgProfit-FSD-profit(2).txt");
var fileRisk = new IloOplOutputFile("results-minAvgProfit-FSD-risk(2).txt");
var fileProfit = new IloOplOutputFile("results-minimalAverageProfit-FSD-profit_two.txt");
var fileRisk = new IloOplOutputFile("results-minimalAverageProfit-FSD-risk_two.txt");
var mod = thisOplModel;
var def = mod.modelDefinition;
var data = mod.dataElements;
var maxAvgProfit = 11031;
var i = 1;
/**************** Pierwsze wybrane rozwiazanie ************************************/
fileProfit.writeln("minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
fileRisk.writeln("minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
fileProfit.writeln("minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
fileRisk.writeln("minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
data.minAvgProfit = 8450.97;
data.minimalAverageProfit = 8450.97;
mod = new IloOplModel (def, cplex);
mod.addDataSource(data);
mod.generate();
writeln("Pierwsze wybrane rozwiazanie: ");
writeln("First solution: ");
cplex.tilim = 60;
cplex.solve();
writeln(i," minAvgProfit: ",data.minAvgProfit," avgProfit: ",mod.avgProfit,", giniRisk: ",mod.giniRisk);
fileProfit.writeln(data.minAvgProfit,";",mod.avgProfit,";",mod.giniRisk,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
fileRisk.writeln(data.minAvgProfit,";",mod.avgProfit,";",mod.giniRisk,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
writeln(i," minimalAverageProfit: ",data.minimalAverageProfit," averageProfit: ",mod.averageProfit,", riskMeasureGini: ",mod.riskMeasureGini);
fileProfit.writeln(data.minimalAverageProfit,";",mod.averageProfit,";",mod.riskMeasureGini,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
fileRisk.writeln(data.minimalAverageProfit,";",mod.averageProfit,";",mod.riskMeasureGini,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
i = 1;4
fileProfit.writeln("avgProfit: ");
fileProfit.writeln("averageProfit: ");
while (i<=data.numberOfScenarios) {
fileProfit.writeln(mod.profit[i]);
i++;
@ -171,26 +135,25 @@ main {
i++;
};
/**************** Drugie wybrane rozwiazanie ************************************/
fileProfit.writeln("minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
fileRisk.writeln("minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
fileProfit.writeln("minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
fileRisk.writeln("minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
data.minAvgProfit = 8983.38;
data.minimalAverageProfit = 8983.38;
mod = new IloOplModel (def, cplex);
mod.addDataSource(data);
mod.generate();
writeln("Drugie wybrane rozwiazanie: ");
writeln("Second solution: ");
cplex.solve();
writeln(i," minAvgProfit: ",data.minAvgProfit," avgProfit: ",mod.avgProfit,", giniRisk: ",mod.giniRisk);
fileProfit.writeln(data.minAvgProfit,";",mod.avgProfit,";",mod.giniRisk,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
fileRisk.writeln(data.minAvgProfit,";",mod.avgProfit,";",mod.giniRisk,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
writeln(i," minimalAverageProfit: ",data.minimalAverageProfit," averageProfit: ",mod.averageProfit,", riskMeasureGini: ",mod.riskMeasureGini);
fileProfit.writeln(data.minimalAverageProfit,";",mod.averageProfit,";",mod.riskMeasureGini,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
fileRisk.writeln(data.minimalAverageProfit,";",mod.averageProfit,";",mod.riskMeasureGini,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
i = 1;
fileProfit.writeln("avgProfit: ");
fileProfit.writeln("averageProfit: ");
while (i<=data.numberOfScenarios) {
fileProfit.writeln(mod.profit[i]);
i++;
@ -203,25 +166,24 @@ main {
i++;
};
/**************** Trzecie wybrane rozwiazanie ************************************/
fileProfit.writeln("minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
fileRisk.writeln("minAvgProfit;avgProfit;giniRisk;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
fileProfit.writeln("minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
fileRisk.writeln("minimalAverageProfit;averageProfit;riskMeasureGini;m1_prod_P1;m1_prod_P2;m1_prod_P3;m1_prod_P4;m2_prod_P1;m2_prod_P2;m2_prod_P3;m2_prod_P4;m3_prod_P1;m3_prod_P2;m3_prod_P3;m3_prod_P4;m1_stock_P1;m1_stock_P2;m1_stock_P3;m1_stock_P4;m2_stock_P1;m2_stock_P2;m2_stock_P3;m2_stock_P4;m3_stock_P1;m3_stock_P2;m3_stock_P3;m3_stock_P4");
data.minAvgProfit = 9515.79;
data.minimalAverageProfit = 9515.79;
mod = new IloOplModel (def, cplex);
mod.addDataSource(data);
mod.generate();
writeln("Trzecie wybrane rozwiazanie: ");
writeln("Third solution: ");
cplex.solve();
writeln(i," minAvgProfit: ",data.minAvgProfit," avgProfit: ",mod.avgProfit,", giniRisk: ",mod.giniRisk);
fileProfit.writeln(data.minAvgProfit,";",mod.avgProfit,";",mod.giniRisk,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
fileRisk.writeln(data.minAvgProfit,";",mod.avgProfit,";",mod.giniRisk,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
writeln(i," minimalAverageProfit: ",data.minimalAverageProfit," averageProfit: ",mod.averageProfit,", riskMeasureGini: ",mod.riskMeasureGini);
fileProfit.writeln(data.minimalAverageProfit,";",mod.averageProfit,";",mod.riskMeasureGini,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
fileRisk.writeln(data.minimalAverageProfit,";",mod.averageProfit,";",mod.riskMeasureGini,";",mod.produce[1][1],";",mod.produce[1][2],";",mod.produce[1][3],";",mod.produce[1][4], ";",mod.produce[2][1],";",mod.produce[2][2],";",mod.produce[2][3],";",mod.produce[2][4],";",mod.produce[3][1],";",mod.produce[3][2], ";",mod.produce[3][3],";",mod.produce[3][4],";",mod.stock[1][1],";",mod.stock[1][2],";",mod.stock[1][3],";",mod.stock[1][4], ";",mod.stock[2][1],";",mod.stock[2][2],";",mod.stock[2][3],";",mod.stock[2][4],";",mod.stock[3][1],";",mod.stock[3][2], ";",mod.stock[3][3],";",mod.stock[3][4]);
i = 1;
fileProfit.writeln("avgProfit: ");
fileProfit.writeln("averageProfit: ");
while (i<=data.numberOfScenarios) {
fileProfit.writeln(mod.profit[i]);
i++;