Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Re-generating an immutable OPL model has no effect.

    Posted 06/19/08 04:02 PM

    Originally posted by: SystemAdmin


    [shadi said:]

    hi,
    i have a column generation problem, in oder to find always atleast one duty for each trip i created i tupleset RelaxationParameters which has all the possibilities of my parameters.

      [b][i]var cpConfig = new IloOplRunConfiguration("btpair_no_preprocess.mod");   
            var cpModel = cpConfig.oplModel;
            cpConfig.cp.param.LogVerbosity="Quiet";
            cpModel.addDataSource(SettingData(cpData0,Opl.item(RelaxationParameters,RelaxationCounter).ctTripType,  Opl.item(RelaxationParameters,RelaxationCounter).ctCover, Opl.item(RelaxationParameters,RelaxationCounter).ctPayCredit, Opl.item(RelaxationParameters,RelaxationCounter).ctRotation, Opl.item(RelaxationParameters,RelaxationCounter).ctDepot, Opl.item(RelaxationParameters,RelaxationCounter).ctBusType, Opl.item(RelaxationParameters,RelaxationCounter).ctPauseTime, t, nSeq, Opl.item(RelaxationParameters,RelaxationCounter).minStop, Opl.item(RelaxationParameters,RelaxationCounter).maxStop, Opl.item(RelaxationParameters,RelaxationCounter).longStop, Opl.item(RelaxationParameters,RelaxationCounter).PayCreditLevel));
            cpModel.generate();
           
           
           
    while (cpConfig.cp.solve()==false){

        cpModel.addDataSource(SettingData(cpData0,Opl.item(RelaxationParameters,RelaxationCounter).ctTripType, Opl.item(RelaxationParameters,RelaxationCounter).ctCover, Opl.item(RelaxationParameters,RelaxationCounter).ctPayCredit, Opl.item(RelaxationParameters,RelaxationCounter).ctRotation, Opl.item(RelaxationParameters,RelaxationCounter).ctDepot, Opl.item(RelaxationParameters,RelaxationCounter).ctBusType, Opl.item(RelaxationParameters,RelaxationCounter).ctPauseTime, t, nSeq, Opl.item(RelaxationParameters,RelaxationCounter).minStop, Opl.item(RelaxationParameters,RelaxationCounter).maxStop, Opl.item(RelaxationParameters,RelaxationCounter).longStop, Opl.item(RelaxationParameters,RelaxationCounter).PayCreditLevel));
            cpModel.generate();
             
                  RelaxationCounter++;
           
    }[/i][/b]

    so i want to change parameters until i find a atleast one solution.

    ***SettingData is a function which return a opldatasource:
    [b][i]
    function SettingData(cpData0, ctTripType, ctCover, ctPayCredit, ctRotation, ctDepot, ctBusType, ctPauseTime,t,  nSeq, minStop, maxStop, longStop, PayCreditLevel){
                    cpData0.ctTripType=ctTripType;
    cpData0.ctCover=ctCover;
    cpData0.ctPayCredit=ctPayCredit;
    cpData0.ctRotation=ctRotation;
    cpData0.ctDepot=ctDepot;
    cpData0.ctBusType=ctBusType;
    cpData0.ctPauseTime=ctPauseTime;
    cpData0.coverTrip = t;                     
                    cpData0.nSeq=nSeq;
    cpData0.minStop = minStop;
    cpData0.maxStop = maxStop;
    cpData0.longStop = longStop;
    cpData0.PayCreditLevel=PayCreditLevel;
           
                    return cpData0;
    } [/i][/b]

    i get the following error:
    Re-generating an immutable OPL model has no effect.


    what i have to do?


    #CPOptimizer
    #DecisionOptimization


  • 2.  Re: Re-generating an immutable OPL model has no effect.

    Posted 06/19/08 04:05 PM

    Originally posted by: SystemAdmin


    [alain.chabrier said:]

    Hi,

    You have to create a new IloOplModel.
    You can feed it with the existing data source.

    Alain
    #CPOptimizer
    #DecisionOptimization


  • 3.  Re: Re-generating an immutable OPL model has no effect.

    Posted 06/19/08 04:24 PM

    Originally posted by: SystemAdmin


    [shadi said:]

    dear Alain

    do you mean like this:
    while (cpConfig.cp.solve()==false){
    [b][i] var cpModel2 = cpConfig.oplModel;[/i][/b]
        cpModel2.addDataSource(SettingData(cpData0,Opl.item(RelaxationParameters,RelaxationCounter).ctTripType, Opl.item(RelaxationParameters,RelaxationCounter).ctCover, Opl.item(RelaxationParameters,RelaxationCounter).ctPayCredit, Opl.item(RelaxationParameters,RelaxationCounter).ctRotation, Opl.item(RelaxationParameters,RelaxationCounter).ctDepot, Opl.item(RelaxationParameters,RelaxationCounter).ctBusType, Opl.item(RelaxationParameters,RelaxationCounter).ctPauseTime, t, nSeq, Opl.item(RelaxationParameters,RelaxationCounter).minStop, Opl.item(RelaxationParameters,RelaxationCounter).maxStop, Opl.item(RelaxationParameters,RelaxationCounter).longStop, Opl.item(RelaxationParameters,RelaxationCounter).PayCreditLevel));
            cpModel2.generate();
      RelaxationCounter++;
           
    }

    ***it still generate a warning:
    *** WARNING[INTERFACE_060]: Ignoring duplicate data source "?".
    *** WARNING[INTERFACE_009]: Re-generating an immutable OPL model has no effect.


    Shadi

    #CPOptimizer
    #DecisionOptimization


  • 4.  Re: Re-generating an immutable OPL model has no effect.

    Posted 06/19/08 04:36 PM

    Originally posted by: SystemAdmin


    [alain.chabrier said:]

    No, you should use a new IloOplModel and not a just new reference.

    You might have a look in the documentation in :
    ILOG OPL Development Studio 6.0 > Language > Language User’s Manual > ILOG Script for OPL > Tutorial: Flow control and column generation

    or in the corresponding example cutstock_main.
    This is a column generaiton examples will probably show how to handle the issues you are facing.

    Hope this helps,
    Alain
    #CPOptimizer
    #DecisionOptimization