Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  cplex solutions Decision variables

    Posted 03/28/18 04:14 AM

    Originally posted by: skyskyhuanghuang


    Hi,everyone.I encountered a problem

    Search terminated normally, 2 solutions found.
     ! Best objective         : 5.62137e+08 (optimal - effective tol. is 56,213.7)
     ! Number of branches     : 563,884
     ! Number of fails        : 226,034
     ! Total memory usage     : 420.1 MB (419.5 MB CP Optimizer + 0.6 MB Concert)
     ! Time spent in solve    : 12.17s (11.39s engine + 0.78s extraction)
     ! Search speed (br. / s) : 49,506.9
     ! ----------------------------------------------------------------------------

    <<< solve, at 366.3s, took 12.1849s


    OBJECTIVE: 5.621367e+8

    <<< post process, at 366.3s, took 7.82013e-05s

    // solution with objective 5.621367e+8
    Yji1 = [[0 0 0 0 0 0 0 0 0 0 1 0 0 0
                 0 0]
                 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
                 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
                 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
                 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]
                 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
                 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
                 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
                 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
                 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
                 [1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
                 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
                 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
                 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
                 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
                 [0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0]];

    It prompts me to find two results, but there is only one objective value, and the decision variable finds only one solution?Why is that?


    #DecisionOptimization
    #OPLusingCPLEXOptimizer


  • 2.  Re: cplex solutions Decision variables

    Posted 03/28/18 04:26 AM

    Hi,

    in the .ops you could check

    regards


    #DecisionOptimization


  • 3.  Re: cplex solutions Decision variables

    Posted 04/24/18 03:02 AM

    Originally posted by: skyskyhuanghuang


    I tried it but it didn't work.I don't know why this is?My model is as follows:

    using CP;
    int M=...;
    float P=...;
    float H[1..M][1..M]=...;
    float B0=...;
    float n0=...;
    dvar int Yji[1..M][1..M] in 0..1 ;
    execute
    {
    var p=cp.param;
    p.LogPeriod=80000;
    p.TimeLimit=36000;
    }
    maximize
    B0*sum(i in 1..M)(
         log(1+P*sum(j in 1..M:j!=i)(
                 H[j][i]*Yji[j][i]/ //fenzi
                   (n0+P*sum(n in 1..M:n!=j)(
                            sum(q in 1..M)H[n][i]*Yji[n][q]
                          )
                   )
               )
             )/log(2)
       );
    subject to
    {
    forall(j,i in 1..M:j!=i&&i!=j)
    {
    Limiationji:
    Yji[j][i]==1 => 
        P*H[j][i]*Yji[j][i]/
           (n0+P*sum(n in 1..M:n!=j)(
                            sum(q in 1..M)H[n][i]*Yji[n][q]
                  )
           )>=1;
    }
    forall(i in 1..M)
    {
    Hangyueshu:
     sum(j in 1..M)
         Yji[i][j]<=1;   
    }
    forall(i in 1..M)
    {
    Lieyueshuyueshu:  
        sum(j in 1..M)
         Yji[j][i]<=1;   
    }
    forall(i in 1..M)
       forall(j in 1..M)
    Duichenyueshu:
         Yji[i][j]==Yji[j][i];
    forall(i in 1..M)
    Zishenyueshu:
      Yji[i][i]==0;
    }


    #DecisionOptimization
    #OPLusingCPLEXOptimizer


  • 4.  Re: cplex solutions Decision variables



  • 5.  Re: cplex solutions Decision variables

    Posted 04/26/18 09:05 PM

    Originally posted by: skyskyhuanghuang


    Thank you, but I wrote the following form, cplex can not solve the result, this is why?

    When I remove the main module, only one result can be solved, but all the feasible results cannot be solved.this is why?

    using CP;
    int M=...;
    float P=...;
    float H[1..M][1..M]=...;
    float B0=...;
    float n0=...;
    dvar int Yji[1..M][1..M] in 0..1 ;
    execute
    {
    var p=cp.param;
    p.LogPeriod=80000;
    p.TimeLimit=360;
    p.Workers=2;
    }
     
     
     
    maximize
    B0*sum(i in 1..M)(
         log(1+P*sum(j in 1..M:j!=i)(
                 H[j][i]*Yji[j][i]/ //fenzi
                   (n0+P*sum(n in 1..M:n!=j)(
                            sum(q in 1..M)H[n][i]*Yji[n][q]
                          )
                   )
               )
             )/log(2)
       );
       
    subject to
    {
     
    forall(i in 1..M)
    {
    Hangyueshu:
     sum(j in 1..M)
         Yji[i][j]<=1;   
    }
    forall(i in 1..M)
    {
    Lieyueshuyueshu:  
        sum(j in 1..M)
         Yji[j][i]<=1;   
    }
    forall(i in 1..M)
       forall(j in 1..M)
    Duichenyueshu:
         Yji[i][j]==Yji[j][i];
    forall(i in 1..M)
    Zishenyueshu:
      Yji[i][i]==0;
      
    }
    main
    {
    thisOplModel.generate();
    cp.startNewSearch();
    while(cp.next())
    {
    thisOplModel.postProcess();
    }
    }

     

     


    #DecisionOptimization
    #OPLusingCPLEXOptimizer


  • 6.  Re: cplex solutions Decision variables

    Posted 04/27/18 01:19 AM

    Hi

     using CP;
    int M=4;
    float P=1.5;
    float H[i in 1..M][j in 1..M]=rand(10);
    float B0=1.2;
    float n0=2.0;
    dvar int Yji[1..M][1..M] in 0..1 ;
    execute
    {
    var p=cp.param;
    p.LogPeriod=80000;
    p.TimeLimit=360;
    p.Workers=2;
    }
     
     
     
    maximize
    B0*sum(i in 1..M)(
         log(1+P*sum(j in 1..M:j!=i)(
                 H[j][i]*Yji[j][i]/ //fenzi
                   (n0+P*sum(n in 1..M:n!=j)(
                            sum(q in 1..M)H[n][i]*Yji[n][q]
                          )
                   )
               )
             )/log(2)
       );
       
    subject to
    {
     
    forall(i in 1..M)
    {
    Hangyueshu:
     sum(j in 1..M)
         Yji[i][j]<=1;   
    }
    forall(i in 1..M)
    {
    Lieyueshuyueshu:  
        sum(j in 1..M)
         Yji[j][i]<=1;   
    }
    forall(i in 1..M)
       forall(j in 1..M)
    Duichenyueshu:
         Yji[i][j]==Yji[j][i];
    forall(i in 1..M)
    Zishenyueshu:
      Yji[i][i]==0;
     
    }

    execute
    {


    writeln("Yji=",Yji);
    }

    main
    {
    var nbsol=0;

    thisOplModel.generate();
    cp.startNewSearch();
    while(cp.next())
    {
    nbsol++;
    writeln("solution ",nbsol);

    thisOplModel.postProcess();
    }
    }

    gives

    solution 1
    Yji= [[0 0 0 0]
             [0 0 0 0]
             [0 0 0 0]
             [0 0 0 0]]
    solution 2
    Yji= [[0 0 1 0]
             [0 0 0 1]
             [1 0 0 0]
             [0 1 0 0]]
    solution 3
    Yji= [[0 0 1 0]
             [0 0 0 0]
             [1 0 0 0]
             [0 0 0 0]]
    solution 4
    Yji= [[0 0 0 1]
             [0 0 0 0]
             [0 0 0 0]
             [1 0 0 0]]

     

    regards


    #DecisionOptimization
    #OPLusingCPLEXOptimizer


  • 7.  Re: cplex solutions Decision variables

    Posted 04/28/18 02:23 AM

    Originally posted by: skyskyhuanghuang


    thank you very much! There are various values for decision variables,But how can I get the target value as follows ?

    maximize
    B0*sum(i in 1..M)(
         log(1+P*sum(j in 1..M:j!=i)(
                 H[j][i]*Yji[j][i]/ //fenzi
                   (n0+P*sum(n in 1..M:n!=j)(
                            sum(q in 1..M)H[n][i]*Yji[n][q]
                          )
                   )
               )
             )/log(2)
       );


    #DecisionOptimization
    #OPLusingCPLEXOptimizer


  • 8.  Re: cplex solutions Decision variables

    Posted 04/28/18 05:38 AM

    Hi

    using CP;
    int M=4;
    float P=1.5;
    float H[i in 1..M][j in 1..M]=rand(10);
    float B0=1.2;
    float n0=2.0;
    dvar int Yji[1..M][1..M] in 0..1 ;
    execute
    {
    var p=cp.param;
    p.LogPeriod=80000;
    p.TimeLimit=360;
    p.Workers=2;
    }
     
     
     
    maximize
    B0*sum(i in 1..M)(
         log(1+P*sum(j in 1..M:j!=i)(
                 H[j][i]*Yji[j][i]/ //fenzi
                   (n0+P*sum(n in 1..M:n!=j)(
                            sum(q in 1..M)H[n][i]*Yji[n][q]
                          )
                   )
               )
             )/log(2)
       );
       
    subject to
    {
     
    forall(i in 1..M)
    {
    Hangyueshu:
     sum(j in 1..M)
         Yji[i][j]<=1;   
    }
    forall(i in 1..M)
    {
    Lieyueshuyueshu:  
        sum(j in 1..M)
         Yji[j][i]<=1;   
    }
    forall(i in 1..M)
       forall(j in 1..M)
    Duichenyueshu:
         Yji[i][j]==Yji[j][i];
    forall(i in 1..M)
    Zishenyueshu:
      Yji[i][i]==0;
     
    }

    execute
    {


    writeln("Yji=",Yji);
    writeln("with objective ",cp.getObjValue());
    }

    main
    {
    var nbsol=0;

    thisOplModel.generate();
    cp.startNewSearch();
    while(cp.next())
    {
    nbsol++;
    writeln("solution ",nbsol);


    thisOplModel.postProcess();
    }
    }

    gives

    solution 1
    Yji= [[0 0 0 0]
             [0 0 0 0]
             [0 0 0 0]
             [0 0 0 0]]
    with objective 0
    solution 2
    Yji= [[0 0 1 0]
             [0 0 0 1]
             [1 0 0 0]
             [0 1 0 0]]
    with objective 1.576019504
    solution 3
    Yji= [[0 0 1 0]
             [0 0 0 0]
             [1 0 0 0]
             [0 0 0 0]]
    with objective 1.922443217
    solution 4
    Yji= [[0 0 0 1]
             [0 0 0 0]
             [0 0 0 0]
             [1 0 0 0]]
    with objective 2.461228804

     

    regards

     

    https://www.ibm.com/developerworks/community/forums/html/topic?id=1bf1f4de-b6fa-4375-a397-741e9239513e&ps=25


    #DecisionOptimization
    #OPLusingCPLEXOptimizer