• API
• FAQ
• Tools
• Archive
SHARE
TWEET

laal

a guest Nov 17th, 2019 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1.
2. import heapq as hq
3. import math
4.
5. class Bin:
6.     def __init__(self):
7.         self.list = []
8.
10.         self.list.append(item)
11.
12.     def suma(self):
13.         total = 0
14.         for elem in self.list:
15.             total += elem
17.
18.     def Mostrar(self):
19.         return self.list
20.
21. def BinPacking(arreglo, areaPlancha):
22.     """ Returns list of bins with input items inside. """
23.     a = []
24.     a.append(Bin())
25.
26.     for item in arreglo:
27.
29.
30.         for bin in a:
31.             if bin.suma() + item <= areaPlancha:
34.                 break
35.
36.
38.             nuevo = Bin()
40.             a.append(nuevo)
41.
42.     arreglo = []
43.     for bin in a:
44.         arreglo.append(bin.Mostrar())
45.
46.     return(arreglo)
47.
48.
49. def sumarareas(G):
50.     n = len(G)
51.     suma = 0
52.     for i in range(n):
53.         suma += G[i]
54.     return suma
55.
56. def ordenamientoBurbuja(unaLista):
59.             if unaLista[i]>unaLista[i+1]:
60.                 temp = unaLista[i]
61.                 unaLista[i] = unaLista[i+1]
62.                 unaLista[i+1] = temp
63.     return unaLista
64.
65. def Position(G):
66.     n = len(G)
67.     print(G[1])
68.     print(G)
69.
70. def Ordenar(G):
71.     ordenado = sorted(G , key=lambda k: [k[0], k[1]],reverse=True)
73.
74. def SepararArea(arreglo):
75.     n=len(arreglo)
76.     a=[]
77.
78.     for i in range(n):
79.         a.append(arreglo[i][0])
80.
81.     return a
82. def SepararTipo(arreglo):
83.     n=len(arreglo)
84.     a=[]
85.
86.     for i in range(n):
87.         a.append((arreglo[i][1],arreglo[i][2],arreglo[i][3]))
88.
89.     return a
90.
91. def Unificar(G):
94.     a=[]
96.     for i in range(n):
98.     for i in range(n):
99.         for j in range(3):
102.
105. '''def Posicionar(G):
106.     u=Unificar(SepararArea(Ordenar(TC)))
107.     n=len(u)
108.     b = []
110.     arrx = []
111.     arry = []
112.     arrz = []
113.     x = 0
114.     y = 0
115.     z = 0
116.     u3 = []
117.     #del(u[0])
118.     #arrx.append(x)
119.     for i in range(n):
120.         arrx.append(u[i])
121.     u.pop(0)
122.         #u2 = u.pop(0)
123.         #arry.append(u[i])
124.         #arrz.append(u[i])
125.     return u '''
126. def posicionar(largo,ancho,alto,arreglo):
127.     n=len(arreglo)
130.     x=arreglo[2]
131.     y=arreglo[1]
132.     z=arreglo[2]
133.     q=30
134.     z2 = 0
135.     x2 = 0
136.     #while x<largo and y<ancho and z<alto:# Para que no sobrepase las dimensiones de la caja
137.
138.
139.
140.
141.    # while q < 5
142.
143.     for i in range(q):
144.         if z <= alto:
146.             z+=arreglo[2]
147.         else:
148.             if y <= ancho and z2 <= alto:
150.                 z2+=arreglo[2]
153.
154.
155.         #if z <= alto and  d >= largo:
157.         #    z2+=arreglo[2]
158.
159.
160.
161.
162.
163.
164.        # if z >= alto and
167.     d2 = d[2]
168.
169.
170.
171.
172.     print(d2)
173.
174.
175.
177.
178.
180.
181. with open('cortes.in') as f:
183.     contenedor1, contenedor2,contenedor3 = [int(x) for x in contenedor.split(' ')]
184.     volume = contenedor1*contenedor2*contenedor3
185.     Medidas = []
186.     TC = []
187.     Areas = []
188.     OrdenarTC = []
189.     OrdenarS = []
191.     TipoxCaja = []
192.     xyz = []
194.     for i in range(line):
196.         Q, T, X, Y, Z = [x for x in D.split(' ')]
199.         tipo = T
200.         xyz.append((int(X),int(Y),int(Z)))
201.         TipoxCaja.append((tipo))
202.         G = [[] for _ in range(cantidad)]
203.         OrdenarTC.append((int(X)*int(Y)*int(Z)))
205.             G[j].append(((tipo),(int(X),int(Y),int(Z))))
206.             TC.append(((int(X),int(Y),int(Z)),(int(X)*int(Y)*int(Z))))
207.             Medidas.append((int(X),int(Y),int(Z)))
208.             Areas.append((int(X)*int(Y)*int(Z)))
209.
210.         #print(G)
211.     #print(TC)
212.     #print(Areas)
213.     for k in range(line):
215.     AreaTotal = sumarareas(Areas)
216.     Desperdicio = 100 -((AreaTotal/volume)*100)
218.     #print(AreaTotal)
220.
221.     hola =  BinPacking(Areas, volume)
222.     #print(Posicionar(Unificar(SepararArea(Ordenar(TC)))))
223.
224.     #print(posicionar(20,30,3,Unificar(SepararArea(Ordenar(TC)))))
225.     #print(Medidas)
226.     #print(ordenamientoBurbuja(Areas))
227.
228.     #print(Position(Areas))
229.     #SepararArea(Ordenar(TC))
230.     #print(Unificar(SepararArea(Ordenar(TC))))
231.
232. ### funciones para la cantidad y tipos
233.