Pasar codigo de Python a C++
Publicado por julio (2 intervenciones) el 09/04/2019 03:24:45
Estimados, alguien sabe com pasar este codigo a C++ o Visual. net desde Python.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
def BinPackingExample():
B = 6000
w = [4000,3000,1500,1000]
q = [1,1,2,2]
s=[]
for j in range(len(w)):
for i in range(q[j]):
s.append(w[j])
return s,B
def FFD(s, B):
remain = [B]
sol = [[]]
for item in sorted(s, reverse=True):
for j,free in enumerate(remain):
if free >= item:
remain[j] -= item
sol[j].append(item)
break
else:
sol.append([item])
remain.append(B-item)
return sol
def bpp(s,B):
n = len(s)
U = len(FFD(s,B))
model = Model("bpp")
x,y = {},{}
for i in range(n):
for j in range(U):
x[i,j] = model.addVar(vtype="B", name="x(%s,%s)"%(i,j))
for j in range(U):
y[j] = model.addVar(vtype="B", name="y(%s)"%j)
for i in range(n):
model.addCons(quicksum(x[i,j] for j in range(U)) == 1, "Assign(%s)"%i)
for j in range(U):
model.addCons(quicksum(s[i]*x[i,j] for i in range(n)) <= B*y[j], "Capac(%s)"%j)
for j in range(U):
for i in range(n):
model.addCons(x[i,j] <= y[j], "Strong(%s,%s)"%(i,j))
model.setObjective(quicksum(y[j] for j in range(U)), "minimize")
model.data = x,y
return model
def solveBinPacking(s,B):
n = len(s)
U = len(FFD(s,B))
model = bpp(s,B)
x,y = model.data
model.optimize()
bins = [[] for i in range(U)]
for (i,j) in x:
if model.getVal(x[i,j]) > .5:
bins[j].append(s[i])
for i in range(bins.count([])):
bins.remove([])
for b in bins:
b.sort()
bins.sort()
return bins
Valora esta pregunta
0