es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo definir el nivel de tolerancia en el solver CBC utilizando solverfactory de pyomo?

Estoy intentando resolver un MIP con CBC utilizando el solver factory de pyomo, sin embargo, me encuentro con algunos problemas de infeasibility. Quería intentar configurar el nivel de tolerancia y ver si eso funciona antes de profundizar en los puntos de datos que podrían causar la infeasibility.

Sin embargo, cuando utilizo este comando, el solver cbc muestra un error:

options = {
            'tol': 0.0001
        }
        solver = SolverFactory(solver_type)
        solver.options.update(options)

¿Alguien puede ayudarme a entender cómo definir el nivel de tolerancia en cbc? ¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    El solucionador CBC en Pyomo no admite la opción de tolerancia. Esto se debe a que la tolerancia de CBC se especifica a través de la opción de línea de comandos ‘-tol’. Puedes especificar la tolerancia en tu script pasando la opción ‘-tol’ a la línea de comandos al invocar el solucionador. Aquí tienes un ejemplo:

    options = {'solver': 'cbc',
               'solver_io': 'lp',
               'executable': '/ruta/a/cbc',
               'options': ['sec']*50 + ['-log', 'test.log', '-tol', '0.0001']}
    solver = SolverFactory('cbc', solver_io='lp')
    solver.set_options(options)
    

    En este ejemplo, la tolerancia se establece en 0.0001 al pasar la opción ‘-tol’ al solucionador CBC a través de la lista de ‘options’. Ten en cuenta que debes proporcionar la ruta completa del ejecutable de CBC y especificar el argumento ‘solver_io’ como ‘lp’.

Comments are closed.