Skip to content

Commit 0c0b310

Browse files
authored
Merge pull request #3 from emyesme/emily
actualizacion final
2 parents 63a8063 + 899ef46 commit 0c0b310

24 files changed

+165
-96
lines changed

README.md

+69-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@ CSP final project
33

44
## Estudiantes
55

6-
Jaime Cuartas Granada
6+
Jaime Cuartas Granada,
77
Emily Esmeralda Carvajal Camelo
88

9+
## Nota
10+
11+
El minizinc en esta aplicación utiliza el solver Chuffed
12+
913
## Instrucciones
1014

1115
Para poder ejecutar este proyecto es necesario tener en su computador docker y docker-compose
@@ -34,7 +38,71 @@ Una vez iniciado el docker puede acceder a la aplicación a través del
3438

3539
`localhost:8000`
3640

41+
## Contenido de la carpeta
42+
43+
La carpeta contiene 3 subdirectorios principales, uno con el back de la aplicación, otro con el front llamado front-minizinc y un directorio ejemplos, con ejemplos para correr la aplicación, al mismo nivel del README.md encontrará el informe en pdf del projecto.
44+
45+
El directorio back contiene 2 subdirectorios, un directorio minizinc, con los modelos y un directorio upload donde en cada ejecución se guardarán los datos ingresados temp.dzn y la solución del mismo output.txt, si ejecutó el modelo.
46+
47+
El directorio front-minizinc contiene la estructura normal de un proyecto en react, en donde se puede tener acceso al codigo de la aplicación desde src/App.js.
48+
49+
```
50+
.
51+
├── back
52+
│   ├── api.py
53+
│   ├── Dockerfile
54+
│   ├── minizinc
55+
│   │   ├── DesenfrenoDePasiones1.mzn
56+
│   │   └── DesenfrenoDePasiones2.mzn
57+
│   └── upload
58+
│   ├── output.txt
59+
│   └── temp.dzn
60+
├── docker-compose.yml
61+
├── ejemplos
62+
│   ├── Desenfreno1.dzn
63+
│   ├── Desenfreno2.dzn
64+
│   ├── Med1-1.dzn
65+
│   ├── Med1-2.dzn
66+
│   ├── Med1-3.dzn
67+
│   ├── Med1-4.dzn
68+
│   ├── Med2-1.dzn
69+
│   ├── Med2-2.dzn
70+
│   ├── Med2-3.dzn
71+
│   ├── Med2-4.dzn
72+
│   ├── Med2-5.dzn
73+
│   ├── Propia1-1.dzn
74+
│   ├── Propia1-2.dzn
75+
│   ├── Trivial1.dzn
76+
│   └── Trivial2.dzn
77+
├── front-minizinc
78+
│   ├── Dockerfile
79+
│   ├── package.json
80+
│   ├── package-lock.json
81+
│   ├── public
82+
│   │   ├── favicon.svg
83+
│   │   ├── f.jpg
84+
│   │   ├── index.html
85+
│   │   ├── logo192.png
86+
│   │   ├── manifest.json
87+
│   │   └── robots.txt
88+
│   ├── README.md
89+
│   └── src
90+
│   ├── App.css
91+
│   ├── App.js
92+
│   ├── App.test.js
93+
│   ├── index.css
94+
│   ├── index.js
95+
│   ├── logo.svg
96+
│   ├── serviceWorker.js
97+
│   └── setupTests.js
98+
├── informe.pdf
99+
└── README.md
100+
101+
```
102+
37103
Dato curioso, encontrará acceso al api a través del puerto `5000`.
38104

39105

40106

107+
108+

back/minizinc/DesenfrenoDePasiones1.mzn

+7-54
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
% Emily Esmeralda Carvajal Camelo 1630436
55
% Desenfreno de Pasiones
66
include "globals.mzn";
7+
8+
79
enum ACTORES;
810
array[ACTORES, int] of int: Escenas;
911
int: nEscenas=length(row(Escenas,1))-1;
1012
array[1..nEscenas] of int: Duracion;
11-
%array[int,1..2] of int: Disponibilidad;
12-
%array[int,1..2] of ACTORES: Evitar;
1313

1414
% asserts
1515

@@ -25,7 +25,6 @@ constraint assert(forall(i in index_set(Duracion))
2525
(forall (j in col(Escenas,i))(j = 0 \/ j = 1)),
2626
"Algun valor es invalido en la matriz Escenas");
2727

28-
%faltan asserts de disponibilidad y evitar%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2928

3029
% Dado un actor retorna el costo del actor por las escenas en que participa
3130
array[ACTORES] of int: Costo = [Escenas[x,nEscenas+1] | x in ACTORES];
@@ -48,63 +47,17 @@ var int : costo = (sum(j in ACTORES)(
4847
PosicionDeEscena[i] <= ultima
4948
then Duracion[i]
5049
else 0
51-
endif)) * Costo[j]));
52-
53-
% Dado un actor suma los costos por las escenas en que esta
54-
array[ACTORES] of var int : TiempoDe = [(
55-
let {
56-
var int: primera = min([PosicionDeEscena[e] | e in EscenaDe[j]]);
57-
var int: ultima = max([PosicionDeEscena[e] | e in EscenaDe[j]]);
58-
}
59-
in
60-
(sum(i in 1..nEscenas)
61-
(if PosicionDeEscena[i] >= primera
62-
/\
63-
PosicionDeEscena[i] <= ultima
64-
then Duracion[i]
65-
else 0
66-
endif))) | j in ACTORES];
67-
68-
%Suma la duracion de las escenas en que dos actores que estan en la lista evitar se encuentran en el mismo momento en el set
69-
%var int: evitar = (sum(j in 1..length(col(Evitar,1)))(
70-
% let {
71-
% set of int: a = EscenaDe[row(Evitar,j)[1]];
72-
% set of int: b = EscenaDe[row(Evitar,j)[2]];
73-
% var int: primera = (if sum(a intersect b) != 0
74-
% then min([PosicionDeEscena[e] | e in a intersect b])
75-
% else 0
76-
% endif);
77-
% var int: ultima = (if primera != 0
78-
% then min([max([PosicionDeEscena[e] | e in a]),
79-
% max([PosicionDeEscena[e] | e in b])])
80-
% else -1
81-
% endif);
82-
% }
83-
% in
84-
% (sum(i in 1..nEscenas)
85-
% (if PosicionDeEscena[i] >= primera
86-
% /\
87-
% PosicionDeEscena[i] <= ultima
88-
% then Duracion[i]
89-
% else 0
90-
% endif))));
91-
50+
endif)) * Costo[j]));
51+
9252
% Restricciones
9353

9454
constraint all_different(PosicionDeEscena);
9555

96-
%constraint forall(i in 1..length(col(Disponibilidad,1)))
97-
% (if row(Disponibilidad,i)[2] = 0
98-
% then TiempoDe[ACTORES[row(Disponibilidad,i)[1]]] > row(Disponibilidad,i)[2]
99-
% else TiempoDe[ACTORES[row(Disponibilidad,i)[1]]] <= row(Disponibilidad,i)[2]
100-
% endif);
101-
102-
103-
%solve satisfy;
56+
% solver
10457

10558
solve minimize costo;
10659

107-
%salida
60+
% salida
10861

109-
output ["[ "]++["\(p) " | p in arg_sort(PosicionDeEscena)]++["]"]++["Costo: \(costo) \n"];
62+
output ["[ "]++["\(p) " | p in arg_sort(PosicionDeEscena)]++["]\n"]++["Costo: \(costo) \n"];
11063
%output["Costo: \(costo) \n"];

back/minizinc/DesenfrenoDePasiones2.mzn

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
% Jaime Cuartas Granada 1632664
44
% Emily Esmeralda Carvajal Camelo 1630436
55
% Desenfreno de Pasiones
6+
67
include "globals.mzn";
8+
79
enum ACTORES;
810
array[ACTORES, int] of int: Escenas;
911
int: nEscenas=length(row(Escenas,1))-1;
@@ -24,8 +26,7 @@ constraint assert(forall(d in Duracion)(d > 0),
2426
constraint assert(forall(i in index_set(Duracion))
2527
(forall (j in col(Escenas,i))(j = 0 \/ j = 1)),
2628
"Algun valor es invalido en la matriz Escenas");
27-
28-
%faltan asserts de disponibilidad y evitar%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
29+
2930

3031
% Dado un actor retorna el costo del actor por las escenas en que participa
3132
array[ACTORES] of int: Costo = [Escenas[x,nEscenas+1] | x in ACTORES];
@@ -99,8 +100,7 @@ constraint forall(i in 1..length(col(Disponibilidad,1)))
99100
else TiempoDe[ACTORES[row(Disponibilidad,i)[1]]] <= row(Disponibilidad,i)[2]
100101
endif);
101102

102-
103-
%solve satisfy;
103+
%solver
104104

105105
solve minimize 9*costo + evitar;
106106

back/upload/output.txt

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
[ 5 1 2 6 4 3 ]
2-
Tiempo compartido: 5
3-
Costo: 450
1+
[ 1 5 8 6 4 3 9 2 7 ]
2+
Tiempo compartido: 11
3+
Costo: 729
44
----------
5-
=======
5+
==========

back/upload/temp.dzn

+26-18
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,33 @@
1-
ACTORES = {Actor1, Actor2, Actor3, Actor4} ;
1+
ACTORES = {Actor1, Actor2, Actor3, Actor4, Actor5, Actor6} ;
22

3-
Escenas = [| 1,1,0,0,0,0,10
4-
| 0,1,1,1,0,1,20
5-
| 0,0,0,0,1,1,15
6-
| 1,1,0,0,1,1,13|];
3+
Escenas = [| 0,1,0,0,0,0,1,0,0,10
4+
| 0,1,1,1,0,1,1,1,1,20
5+
| 1,1,1,1,0,1,0,0,1,5
6+
| 0,1,1,1,0,0,1,1,1,5
7+
| 1,0,0,0,1,1,0,0,0,15
8+
| 0,0,0,0,1,0,0,1,0,19|];
79

8-
Duracion = [2,1,1,1,3,4];
10+
11+
Duracion = [2,1,1,1,3,4,2,3,1];
12+
913

10-
Disponibilidad =[|Actor1, 5
11-
|Actor2, 8
12-
|Actor3, 0
13-
|Actor4, 10|];
14+
Disponibilidad =[|Actor1, 15
15+
|Actor2, 15
16+
|Actor3, 16
17+
|Actor4, 17
18+
|Actor5, 12
19+
|Actor6, 0|];
1420

1521
Evitar =[|Actor1, Actor2
16-
|Actor2, Actor3|];
17-
22+
|Actor2, Actor3
23+
|Actor4, Actor5
24+
|Actor1, Actor6|];
1825

19-
%Orden de las Escenas: [4, 3, 6, 2, 1, 5]
20-
%Costo: 450
21-
%Tiempo Compartido: 6
22-
%----------
23-
%==========
24-
%Finished in 140msec
26+
% Ejecución con Gecode
2527

28+
% Orden de las Escenas: [1, 5, 8, 6, 9, 4, 3, 2, 7]
29+
% Costo: 729
30+
% Tiempo Compartido: 21
31+
% ----------
32+
% ==========
33+
% Finished in 1m 46s
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

front-minizinc/public/f.jpg

-174 KB
Loading

front-minizinc/public/fondo.jpg

-151 KB
Binary file not shown.

front-minizinc/public/wasp.jpg

-21.2 KB
Binary file not shown.

0 commit comments

Comments
 (0)