Ejemplo n.º 1
0
def solve(input_data, lambda1, N, NL, m):
    lambda2 = 1 - lambda1
    Data = input_data.split('\n')  # load data
    n = len(Data) - 1  # get the amount of items
    m = 5
    items = []
    for j in xrange(n):
        data = Data[j]
        parts = data.split()
        p = int(parts[0])  # get the process time
        r = int(parts[1])  # get the release time
        s = int(parts[2])  # get the setup time
        d = int(parts[3])  # get the due date
        wt = int(parts[4])  # get the tardiness weights
        wc = int(parts[5])  # get the completion weights
        items.append(Item(p, r, s, d, wt, wc))  # combine those item data
    print 'Data loaded!'
    S, L, completion, item_free = generate.initialization_c(items, n, m)
    print 'Initialization done!'
    line_values, G = generate.Goal(completion, items, S, lambda1, lambda2)
    print 'Initialization values done!'
    print G

    NR = 10
    item_values = continueatcs.h(S, completion, items, lambda1, lambda2)
    G_star = G
    S_star = []
    for s in S:
        S_star.append(s[:])
    for k in xrange(NR):
        l_p, l_m = generate.reorder(items, S_star, line_values, item_values)
        completion, line_values = continueatcs.complete_time(
            S_star, items, lambda1, lambda2)
        G_star = sum(line_values)
        G_star, S_star, line_values, completion = tabu(N, NL, S_star, l_p,
                                                       items, G_star,
                                                       completion, line_values,
                                                       lambda1, lambda2)
        G_star, S_star, line_values, completion = tabu(N, NL, S_star, l_m,
                                                       items, G_star,
                                                       completion, line_values,
                                                       lambda1, lambda2)
        item_values = continueatcs.h(S_star, completion, items, lambda1,
                                     lambda2)
    Rb, _ = generate.balance_rate(completion, S)
    completion, line_values = continueatcs.complete_time(
        S_star, items, lambda1, lambda2)
    return G_star, Rb
Ejemplo n.º 2
0
def solve(input_data, N, NL, lambda1, m):
    lambda2 = 1 - lambda1
    Data = input_data.split('\n')  # load data
    n = len(Data) - 1  # get the amount of items
    items = []
    for j in xrange(n):
        data = Data[j]
        parts = data.split()
        p = int(parts[0])  # get the process time
        r = int(parts[1])
        s = int(parts[2])  # get the setup time
        d = int(parts[3])  # get the due date
        wt = int(parts[4])  # get the tardiness weights
        wc = int(parts[5])  # get the completion weights
        items.append(Item(p, r, s, d, wt, wc))  # combine those item data
    print 'Data loaded!'
    S, L, completion, item_free = generate.initialization_c(items, n, m)
    print 'Initialization done!'
    line_values, G = generate.Goal(completion, items, S, lambda1, lambda2)
    print 'Initial values done!'

    for l in xrange(m):
        G, S, line_values, completion = continuetabu.tabu(
            N, NL, S, l, items, G, completion, line_values, lambda1, lambda2)
    G, S = tabu(N, NL, S, L, items, G, lambda1, lambda2)
    c, v = continueatcs.complete_time(S, items, lambda1, lambda2)
    Rb, _ = generate.balance_rate(completion, S)
    return G, Rb
Ejemplo n.º 3
0
def solve(input_data,N,NL,lambda1,m):
	lambda2 = 1 - lambda1
	Data = input_data.split('\n')					# load data
	n = len(Data) -1						# get the amount of items
	items = []
	for j in xrange(n):
		data = Data[j]
		parts = data.split()
		p = int(parts[0])					# get the process time
		r = int(parts[1])
		s = int(parts[2])						# get the setup time
		d = int(parts[3])					# get the due date
		wt = int(parts[4])					# get the tardiness weights
		wc = int(parts[5])					# get the completion weights
		items.append(Item(p,r,s,d,wt,wc))			# combine those item data
	print 'Data loaded!'	
	S,L,completion,item_free = generate.initialization_c(items,n,m)
	print 'Initialization done!'
	line_values,G = generate.Goal(completion,items,S,lambda1,lambda2)
	print 'Initial values done!'

	for l in xrange(m):
		G,S,line_values,completion = continuetabu.tabu(N,NL,S,l,items,G,completion,line_values,lambda1,lambda2)
	G,S = tabu(N,NL,S,L,items,G,lambda1,lambda2)
	c,v = continueatcs.complete_time(S,items,lambda1,lambda2)
	Rb,_ = generate.balance_rate(completion,S)
	return G,Rb
Ejemplo n.º 4
0
def solve(input_data,lambda1,N,NL,m):
	lambda2  = 1 - lambda1
	Data = input_data.split('\n')					# load data
	n = len(Data) -1						# get the amount of items
	m = 5
	items = []	
	for j in xrange(n):
		data = Data[j]
		parts = data.split()
		p = int(parts[0])					# get the process time
		r = int(parts[1])						# get the release time
		s = int(parts[2])						# get the setup time
		d = int(parts[3])					# get the due date
		wt = int(parts[4])					# get the tardiness weights
		wc = int(parts[5])					# get the completion weights
		items.append(Item(p,r,s,d,wt,wc))			# combine those item data
	print 'Data loaded!'	
	S,L,completion,item_free = generate.initialization_c(items,n,m)
	print 'Initialization done!'
	line_values,G = generate.Goal(completion,items,S,lambda1,lambda2)
	print 'Initialization values done!'
	print G

	NR = 10
	item_values = continueatcs.h(S,completion,items,lambda1,lambda2)
	G_star = G
	S_star =[]
	for s in S:
		S_star.append(s[:])
	for k in xrange(NR):
		l_p,l_m = generate.reorder(items,S_star,line_values,item_values)
		completion,line_values = continueatcs.complete_time(S_star,items,lambda1,lambda2)
		G_star = sum(line_values)
		G_star,S_star,line_values,completion = tabu(N,NL,S_star,l_p,items,G_star,completion,line_values,lambda1,lambda2)
		G_star,S_star,line_values,completion = tabu(N,NL,S_star,l_m,items,G_star,completion,line_values,lambda1,lambda2)
		item_values = continueatcs.h(S_star,completion,items,lambda1,lambda2)
	Rb,_ = generate.balance_rate(completion,S)
	completion,line_values = continueatcs.complete_time(S_star,items,lambda1,lambda2)
	return G_star,Rb
Ejemplo n.º 5
0
def tabu(N, NL, S, l, items, G, completion, line_values, lambda1, lambda2):
    TL = [None] * NL
    pairs = generate.pairsets(S[l])
    completion_temp = completion[:]
    line_values_temp = line_values[:]
    G_star = G
    S_star = []
    test_G = []
    for s in S:
        S_star.append(s[:])
    for k in xrange(N):
        test_S = []
        s = random.choice(pairs)
        move = 0
        if s not in TL:
            job = list(s)
            a = job[0]
            b = job[1]
            a_idx = S_star[l].index(a)
            b_idex = S_star[l].index(b)
            S_temp = generate.innerswap(S_star[l], a_idx, b_idex)
            c, v = continueatcs.complete_time(
                S_star[:l] + [S_temp] + S_star[l + 1:], items, lambda1,
                lambda2)
            G_temp = sum(v)
            if test_G == [] or G_temp < test_G:
                test_G = G_temp
                test_S = S_temp[:]
                completion_temp = c[:]
                line_values_temp = v[:]
                a_star = a
                b_star = b
                move = 1
        else:
            continue
        if move == 0:
            continue
        change_set = set([a_star, b_star])
        generate.pairsets_update(pairs, change_set)
        S_star[l] = test_S[:]
        TL.pop(0)
        TL.append(change_set)
        if test_G < G_star:
            G_star = test_G
            S[l] = test_S[:]
            line_values = line_values_temp[:]
            completion = completion_temp[:]
    return G_star, S, line_values, completion
Ejemplo n.º 6
0
def tabu(N,NL,S,l,items,G,completion,line_values,lambda1,lambda2):
	TL = [None]*NL
	pairs = generate.pairsets(S[l])
	completion_temp = completion[:]
	line_values_temp = line_values[:]
	G_star = G
	S_star = []
	test_G = []
	for s in S:
		S_star.append(s[:])
	for k in xrange(N):
		test_S = []
		s = random.choice(pairs)
		move = 0
		if s not in TL:
			job = list(s)
			a = job[0]
			b = job[1]
			a_idx = S_star[l].index(a)
			b_idex = S_star[l].index(b)
			S_temp = generate.innerswap(S_star[l],a_idx,b_idex)
			c,v = continueatcs.complete_time(S_star[:l]+[S_temp]+S_star[l+1:],items,lambda1,lambda2)
			G_temp = sum(v)
			if test_G == [] or G_temp < test_G:
				test_G = G_temp
				test_S = S_temp[:]
				completion_temp = c[:]
				line_values_temp = v[:]
				a_star = a
				b_star = b
				move = 1
		else:
			continue
		if move == 0:
			continue
		change_set = set([a_star,b_star])
		generate.pairsets_update(pairs,change_set)
		S_star[l] = test_S[:]
		TL.pop(0)
		TL.append(change_set)
		if test_G < G_star:
			G_star = test_G
			S[l] = test_S[:]
			line_values = line_values_temp[:]
			completion = completion_temp[:]
	return G_star,S,line_values,completion
Ejemplo n.º 7
0
def test_G(items, S, lambda1, lambda2):
    c_temp, v_temp = continueatcs.complete_time(S, items, lambda1, lambda2)
    return sum(v_temp)
Ejemplo n.º 8
0
def test_G(items,S,lambda1,lambda2):
	c_temp,v_temp = continueatcs.complete_time(S,items,lambda1,lambda2)
	return sum(v_temp)