예제 #1
0
 def new_kpi(self, kpi_arg, name_arg):
     # make a name
     if name_arg:
         publish_name = name_arg
     elif hasattr(kpi_arg, 'name') and kpi_arg.name:
         publish_name = kpi_arg.name
     else:
         publish_name = str_maxed(kpi_arg, maxlen=32)
     new_kpi = KPI.new_kpi(self._model, kpi_arg, publish_name)
     return new_kpi
예제 #2
0
 def __repr__(self):
     if self.has_objective():
         s_obj = "obj={0:g}".format(self.objective_value)
     else:
         s_obj = "obj=N/A"
     s_values = ",".join([
         "{0!s}:{1:g}".format(var, val)
         for var, val in iteritems(self._var_value_map)
     ])
     r = "docplex.mp.solution.SolveSolution({0},values={{{1}}})".format(
         s_obj, s_values)
     return str_maxed(r, maxlen=72)
예제 #3
0
    def display(self):
        """ Displays all conflicts.

        """
        print('conflict(s): {0}'.format(self.number_of_conflicts))
        for conflict in self.iter_conflicts():
            st = conflict.status
            elt = conflict.element
            if hasattr(conflict.element, 'as_constraint'):
                ct = conflict.element.as_constraint()
                label = elt.short_typename
            else:
                ct = elt
                label = ct.__class__.__name__
            print("  - status: {1}, {0}: {2!s}".format(label, st.name, str_maxed(ct, maxlen=40)))
예제 #4
0
    def new_constraint_status_var(self, ct):
        # INTERNAL
        model = self._model
        binary_vartype = model.binary_vartype
        status_var_fmt = self.status_var_fmt
        if model.ignore_names or status_var_fmt is None:
            varname = None
        else:
            # use name if any else use truncated ct string representation
            base_varname = self.status_var_fmt.format(
                ct.name or str_maxed(ct, maxlen=20))
            # if name is already taken, use unique index at end to disambiguate
            varname = model._get_non_ambiguous_varname(base_varname)

        return self._make_new_var(binary_vartype, 0, 1, varname, origin=ct)
예제 #5
0
def trim_field(element):
    return str_maxed(element, maxlen=50)
예제 #6
0
 def truncated_str(self):
     return str_maxed(self, maxlen=self._model._max_repr_len)
예제 #7
0
 def __repr__(self):
     return "{0}(name={1},expr={2!s})".format(self.__class__.__name__, self.name, str_maxed(self._expr, maxlen=64))