Asked by:
NLP problem how to change to make it LP
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
All replies

Have a look at Part 3 of this series from my blog:
http://nathanbrixius.wordpress.com/category/projectscheduling/
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.
 Edited by Nate Brixius  Alternate Tuesday, November 29, 2011 1:02 AM
