Decision Optimization

Decision Optimization

Delivers prescriptive analytics capabilities and decision intelligence to improve decision-making.


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Building a quadratic constraint

    Posted 08/04/15 06:49 PM

    Originally posted by: NellyMonserrat


    Hi everybody!!!

    Could someone please help me how to solve the next problem? I need to declare a quadratic constrain (constraint 7 in file 'pricing.pdf'), I found the example 'named ejemplo.py' ( I attached the file) and I try to make my constraint like that example.

    I declared the variables and the constraint in this way:

    *************

    ...

    for j in xrange(1, Centros+1):
            Dj.append([])
            listaux.append([])
            for k in xrange(1, Clientes+1):
                Pr.variables.add(obj = [1], lb = [0], ub =[1], names= ["Y_"+str(j)+"_"+str(k)])
                Dj[-1].append(-Bp * Retailers[k-1].demanda * CDs[j-1].ctot[k-1] )
                listaux[-1].append(-Retailers[k-1].varianza)
    for j in xrange(1,Centros+1):
        listaux3 = []
        for k in xrange(1,Clientes):
            listaux3.append("Y_"+str(j)+"_"+str(k))
        for i in xrange(1,Plantas+1):
            #V_i_j
            nombre = "V_"+str(i)+"_"+str(j)
            Pr.variables.add(obj = [0], lb = [0], ub =[w0], names= [nombre])
            for k in xrange(1,Clientes):
                listaux2.append(listaux[j-1][k-1]* Plants[i-1].l[j-1])
        quad = cplex.SparseTriple([nombre],[nombre],val=[1.0])
        qlin = cplex.SparsePair([listaux3],[listaux2])
        Pr.quadratic_constraints.add(lin_expr = qlin,quad_expr = quad,sense = ["L"],rhs=[0])

     

    ****

    But I get this error, and I don't understand the problem

        Pr.quadratic_constraints.add(lin_expr = qlin,quad_expr = quad,sense = ["L"],rhs=[0])
      File "/usr/local/lib/python2.7/dist-packages/cplex/_internal/_subinterfaces.py", line 2400, in add
        map(self._cplex.variables._conv, ind1), map(self._cplex.variables._conv, ind2), qval, name, self._env.parameters.read.apiencoding.get())
      File "/usr/local/lib/python2.7/dist-packages/cplex/_internal/_procedural.py", line 1124, in addqconstr
        LAU.int_list_to_array(linind), LAU.double_list_to_array(linval),
      File "/usr/local/lib/python2.7/dist-packages/cplex/_internal/_list_array_utils.py", line 24, in int_list_to_array
        output[i] = input[i]
      File "/usr/local/lib/python2.7/dist-packages/cplex/_internal/_pycplex.py", line 1604, in __setitem__
        def __setitem__(self, *args): return _pycplex_platform.intArray___setitem__(self, *args)
    TypeError: in method 'intArray___setitem__', argument 3 of type 'int'

    ****

    Thanks in advantage!!!

     

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Building a quadratic constraint

    Posted 08/05/15 05:26 PM

    I have only scanned your code quickly, but should this line of code:

     qlin = cplex.SparsePair([listaux3],[listaux2])
    

    be replaced with:

     qlin = cplex.SparsePair(listaux3,listaux2)
    

    listaux3, and listaux2 are lists, so you're actually passing in lists containing lists in the former.

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Building a quadratic constraint

    Posted 08/05/15 06:46 PM

    Originally posted by: NellyMonserrat


    Yes, that was the problem. Thanks a lot !!!


    #CPLEXOptimizers
    #DecisionOptimization