MINLP alternatives
Clash Royale CLAN TAG#URR8PPP
up vote
0
down vote
favorite
I have a problem in which I need to allocate an amount of a service and each allocation consumes time.
The mathematical formulation would be something like:
$$
min: f=sum_s^Ssum_h^HAmount_s, h cdot Used_s, h cdot Price_s
$$
st:
$$
sum_h^HUsed_s, h cdot Time_s leq Max_usage_time_s quad forall s in S
$$
$Used_s, h$ is a integer variable that determines if the service $s$ is used in the hour $h$.
$Amount_s, h$ is the amount of service $s$ used in the hour $h$.
In the ideal situation, this problem requires the use of a Non-Linear Mixed Integer programming library.
However I don't have the budget to spend in Gurobi or alike to solve this.
Hence, which are reasonable methods that can be used for this problem instead of MINLP?
And if you know of open source implementations better.
nonlinear-optimization
add a comment |Â
up vote
0
down vote
favorite
I have a problem in which I need to allocate an amount of a service and each allocation consumes time.
The mathematical formulation would be something like:
$$
min: f=sum_s^Ssum_h^HAmount_s, h cdot Used_s, h cdot Price_s
$$
st:
$$
sum_h^HUsed_s, h cdot Time_s leq Max_usage_time_s quad forall s in S
$$
$Used_s, h$ is a integer variable that determines if the service $s$ is used in the hour $h$.
$Amount_s, h$ is the amount of service $s$ used in the hour $h$.
In the ideal situation, this problem requires the use of a Non-Linear Mixed Integer programming library.
However I don't have the budget to spend in Gurobi or alike to solve this.
Hence, which are reasonable methods that can be used for this problem instead of MINLP?
And if you know of open source implementations better.
nonlinear-optimization
Most commercial solvers have free trial licenses with no size restrictions. If you only need to solve the problem few times go for that. Otherwise look for open source solvers projects.coin-or.org/Bonmin or projects.coin-or.org/Cbc depending on whether you solve a MILP or MINLP.
â AndreaCassioli
May 3 '17 at 9:54
Have a look at sourceforge.net/directory/os:windows/â¦
â Claude Leibovici
May 3 '17 at 9:56
add a comment |Â
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I have a problem in which I need to allocate an amount of a service and each allocation consumes time.
The mathematical formulation would be something like:
$$
min: f=sum_s^Ssum_h^HAmount_s, h cdot Used_s, h cdot Price_s
$$
st:
$$
sum_h^HUsed_s, h cdot Time_s leq Max_usage_time_s quad forall s in S
$$
$Used_s, h$ is a integer variable that determines if the service $s$ is used in the hour $h$.
$Amount_s, h$ is the amount of service $s$ used in the hour $h$.
In the ideal situation, this problem requires the use of a Non-Linear Mixed Integer programming library.
However I don't have the budget to spend in Gurobi or alike to solve this.
Hence, which are reasonable methods that can be used for this problem instead of MINLP?
And if you know of open source implementations better.
nonlinear-optimization
I have a problem in which I need to allocate an amount of a service and each allocation consumes time.
The mathematical formulation would be something like:
$$
min: f=sum_s^Ssum_h^HAmount_s, h cdot Used_s, h cdot Price_s
$$
st:
$$
sum_h^HUsed_s, h cdot Time_s leq Max_usage_time_s quad forall s in S
$$
$Used_s, h$ is a integer variable that determines if the service $s$ is used in the hour $h$.
$Amount_s, h$ is the amount of service $s$ used in the hour $h$.
In the ideal situation, this problem requires the use of a Non-Linear Mixed Integer programming library.
However I don't have the budget to spend in Gurobi or alike to solve this.
Hence, which are reasonable methods that can be used for this problem instead of MINLP?
And if you know of open source implementations better.
nonlinear-optimization
asked May 3 '17 at 9:17
Santi Peñate-Vera
1049
1049
Most commercial solvers have free trial licenses with no size restrictions. If you only need to solve the problem few times go for that. Otherwise look for open source solvers projects.coin-or.org/Bonmin or projects.coin-or.org/Cbc depending on whether you solve a MILP or MINLP.
â AndreaCassioli
May 3 '17 at 9:54
Have a look at sourceforge.net/directory/os:windows/â¦
â Claude Leibovici
May 3 '17 at 9:56
add a comment |Â
Most commercial solvers have free trial licenses with no size restrictions. If you only need to solve the problem few times go for that. Otherwise look for open source solvers projects.coin-or.org/Bonmin or projects.coin-or.org/Cbc depending on whether you solve a MILP or MINLP.
â AndreaCassioli
May 3 '17 at 9:54
Have a look at sourceforge.net/directory/os:windows/â¦
â Claude Leibovici
May 3 '17 at 9:56
Most commercial solvers have free trial licenses with no size restrictions. If you only need to solve the problem few times go for that. Otherwise look for open source solvers projects.coin-or.org/Bonmin or projects.coin-or.org/Cbc depending on whether you solve a MILP or MINLP.
â AndreaCassioli
May 3 '17 at 9:54
Most commercial solvers have free trial licenses with no size restrictions. If you only need to solve the problem few times go for that. Otherwise look for open source solvers projects.coin-or.org/Bonmin or projects.coin-or.org/Cbc depending on whether you solve a MILP or MINLP.
â AndreaCassioli
May 3 '17 at 9:54
Have a look at sourceforge.net/directory/os:windows/â¦
â Claude Leibovici
May 3 '17 at 9:56
Have a look at sourceforge.net/directory/os:windows/â¦
â Claude Leibovici
May 3 '17 at 9:56
add a comment |Â
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
I assume that the variable Used$_s,h$ is binary and determines if the service $s$ is used in hour $h$ if Used$_s,h=1$ and Used$_s,h=0$ otherwise.
If you have an upper bound to the variable Amount$_s,h$ then you can linearize the expression Amount$_s,hcdot$ Used$_s,h$ in the objective function to turn your problem into an LP which you can then solve with an ordinary LP-solver (by the cost of introducing additional variables).
In order to linearize the expression, let $A$ denote the upper bound to Amount$_s,h$ for all $s$ and $h$. Then you introduce a new variable $z_s,h$ and add the following constraints:
$$z_s,h leq A cdot Used_s,h$$
$$z_s,h leq Amount_s,h$$
$$z_s,h geq Amount_s,h - (1-Used_s,h)A $$
$$z_s,h geq 0$$
As objective function you now minimize
$$min: f=sum_s^Ssum_h^Hz_s, h cdot Price_s$$
If $Used_s,h=0$ for a given pair $(s,h)$, it follows from the first and fourth constraint that $z_s,h=0$. If $Used_s,h=1$, then constraints number 2 and 3 will force $z_s,h= Amount_s,h$.
Hence, you now have a linear model.
add a comment |Â
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
I assume that the variable Used$_s,h$ is binary and determines if the service $s$ is used in hour $h$ if Used$_s,h=1$ and Used$_s,h=0$ otherwise.
If you have an upper bound to the variable Amount$_s,h$ then you can linearize the expression Amount$_s,hcdot$ Used$_s,h$ in the objective function to turn your problem into an LP which you can then solve with an ordinary LP-solver (by the cost of introducing additional variables).
In order to linearize the expression, let $A$ denote the upper bound to Amount$_s,h$ for all $s$ and $h$. Then you introduce a new variable $z_s,h$ and add the following constraints:
$$z_s,h leq A cdot Used_s,h$$
$$z_s,h leq Amount_s,h$$
$$z_s,h geq Amount_s,h - (1-Used_s,h)A $$
$$z_s,h geq 0$$
As objective function you now minimize
$$min: f=sum_s^Ssum_h^Hz_s, h cdot Price_s$$
If $Used_s,h=0$ for a given pair $(s,h)$, it follows from the first and fourth constraint that $z_s,h=0$. If $Used_s,h=1$, then constraints number 2 and 3 will force $z_s,h= Amount_s,h$.
Hence, you now have a linear model.
add a comment |Â
up vote
1
down vote
accepted
I assume that the variable Used$_s,h$ is binary and determines if the service $s$ is used in hour $h$ if Used$_s,h=1$ and Used$_s,h=0$ otherwise.
If you have an upper bound to the variable Amount$_s,h$ then you can linearize the expression Amount$_s,hcdot$ Used$_s,h$ in the objective function to turn your problem into an LP which you can then solve with an ordinary LP-solver (by the cost of introducing additional variables).
In order to linearize the expression, let $A$ denote the upper bound to Amount$_s,h$ for all $s$ and $h$. Then you introduce a new variable $z_s,h$ and add the following constraints:
$$z_s,h leq A cdot Used_s,h$$
$$z_s,h leq Amount_s,h$$
$$z_s,h geq Amount_s,h - (1-Used_s,h)A $$
$$z_s,h geq 0$$
As objective function you now minimize
$$min: f=sum_s^Ssum_h^Hz_s, h cdot Price_s$$
If $Used_s,h=0$ for a given pair $(s,h)$, it follows from the first and fourth constraint that $z_s,h=0$. If $Used_s,h=1$, then constraints number 2 and 3 will force $z_s,h= Amount_s,h$.
Hence, you now have a linear model.
add a comment |Â
up vote
1
down vote
accepted
up vote
1
down vote
accepted
I assume that the variable Used$_s,h$ is binary and determines if the service $s$ is used in hour $h$ if Used$_s,h=1$ and Used$_s,h=0$ otherwise.
If you have an upper bound to the variable Amount$_s,h$ then you can linearize the expression Amount$_s,hcdot$ Used$_s,h$ in the objective function to turn your problem into an LP which you can then solve with an ordinary LP-solver (by the cost of introducing additional variables).
In order to linearize the expression, let $A$ denote the upper bound to Amount$_s,h$ for all $s$ and $h$. Then you introduce a new variable $z_s,h$ and add the following constraints:
$$z_s,h leq A cdot Used_s,h$$
$$z_s,h leq Amount_s,h$$
$$z_s,h geq Amount_s,h - (1-Used_s,h)A $$
$$z_s,h geq 0$$
As objective function you now minimize
$$min: f=sum_s^Ssum_h^Hz_s, h cdot Price_s$$
If $Used_s,h=0$ for a given pair $(s,h)$, it follows from the first and fourth constraint that $z_s,h=0$. If $Used_s,h=1$, then constraints number 2 and 3 will force $z_s,h= Amount_s,h$.
Hence, you now have a linear model.
I assume that the variable Used$_s,h$ is binary and determines if the service $s$ is used in hour $h$ if Used$_s,h=1$ and Used$_s,h=0$ otherwise.
If you have an upper bound to the variable Amount$_s,h$ then you can linearize the expression Amount$_s,hcdot$ Used$_s,h$ in the objective function to turn your problem into an LP which you can then solve with an ordinary LP-solver (by the cost of introducing additional variables).
In order to linearize the expression, let $A$ denote the upper bound to Amount$_s,h$ for all $s$ and $h$. Then you introduce a new variable $z_s,h$ and add the following constraints:
$$z_s,h leq A cdot Used_s,h$$
$$z_s,h leq Amount_s,h$$
$$z_s,h geq Amount_s,h - (1-Used_s,h)A $$
$$z_s,h geq 0$$
As objective function you now minimize
$$min: f=sum_s^Ssum_h^Hz_s, h cdot Price_s$$
If $Used_s,h=0$ for a given pair $(s,h)$, it follows from the first and fourth constraint that $z_s,h=0$. If $Used_s,h=1$, then constraints number 2 and 3 will force $z_s,h= Amount_s,h$.
Hence, you now have a linear model.
answered Aug 28 at 13:14
YukiJ
1,6742624
1,6742624
add a comment |Â
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f2263575%2fminlp-alternatives%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Most commercial solvers have free trial licenses with no size restrictions. If you only need to solve the problem few times go for that. Otherwise look for open source solvers projects.coin-or.org/Bonmin or projects.coin-or.org/Cbc depending on whether you solve a MILP or MINLP.
â AndreaCassioli
May 3 '17 at 9:54
Have a look at sourceforge.net/directory/os:windows/â¦
â Claude Leibovici
May 3 '17 at 9:56