def jsp_disjuntivo_minla_favorito(tempo, ordem, tempo_max=3600, fl_inteiro=True): if not jsp_checar_tempo_ordem(tempo, ordem): print("Matrizes de TEMPO e ORDEM incorretas!") # Criando parâmetros ###################################################### # Número de máquinas e jobs m, n = jsp_get_dimensoes(tempo) # Criando conjunto de máquinas e jobs Maquinas = range(m) Jobs = range(n) ########################################################################### # Criando dicionario do Problema ########################################## Problema = montar_dic_problema(m, n, Maquinas, Jobs, tempo, ordem, fl_inteiro) ########################################################################### # Criando instancia do modelo ############################################# modelo = Model(name='minla_fav') modelo.parameters.timelimit = tempo_max ########################################################################### # Criando variáveis de decisão ############################################ x = jsp_manne_var_x(modelo, Problema) # início do job j na máquina i z = jsp_manne_var_z(modelo, Problema) # 1 se j precede a k na máquina i cmax = jsp_manne_var_cmax(modelo, Problema) # makespan y = None s = None #jsp_minla_var_s(modelo, Problema) ########################################################################### # Restrições ############################################################## jsp_manne_rest_ordem_maq_job(modelo, x, z, cmax, y, Problema) jsp_manne_rest_precedencia(modelo, x, z, cmax, y, Problema) #jsp_manne_rest_makespan(modelo, x, z, cmax, y, Problema) #jsp_minla_rest_disj_mais_proc(modelo, x, z, cmax, y, s, Problema) #jsp_minla_rest_disj_mais_proc_linear(modelo, x, z, cmax, y, s, Problema) # baseadas nas sugestoes do prof. Christophe/ jsp_minla_rest_lb_xik(modelo, x, z, cmax, y, Problema) jsp_minla_rest_lb_xik_p_menos(modelo, x, z, cmax, y, Problema) jsp_minla_rest_lb_cmax_x_p_mais_k(modelo, x, z, cmax, y, Problema) jsp_minla_rest_lb_cmax_x_p_mais(modelo, x, z, cmax, y, Problema) #jsp_minla_rest_soma_z(modelo, x, z, cmax, y, s, Problema) #jsp_minla_rest_desig_triang(modelo, x, z, cmax, y, Problema) # Função objetivo: jsp_fo_makespan(modelo, x, z, cmax, y, Problema) ########################################################################### return modelo
def jsp_liao(tempo, ordem, tempo_max=3600, fl_inteiro=True): if not jsp_checar_tempo_ordem(tempo, ordem): print("Matrizes de TEMPO e ORDEM incorretas!") # Criando parâmetros ###################################################### # Número de máquinas e jobs m, n = jsp_get_dimensoes(tempo) # Criando conjunto de máquinas e jobs Maquinas = range(m) Jobs = range(n) ########################################################################### # Criando dicionario do Problema ########################################## Problema = montar_dic_problema(m, n, Maquinas, Jobs, tempo, ordem, fl_inteiro) ########################################################################### # Criando instancia do modelo ############################################# modelo = Model(name='liao') modelo.parameters.timelimit = tempo_max ########################################################################### # Criando variáveis de decisão ############################################ x = jsp_manne_var_x(modelo, Problema) # início do job j na máquina i z = jsp_manne_var_z(modelo, Problema) # 1 se j precede a k na máquina i cmax = jsp_manne_var_cmax(modelo, Problema) # makespan y = None s = None q = jsp_liao_var_q(modelo, Problema) ########################################################################### # Restrições ############################################################## jsp_manne_rest_ordem_maq_job(modelo, x, z, cmax, y, Problema) jsp_liao_folga(modelo, x, z, cmax, y, s, q, Problema) jsp_manne_rest_makespan(modelo, x, z, cmax, y, Problema) ########################################################################### # Função objetivo: jsp_fo_makespan(modelo, x, z, cmax, y, Problema) ########################################################################### return modelo
def jsp_disjuntivo_minla(tempo, ordem, tempo_max=3600, fl_inteiro=True, restricoes=[ jsp_manne_rest_ordem_maq_job, jsp_manne_rest_precedencia, jsp_manne_rest_makespan ]): if not jsp_checar_tempo_ordem(tempo, ordem): print("Matrizes de TEMPO e ORDEM incorretas!") # Criando parâmetros ###################################################### # Número de máquinas e jobs m, n = jsp_get_dimensoes(tempo) # Criando conjunto de máquinas e jobs Maquinas = range(m) Jobs = range(n) ########################################################################### # Criando dicionario do Problema ########################################## Problema = montar_dic_problema(m, n, Maquinas, Jobs, tempo, ordem, fl_inteiro) ########################################################################### # Criando instancia do modelo ############################################# modelo = Model(name='minla') modelo.parameters.timelimit = tempo_max ########################################################################### # Criando variáveis de decisão ############################################ x = jsp_manne_var_x(modelo, Problema) # início do job j na máquina i z = jsp_manne_var_z(modelo, Problema) # 1 se j precede a k na máquina i cmax = jsp_manne_var_cmax(modelo, Problema) # makespan y = jsp_minla_var_y(modelo, Problema) ########################################################################### # Restrições ############################################################## """ jsp_manne_rest_ordem_maq_job(modelo, x, z, cmax, y, Problema) jsp_manne_rest_precedencia(modelo, x, z, cmax, y, Problema) jsp_manne_rest_makespan(modelo, x, z, cmax, y, Problema) jsp_minla_rest_soma_z_1(modelo, x, z, cmax, y, Problema) jsp_minla_rest_desig_triang(modelo, x, z, cmax, y, Problema) jsp_minla_rest_permut(modelo, x, z, cmax, y, Problema) jsp_minla_rest_arc_in_out(modelo, x, z, cmax, y, Problema) jsp_minla_rest_soma_trivial(modelo, x, z, cmax, y, Problema) jsp_minla_rest_1_maq_j(modelo, x, z, cmax, y, Problema) jsp_minla_rest_ub_x(modelo, x, z, cmax, y, Problema) jsp_minla_rest_linear_y(modelo, x, z, cmax, y, Problema) jsp_minla_rest_ub_cmax(modelo, x, z, cmax, y, Problema) jsp_minla_rest_lb_1_maq_j(modelo, x, z, cmax, y, Problema) jsp_minla_rest_lb_1_maq_j_p_menos(modelo, x, z, cmax, y, Problema) jsp_minla_rest_lb_cmax_p_mais(modelo, x, z, cmax, y, Problema) jsp_minla_rest_lb_cmax_x_p_mais(modelo, x, z, cmax, y, Problema) """ for r in restricoes: r(modelo, x, z, cmax, y, Problema) ########################################################################### # Função objetivo: jsp_fo_makespan(modelo, x, z, cmax, y, Problema) ########################################################################### return modelo