def optimize_model(args): feature_fn, margin_fn, num_features, actions = select_feature_fn(args) print 'Found model: {}'.format(args.modelfile) if args.model == 'multi': mm_model = MultiSlackMaxMarginModel.read(args.modelfile, actions, num_features, feature_fn, margin_fn) elif args.model == 'bellman': mm_model = BellmanMaxMarginModel.read(args.modelfile, actions, num_features, feature_fn, margin_fn) mm_model.D = args.D mm_model.F = args.F else: mm_model = MaxMarginModel.read(args.modelfile, actions, num_features, feature_fn, margin_fn) if args.save_memory: mm_model.model.setParam('threads', 1) # Use single thread instead of maximum # barrier method (#2) is default for QP, but uses more memory and could lead to error mm_model.model.setParam('method', 1) # Use dual simplex method to solve model #mm_model.model.setParam('method', 0) # Use primal simplex method to solve model mm_model.C = args.C mm_model.optimize_model() mm_model.save_weights_to_file(args.weightfile)