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
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
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
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
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
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
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
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
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
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
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
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
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