Пример #1
0
def _parse_args():
    parser = baseparsers.make_parser("uc_cylinders")
    parser = baseparsers.two_sided_args(parser)
    parser = baseparsers.fixer_args(parser)
    parser = baseparsers.fwph_args(parser)
    parser = baseparsers.lagrangian_args(parser)
    parser = baseparsers.xhatlooper_args(parser)
    parser = baseparsers.xhatshuffle_args(parser)
    parser = baseparsers.cross_scenario_cuts_args(parser)
    parser.add_argument("--ph-mipgaps-json",
                        help="json file with mipgap schedule (default None)",
                        dest="ph_mipgaps_json",
                        type=str,
                        default=None)
    parser.add_argument("--solution-dir",
                        help="writes a tree solution to the provided directory"
                        " (default None)",
                        dest="solution_dir",
                        type=str,
                        default=None)
    parser.add_argument(
        "--xhat-closest-tree",
        help="Uses XhatClosest to compute a tree solution after"
        " PH termination (default False)",
        action='store_true',
        dest='xhat_closest_tree',
        default=False)
    args = parser.parse_args()
    return args
Пример #2
0
def _parse_args():
    parser = baseparsers.make_parser(num_scens_reqd=True)
    parser = baseparsers.two_sided_args(parser)
    parser = baseparsers.aph_args(parser)
    parser = baseparsers.xhatlooper_args(parser)
    parser = baseparsers.fwph_args(parser)
    parser = baseparsers.lagrangian_args(parser)
    parser = baseparsers.xhatshuffle_args(parser)
    parser.add_argument("--crops-mult",
                        help="There will be 3x this many crops (default 1)",
                        dest="crops_mult",
                        type=int,
                        default=1)
    parser.add_argument("--use-norm-rho-updater",
                        help="Use the norm rho updater extension",
                        dest="use_norm_rho_updater",
                        action="store_true")
    parser.add_argument("--use-norm-rho-converger",
                        help="Use the norm rho converger",
                        dest="use_norm_rho_converger",
                        action="store_true")
    parser.add_argument(
        "--run-async",
        help="Run with async projective hedging instead of progressive hedging",
        dest="run_async",
        action="store_true",
        default=False)
    args = parser.parse_args()
    return args
Пример #3
0
def _parse_args():
    parser = baseparsers.make_multistage_parser()
    parser = baseparsers.two_sided_args(parser)
    parser = baseparsers.xhatlooper_args(parser)
    parser = baseparsers.xhatshuffle_args(parser)
    parser = baseparsers.lagrangian_args(parser)
    parser = baseparsers.xhatspecific_args(parser)
    args = parser.parse_args()
    return args
Пример #4
0
def _parse_args():
    parser = baseparsers.make_parser()
    parser = baseparsers.two_sided_args(parser)
    parser = baseparsers.mip_options(parser)
    parser = baseparsers.fixer_args(parser)
    parser = baseparsers.fwph_args(parser)
    parser = baseparsers.lagrangian_args(parser)
    parser = baseparsers.xhatlooper_args(parser)
    parser = baseparsers.xhatshuffle_args(parser)
    args = parser.parse_args()
    return args
Пример #5
0
def _parse_args():
    parser = baseparsers.make_multistage_parser()
    parser = baseparsers.two_sided_args(parser)
    parser = baseparsers.xhatlooper_args(parser)
    parser = baseparsers.xhatshuffle_args(parser)
    parser = baseparsers.fwph_args(parser)
    parser = baseparsers.lagrangian_args(parser)
    parser = baseparsers.lagranger_args(parser)
    parser = baseparsers.xhatspecific_args(parser)
    parser = baseparsers.mip_options(parser)
    parser = aircond.inparser_adder(parser)
    args = parser.parse_args()
    return args
Пример #6
0
def _parse_args():
    parser = baseparsers.make_parser(num_scens_reqd=False)
    parser = baseparsers.two_sided_args(parser)
    parser = baseparsers.fwph_args(parser)
    parser = baseparsers.xhatlshaped_args(parser)
    args = parser.parse_args()
    # Need default_rho for FWPH, without you get
    # uninitialized numeric value error
    if args.with_fwph and args.default_rho is None:
        print("Must specify a default_rho if using FWPH")
        quit()

    return args
Пример #7
0
def _parse_args():
    parser = baseparsers.make_parser(num_scens_reqd=True)
    parser = baseparsers.two_sided_args(parser)
    parser = baseparsers.xhatlooper_args(parser)
    parser = baseparsers.fwph_args(parser)
    parser = baseparsers.lagranger_args(parser)
    parser = baseparsers.xhatshuffle_args(parser)
    parser.add_argument("--crops-mult",
                        help="There will be 3x this many crops (default 1)",
                        dest="crops_mult",
                        type=int,
                        default=1)
    args = parser.parse_args()
    return args
Пример #8
0
def _parse_args():
    parser = baseparsers.make_parser(num_scens_reqd=False)
    parser.add_argument("--instance-name",
                        help="sslp instance name (e.g., sslp_15_45_10)",
                        dest="instance_name",
                        type=str,
                        default=None)
    parser = baseparsers.two_sided_args(parser)
    parser = baseparsers.fixer_args(parser)
    parser = baseparsers.xhatlooper_args(parser)
    parser = baseparsers.fwph_args(parser)
    parser = baseparsers.lagrangian_args(parser)
    parser = baseparsers.xhatshuffle_args(parser)
    args = parser.parse_args()
    return args
Пример #9
0
def _parse_args():
    parser = baseparsers.make_parser(num_scens_reqd=False)
    parser.add_argument("--instance-name",
                        help="netdes instance name (e.g., network-10-20-L-01)",
                        dest="instance_name",
                        type=str,
                        default=None)
    parser = baseparsers.two_sided_args(parser)
    parser = baseparsers.xhatlooper_args(parser)
    parser = baseparsers.fwph_args(parser)
    parser = baseparsers.lagrangian_args(parser)
    parser = baseparsers.xhatshuffle_args(parser)
    parser = baseparsers.slamup_args(parser)
    parser = baseparsers.cross_scenario_cuts_args(parser)
    args = parser.parse_args()
    return args
Пример #10
0
def _parse_args():
    parser = baseparsers.make_parser(num_scens_reqd=True)
    parser = baseparsers.two_sided_args(parser)
    parser = baseparsers.fwph_args(parser)
    parser = baseparsers.xhatlshaped_args(parser)
    parser.add_argument("--crops-mult",
                        help="There will be 3x this many crops (default 1)",
                        dest="crops_mult",
                        type=int,
                        default=1)                
    args = parser.parse_args()
    # Need default_rho for FWPH, without you get 
    # uninitialized numeric value error
    if args.with_fwph and args.default_rho is None:
        print("Must specify a default_rho if using FWPH")
        quit()
    return args
Пример #11
0
def _parse_args():
    parser = baseparsers.make_parser("uc_cylinders")
    parser = baseparsers.two_sided_args(parser)
    parser = baseparsers.fixer_args(parser)
    parser = baseparsers.fwph_args(parser)
    parser = baseparsers.lagrangian_args(parser)
    parser = baseparsers.xhatlooper_args(parser)
    parser = baseparsers.xhatshuffle_args(parser)
    parser = baseparsers.cross_scenario_cuts_args(parser)
    parser.add_argument("--ph-mipgaps-json",
                        help="json file with mipgap schedule (default None)",
                        dest="ph_mipgaps_json",
                        type=str,
                        default=None)

    args = parser.parse_args()
    return args
Пример #12
0
def _parse_args():
    parser = baseparsers.make_parser(num_scens_reqd=True)
    parser = baseparsers.two_sided_args(parser)
    parser = baseparsers.xhatlooper_args(parser)
    parser = baseparsers.fwph_args(parser)
    parser = baseparsers.lagrangian_args(parser)
    parser = baseparsers.xhatshuffle_args(parser)
    parser.add_argument("--crops-mult",
                        help="There will be 3x this many crops (default 1)",
                        dest="crops_mult",
                        type=int,
                        default=1)
    parser.add_argument("--use-norm-rho-updater",
                        help="Use the norm rho updater extension",
                        dest="use_norm_rho_updater",
                        action="store_true")
    args = parser.parse_args()
    return args
Пример #13
0
def Amalgomator_parser(options,
                       inparser_adder,
                       extraargs=None,
                       use_command_line=True):
    """ Helper function for Amalgomator.  This gives us flexibility (e.g., get scen count)
    Args:
        options (dict): Amalgomator control options
        inparser_adder (fct): returns updated ArgumentParser the problem
        extraargs (ArgumentParser) : extra arguments to specify in the command line, e.g. for MMW
        use_command_line (bool): should we take into account the command line to add options ?
                                 default is True
    Returns;
        options (dict): a dict containing the options, both parsed values and pre-set options
    """

    opt = {**options}

    if use_command_line:
        num_scens_reqd = _bool_option(options, "num_scens_reqd")
        if _bool_option(options, "EF-2stage"):
            parser = baseparsers.make_EF2_parser(num_scens_reqd=num_scens_reqd)
        elif _bool_option(options, "EF-mstage"):
            parser = baseparsers.make_EF_multistage_parser(
                num_scens_reqd=num_scens_reqd)

        else:
            if _bool_option(options, "2stage"):
                parser = _basic_parse_args(is_multi=False,
                                           num_scens_reqd=num_scens_reqd)
            elif _bool_option(options, "mstage"):
                parser = _basic_parse_args(is_multi=True,
                                           num_scens_reqd=num_scens_reqd)
            else:
                raise RuntimeError(
                    "The problem type (2stage or mstage) must be specified")
            parser = baseparsers.two_sided_args(parser)
            parser = baseparsers.mip_options(parser)

            #Adding cylinders
            if not "cylinders" in options:
                raise RuntimeError("A cylinder list must be specified")

            for cylinder in options['cylinders']:
                #NOTE: This returns an error if the cylinder has no parser in baseparsers.py
                parser = add_parser(parser, cylinder)

            #Adding extensions
            if "extensions" in options:
                for extension in options['extensions']:
                    parser = add_parser(parser, extension)

        # call inparser last (so it can delete args if it needs to)
        inparser_adder(parser)

        if extraargs is not None:
            parser = argparse.ArgumentParser(parents=[parser, extraargs],
                                             conflict_handler='resolve')

        args = parser.parse_args()

        opt.update(
            vars(args)
        )  #Changes made via the command line overwrite what is in options

        if _bool_option(options, "EF-2stage") or _bool_option(
                options, "EF-mstage"):
            if ('EF_solver_options' in opt):
                opt["EF_solver_options"]["mipgap"] = opt["EF_mipgap"]
            else:
                opt["EF_solver_options"] = {"mipgap": opt["EF_mipgap"]}

    else:
        #Checking if options has all the options we need
        if not _bool_option(options, "EF-2stage") or _bool_option(
                options, "EF-mstage"):
            raise RuntimeError(
                "For now, completly bypassing command line only works with EF."
            )
        if not ('EF_solver_name' in opt):
            opt['EF_solver_name'] = "gurobi"
        if not ('EF_solver_options' in opt):
            opt['EF_solver_options'] = {'mipgap': None}
        if not ('num_scens' in opt):
            raise RuntimeWarning(
                "options should have a number of scenarios to compute a xhat")
        if _bool_option(options, 'EF-mstage') and 'BFs' not in options:
            raise RuntimeError(
                "For a multistage problem, otpions must have a 'BFs' attribute with branching factors"
            )

    return opt