none
NLP problem how to change to make it LP RRS feed

  • Question

  • Hi!

    I'm a very beginner with Optimization problem and i started to used solverfoundation very recently.

    Sorry for english too! I’ll try to explain my problem.

    I have a demand for a product with a certain quantity Q, I have to produce a production plan for this demand

    A product can be composed with resources r1, r2, with some coefficient c1, c2 as resource usage respectively, with some coefficient scenarios like below , suppose I have 3 scenarios

    Scenario

    1)       c1=0.50 , c2=0.50

    2)       c2=0.25, c2=0.75

    3)       c3=0.75,c2=0.26

    These scenarios are mutually exclusive.

    For instance , if the production for period T , P(T)=10

    For Scenario 2)  Usage of Resource r1 = 10*0.25=2.5   , and r2=10*0.75=7.5

    Resource has availability for each period

    My problem is that due to my model , I have a NLP,  how can I change the model to make It LP ?  I try to lookup with SOS1 but I’m not really experienced with it.

    here is my OML model.

    Model[

      Parameters[

        Sets[Integers[0, Infinity]],

        RessourceSet,

        VarianteSet,

        PeriodeSet

      ],

      Parameters[

        Reals[0, Infinity],

        NomenclatureVarPar[RessourceSet, VarianteSet],

        DispoPar[RessourceSet, PeriodeSet]

      ],

      Decisions[

        Reals[0, Infinity],

        DemandeDecision[PeriodeSet]

      ],

      Decisions[

        Integers[0, 1],

        ActivationDecision[VarianteSet, PeriodeSet]

      ],

      Constraints[

        DemandeConstr -> Sum[

          {iter1, PeriodeSet},

          DemandeDecision[iter1]

        ] <= 1000,

        ConstrRessource -> Foreach[

          {iter2, PeriodeSet},

          Foreach[

            {iter3, RessourceSet},

            Foreach[

              {iter4, VarianteSet},

              (DemandeDecision[iter2] * ActivationDecision[iter4, iter2]) * NomenclatureVarPar[iter3, iter4] <= DispoPar[iter3, iter2]

            ]

          ]

        ],

        ActivationConstr -> Foreach[

          {iter5, PeriodeSet},

          Sum[

            {iter6, VarianteSet},

            If[ActivationDecision[iter6, iter5], 1, 0]

          ] == 1

        ]

      ],

      Goals[

        Maximize[

          SatisfactionGoal -> Annotation[Sum[

            {iter7, PeriodeSet},

            DemandeDecision[iter7]

          ], "order", 0]

        ]

      ]

    ]

    Thanks for any help

    Willy

    Wednesday, November 23, 2011 7:25 AM

All replies

  • Have a look at Part 3 of this series from my blog:

    http://nathanbrixius.wordpress.com/category/project-scheduling/

    the "isActive" decision is something kind of close to what you are after. (But not exactly...)

    Nate

     

    PS this will turn your model into a mixed integer (MIP) model.


    Tuesday, November 29, 2011 1:01 AM
  • Thanks for your reply

    I wille take a look at it

    Willy


    Willy A
    Tuesday, November 29, 2011 5:38 AM