Código Python:
Ver originalfrom random import randint
def getRandomString(size):
#Regresa una lista de tamanio size con 0's y 1's
return [randint(0, 1) for i in xrange(size)]
def evalCoeffs(coeffs, randlist):
#Asumo que randlist y coeffs tienen el mismo tamanio
size = len(randlist)
#Si no llegan a tener el mismo tamanio lanzara una excepcion
aux = [coeffs[i] * randlist[i] for i in xrange(size)]
#Regreso la suma de multiplicar los items de coeffs y randlist
#Y ademas regreso aux, que es multiplicacion de las listas
return sum(aux), aux
def evalFactibility(coeffs, randlist, ops, rhs):
#No tengo idea de que haga evalFactibility
#Se quede regresar True si cumple con algo
#Y false si no cumple ese algo
suma, rlist = evalCoeffs(coeffs, randlist)
#Supuse que si la suma es mayor o igual a 0 entonces es factible
#Corrigeme si estoy mal por que no se que es lo hace esta funcion
if ops == 1:
if suma > rhs:
return False
elif ops == 2:
if suma < rhs:
return False
return True
def foundInitialSolutions(lcoeffs, ops, rhs):
initialSolutions = []
for coeffs, op, rh in zip(lcoeffs, ops, rhs):
size = len(coeffs)
vs = getRandomString(size)
while not evalFactibility(coeffs, vs, op, rh):
vs = getRandomString(size)
initialSolutions.append(vs)
return initialSolutions
list_of_coeffs = [
[1, 1, 1, 2, 1],
[7, 0, 3, -4, 3],
[11, -6, 0, 3, -3]
]
ops = [1, 1, 2]
rhs = [4, 8, 3]
inits = foundInitialSolutions(list_of_coeffs, ops, rhs)
print list_of_coeffs
print inits
Te recomiendo que leas
python para todos te ayudara a entender muchas cosas.