Supplying a vector of inequalities/constraints to mystic
I am trying to supply constraints to a a function minimisation that I have hitherto been performing successfully with an unconstrained algorithm available via scipy (scipy.optimize.fmin_l_bfgs_b()
).
Reading up (see, e.g, Python constrained non-linear optimization), I discovered a minimisation packed called mystic
that seems to be what I need. My situation is as follows. I have a function of 3N
variables (representing xyz position coordinates of N
nodes), and I want to supply a list of constraints such that z/x = const.
for each node. This makes for a total of N
constraints. How do I do define/supply these constraints most efficiently for mystic()
? Can the same constraint object be used with scipy.optimize.slsqp()
as well? Since my constraints are linear, this should be a viable option too.
I tried the following, but it crashed my computer:
import mystic.symbolic as ms
ieqns = ''
for p in range(N):
ieqns += 'x'+str(p+2) +'/x'+str(p) +" <= 2"
cf = ms.generate_constraint(ms.generate_solvers(ms.simplify(ieqns)))
pf = ms.generate_penalty(ms.generate_conditions(ieqns), k=1e12)
python optimization scipy mystic
add a comment |
I am trying to supply constraints to a a function minimisation that I have hitherto been performing successfully with an unconstrained algorithm available via scipy (scipy.optimize.fmin_l_bfgs_b()
).
Reading up (see, e.g, Python constrained non-linear optimization), I discovered a minimisation packed called mystic
that seems to be what I need. My situation is as follows. I have a function of 3N
variables (representing xyz position coordinates of N
nodes), and I want to supply a list of constraints such that z/x = const.
for each node. This makes for a total of N
constraints. How do I do define/supply these constraints most efficiently for mystic()
? Can the same constraint object be used with scipy.optimize.slsqp()
as well? Since my constraints are linear, this should be a viable option too.
I tried the following, but it crashed my computer:
import mystic.symbolic as ms
ieqns = ''
for p in range(N):
ieqns += 'x'+str(p+2) +'/x'+str(p) +" <= 2"
cf = ms.generate_constraint(ms.generate_solvers(ms.simplify(ieqns)))
pf = ms.generate_penalty(ms.generate_conditions(ieqns), k=1e12)
python optimization scipy mystic
ForN=3
I get'x2/x0 <= 2x3/x1 <= 2x4/x2 <= 2'
. Do you need a linebreak here? Also, this might indeed be suitable for a linear programming solver, as you can rewrite all your constraints toz = c * x
(but we don't know your objective function...).
– Cleb
Nov 13 '18 at 7:34
@Cleb, Indeed, I realised that my objective function, though complicated, is quadratic inx
. Hence, something likeSLSQP
should be ideal for what I am searching (see stackoverflow.com/questions/52001922/… for a guide to defining constraints withscipy.minimize()
). However, for future reference, I would still like to know how to define a vector of constraints formystic
. Is adding an
enough?
– ap21
Nov 13 '18 at 17:29
@ap21: The answer is yes, adding then
is enough. Also whatsimplify
does is isolate a single variable on the left-hand side... that can take some time, so generally, if it's as easy as your constraints equations are, I just would rewrite them by hand.
– Mike McKerns
Nov 14 '18 at 13:27
add a comment |
I am trying to supply constraints to a a function minimisation that I have hitherto been performing successfully with an unconstrained algorithm available via scipy (scipy.optimize.fmin_l_bfgs_b()
).
Reading up (see, e.g, Python constrained non-linear optimization), I discovered a minimisation packed called mystic
that seems to be what I need. My situation is as follows. I have a function of 3N
variables (representing xyz position coordinates of N
nodes), and I want to supply a list of constraints such that z/x = const.
for each node. This makes for a total of N
constraints. How do I do define/supply these constraints most efficiently for mystic()
? Can the same constraint object be used with scipy.optimize.slsqp()
as well? Since my constraints are linear, this should be a viable option too.
I tried the following, but it crashed my computer:
import mystic.symbolic as ms
ieqns = ''
for p in range(N):
ieqns += 'x'+str(p+2) +'/x'+str(p) +" <= 2"
cf = ms.generate_constraint(ms.generate_solvers(ms.simplify(ieqns)))
pf = ms.generate_penalty(ms.generate_conditions(ieqns), k=1e12)
python optimization scipy mystic
I am trying to supply constraints to a a function minimisation that I have hitherto been performing successfully with an unconstrained algorithm available via scipy (scipy.optimize.fmin_l_bfgs_b()
).
Reading up (see, e.g, Python constrained non-linear optimization), I discovered a minimisation packed called mystic
that seems to be what I need. My situation is as follows. I have a function of 3N
variables (representing xyz position coordinates of N
nodes), and I want to supply a list of constraints such that z/x = const.
for each node. This makes for a total of N
constraints. How do I do define/supply these constraints most efficiently for mystic()
? Can the same constraint object be used with scipy.optimize.slsqp()
as well? Since my constraints are linear, this should be a viable option too.
I tried the following, but it crashed my computer:
import mystic.symbolic as ms
ieqns = ''
for p in range(N):
ieqns += 'x'+str(p+2) +'/x'+str(p) +" <= 2"
cf = ms.generate_constraint(ms.generate_solvers(ms.simplify(ieqns)))
pf = ms.generate_penalty(ms.generate_conditions(ieqns), k=1e12)
python optimization scipy mystic
python optimization scipy mystic
edited Nov 13 '18 at 4:47
asked Nov 13 '18 at 4:38
ap21
184110
184110
ForN=3
I get'x2/x0 <= 2x3/x1 <= 2x4/x2 <= 2'
. Do you need a linebreak here? Also, this might indeed be suitable for a linear programming solver, as you can rewrite all your constraints toz = c * x
(but we don't know your objective function...).
– Cleb
Nov 13 '18 at 7:34
@Cleb, Indeed, I realised that my objective function, though complicated, is quadratic inx
. Hence, something likeSLSQP
should be ideal for what I am searching (see stackoverflow.com/questions/52001922/… for a guide to defining constraints withscipy.minimize()
). However, for future reference, I would still like to know how to define a vector of constraints formystic
. Is adding an
enough?
– ap21
Nov 13 '18 at 17:29
@ap21: The answer is yes, adding then
is enough. Also whatsimplify
does is isolate a single variable on the left-hand side... that can take some time, so generally, if it's as easy as your constraints equations are, I just would rewrite them by hand.
– Mike McKerns
Nov 14 '18 at 13:27
add a comment |
ForN=3
I get'x2/x0 <= 2x3/x1 <= 2x4/x2 <= 2'
. Do you need a linebreak here? Also, this might indeed be suitable for a linear programming solver, as you can rewrite all your constraints toz = c * x
(but we don't know your objective function...).
– Cleb
Nov 13 '18 at 7:34
@Cleb, Indeed, I realised that my objective function, though complicated, is quadratic inx
. Hence, something likeSLSQP
should be ideal for what I am searching (see stackoverflow.com/questions/52001922/… for a guide to defining constraints withscipy.minimize()
). However, for future reference, I would still like to know how to define a vector of constraints formystic
. Is adding an
enough?
– ap21
Nov 13 '18 at 17:29
@ap21: The answer is yes, adding then
is enough. Also whatsimplify
does is isolate a single variable on the left-hand side... that can take some time, so generally, if it's as easy as your constraints equations are, I just would rewrite them by hand.
– Mike McKerns
Nov 14 '18 at 13:27
For
N=3
I get 'x2/x0 <= 2x3/x1 <= 2x4/x2 <= 2'
. Do you need a linebreak here? Also, this might indeed be suitable for a linear programming solver, as you can rewrite all your constraints to z = c * x
(but we don't know your objective function...).– Cleb
Nov 13 '18 at 7:34
For
N=3
I get 'x2/x0 <= 2x3/x1 <= 2x4/x2 <= 2'
. Do you need a linebreak here? Also, this might indeed be suitable for a linear programming solver, as you can rewrite all your constraints to z = c * x
(but we don't know your objective function...).– Cleb
Nov 13 '18 at 7:34
@Cleb, Indeed, I realised that my objective function, though complicated, is quadratic in
x
. Hence, something like SLSQP
should be ideal for what I am searching (see stackoverflow.com/questions/52001922/… for a guide to defining constraints with scipy.minimize()
). However, for future reference, I would still like to know how to define a vector of constraints for mystic
. Is adding a n
enough?– ap21
Nov 13 '18 at 17:29
@Cleb, Indeed, I realised that my objective function, though complicated, is quadratic in
x
. Hence, something like SLSQP
should be ideal for what I am searching (see stackoverflow.com/questions/52001922/… for a guide to defining constraints with scipy.minimize()
). However, for future reference, I would still like to know how to define a vector of constraints for mystic
. Is adding a n
enough?– ap21
Nov 13 '18 at 17:29
@ap21: The answer is yes, adding the
n
is enough. Also what simplify
does is isolate a single variable on the left-hand side... that can take some time, so generally, if it's as easy as your constraints equations are, I just would rewrite them by hand.– Mike McKerns
Nov 14 '18 at 13:27
@ap21: The answer is yes, adding the
n
is enough. Also what simplify
does is isolate a single variable on the left-hand side... that can take some time, so generally, if it's as easy as your constraints equations are, I just would rewrite them by hand.– Mike McKerns
Nov 14 '18 at 13:27
add a comment |
1 Answer
1
active
oldest
votes
I'm the mystic
author. I believe what you are looking to do is something like this:
>>> import mystic.symbolic as ms
>>> ieqns = ''
>>> for p in range(10):
... ieqns += 'x0 <= 2*x1n'.format(p+2,p)
...
>>> cf = ms.generate_constraint(ms.generate_solvers(ieqns))
>>>
>>> # test that it applies the constraints
>>> cf([1.,3.,5.,7.,9.,11.,13.,15.,17.,19.,21.,23.,25.])
[1.0, 3.0, 2.0, 6.0, 4.0, 11.0, 8.0, 15.0, 16.0, 19.0, 21.0, 23.0, 25.0]
Then we can minimize while applying the constraints (however, in the following case the constraints are basically irrelevant):
>>> # get an objective
>>> import mystic.models as mm
>>> rosen = mm.dejong.Rosenbrock(12).function
>>>
>>> # get an optimizer
>>> import mystic.solvers as my
>>> result = my.diffev2(rosen, x0=bounds, bounds=bounds, constrints=cf, npop=40, disp=False, full_output=True, gtol=100)
>>>
>>> # get the solution
>>> result[0]
array([0.99997179, 1.00005506, 1.00012367, 0.99998539, 0.99984306,
0.99981495, 0.999951 , 0.99996505, 0.99971107, 0.99925239,
0.99846259, 0.99692293])
>>> # and the final 'cost'
>>> result[1]
2.2385442425350018e-05
>>>
Thanks! But tell me, shouldn't suppyling a vectorx
to the constraints give back a vector of Boolean values? What are the numbers it is returning?
– ap21
Nov 14 '18 at 21:57
A different question: I have an explicit gradient of my cost function as well. I couldn't find any default algorithm inmystic
that makes use of an explicit gradient. Is there some algorithm that can use a gradient?
– ap21
Nov 14 '18 at 22:03
1
@ap21: No, amystic.constraint
is a "mapping", so it has the formx' = c(x)
-- you could think of it as a nonlinear transform. On the other hand, amystic.penalty
returns a penalty value that is added to the cost... so has the formy = k*p(x)
, which is additive to thecost
. With respect to your second question, the most recentmystic
release doesn't have a gradient solver... however, I have built a gradient solver, and standalone functions that calculate the gradient from points the solar evaluates. These will be included in the next release, and should be in GitHub this month.
– Mike McKerns
Nov 15 '18 at 0:58
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
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
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53273909%2fsupplying-a-vector-of-inequalities-constraints-to-mystic%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I'm the mystic
author. I believe what you are looking to do is something like this:
>>> import mystic.symbolic as ms
>>> ieqns = ''
>>> for p in range(10):
... ieqns += 'x0 <= 2*x1n'.format(p+2,p)
...
>>> cf = ms.generate_constraint(ms.generate_solvers(ieqns))
>>>
>>> # test that it applies the constraints
>>> cf([1.,3.,5.,7.,9.,11.,13.,15.,17.,19.,21.,23.,25.])
[1.0, 3.0, 2.0, 6.0, 4.0, 11.0, 8.0, 15.0, 16.0, 19.0, 21.0, 23.0, 25.0]
Then we can minimize while applying the constraints (however, in the following case the constraints are basically irrelevant):
>>> # get an objective
>>> import mystic.models as mm
>>> rosen = mm.dejong.Rosenbrock(12).function
>>>
>>> # get an optimizer
>>> import mystic.solvers as my
>>> result = my.diffev2(rosen, x0=bounds, bounds=bounds, constrints=cf, npop=40, disp=False, full_output=True, gtol=100)
>>>
>>> # get the solution
>>> result[0]
array([0.99997179, 1.00005506, 1.00012367, 0.99998539, 0.99984306,
0.99981495, 0.999951 , 0.99996505, 0.99971107, 0.99925239,
0.99846259, 0.99692293])
>>> # and the final 'cost'
>>> result[1]
2.2385442425350018e-05
>>>
Thanks! But tell me, shouldn't suppyling a vectorx
to the constraints give back a vector of Boolean values? What are the numbers it is returning?
– ap21
Nov 14 '18 at 21:57
A different question: I have an explicit gradient of my cost function as well. I couldn't find any default algorithm inmystic
that makes use of an explicit gradient. Is there some algorithm that can use a gradient?
– ap21
Nov 14 '18 at 22:03
1
@ap21: No, amystic.constraint
is a "mapping", so it has the formx' = c(x)
-- you could think of it as a nonlinear transform. On the other hand, amystic.penalty
returns a penalty value that is added to the cost... so has the formy = k*p(x)
, which is additive to thecost
. With respect to your second question, the most recentmystic
release doesn't have a gradient solver... however, I have built a gradient solver, and standalone functions that calculate the gradient from points the solar evaluates. These will be included in the next release, and should be in GitHub this month.
– Mike McKerns
Nov 15 '18 at 0:58
add a comment |
I'm the mystic
author. I believe what you are looking to do is something like this:
>>> import mystic.symbolic as ms
>>> ieqns = ''
>>> for p in range(10):
... ieqns += 'x0 <= 2*x1n'.format(p+2,p)
...
>>> cf = ms.generate_constraint(ms.generate_solvers(ieqns))
>>>
>>> # test that it applies the constraints
>>> cf([1.,3.,5.,7.,9.,11.,13.,15.,17.,19.,21.,23.,25.])
[1.0, 3.0, 2.0, 6.0, 4.0, 11.0, 8.0, 15.0, 16.0, 19.0, 21.0, 23.0, 25.0]
Then we can minimize while applying the constraints (however, in the following case the constraints are basically irrelevant):
>>> # get an objective
>>> import mystic.models as mm
>>> rosen = mm.dejong.Rosenbrock(12).function
>>>
>>> # get an optimizer
>>> import mystic.solvers as my
>>> result = my.diffev2(rosen, x0=bounds, bounds=bounds, constrints=cf, npop=40, disp=False, full_output=True, gtol=100)
>>>
>>> # get the solution
>>> result[0]
array([0.99997179, 1.00005506, 1.00012367, 0.99998539, 0.99984306,
0.99981495, 0.999951 , 0.99996505, 0.99971107, 0.99925239,
0.99846259, 0.99692293])
>>> # and the final 'cost'
>>> result[1]
2.2385442425350018e-05
>>>
Thanks! But tell me, shouldn't suppyling a vectorx
to the constraints give back a vector of Boolean values? What are the numbers it is returning?
– ap21
Nov 14 '18 at 21:57
A different question: I have an explicit gradient of my cost function as well. I couldn't find any default algorithm inmystic
that makes use of an explicit gradient. Is there some algorithm that can use a gradient?
– ap21
Nov 14 '18 at 22:03
1
@ap21: No, amystic.constraint
is a "mapping", so it has the formx' = c(x)
-- you could think of it as a nonlinear transform. On the other hand, amystic.penalty
returns a penalty value that is added to the cost... so has the formy = k*p(x)
, which is additive to thecost
. With respect to your second question, the most recentmystic
release doesn't have a gradient solver... however, I have built a gradient solver, and standalone functions that calculate the gradient from points the solar evaluates. These will be included in the next release, and should be in GitHub this month.
– Mike McKerns
Nov 15 '18 at 0:58
add a comment |
I'm the mystic
author. I believe what you are looking to do is something like this:
>>> import mystic.symbolic as ms
>>> ieqns = ''
>>> for p in range(10):
... ieqns += 'x0 <= 2*x1n'.format(p+2,p)
...
>>> cf = ms.generate_constraint(ms.generate_solvers(ieqns))
>>>
>>> # test that it applies the constraints
>>> cf([1.,3.,5.,7.,9.,11.,13.,15.,17.,19.,21.,23.,25.])
[1.0, 3.0, 2.0, 6.0, 4.0, 11.0, 8.0, 15.0, 16.0, 19.0, 21.0, 23.0, 25.0]
Then we can minimize while applying the constraints (however, in the following case the constraints are basically irrelevant):
>>> # get an objective
>>> import mystic.models as mm
>>> rosen = mm.dejong.Rosenbrock(12).function
>>>
>>> # get an optimizer
>>> import mystic.solvers as my
>>> result = my.diffev2(rosen, x0=bounds, bounds=bounds, constrints=cf, npop=40, disp=False, full_output=True, gtol=100)
>>>
>>> # get the solution
>>> result[0]
array([0.99997179, 1.00005506, 1.00012367, 0.99998539, 0.99984306,
0.99981495, 0.999951 , 0.99996505, 0.99971107, 0.99925239,
0.99846259, 0.99692293])
>>> # and the final 'cost'
>>> result[1]
2.2385442425350018e-05
>>>
I'm the mystic
author. I believe what you are looking to do is something like this:
>>> import mystic.symbolic as ms
>>> ieqns = ''
>>> for p in range(10):
... ieqns += 'x0 <= 2*x1n'.format(p+2,p)
...
>>> cf = ms.generate_constraint(ms.generate_solvers(ieqns))
>>>
>>> # test that it applies the constraints
>>> cf([1.,3.,5.,7.,9.,11.,13.,15.,17.,19.,21.,23.,25.])
[1.0, 3.0, 2.0, 6.0, 4.0, 11.0, 8.0, 15.0, 16.0, 19.0, 21.0, 23.0, 25.0]
Then we can minimize while applying the constraints (however, in the following case the constraints are basically irrelevant):
>>> # get an objective
>>> import mystic.models as mm
>>> rosen = mm.dejong.Rosenbrock(12).function
>>>
>>> # get an optimizer
>>> import mystic.solvers as my
>>> result = my.diffev2(rosen, x0=bounds, bounds=bounds, constrints=cf, npop=40, disp=False, full_output=True, gtol=100)
>>>
>>> # get the solution
>>> result[0]
array([0.99997179, 1.00005506, 1.00012367, 0.99998539, 0.99984306,
0.99981495, 0.999951 , 0.99996505, 0.99971107, 0.99925239,
0.99846259, 0.99692293])
>>> # and the final 'cost'
>>> result[1]
2.2385442425350018e-05
>>>
answered Nov 14 '18 at 4:24
Mike McKerns
17.6k46789
17.6k46789
Thanks! But tell me, shouldn't suppyling a vectorx
to the constraints give back a vector of Boolean values? What are the numbers it is returning?
– ap21
Nov 14 '18 at 21:57
A different question: I have an explicit gradient of my cost function as well. I couldn't find any default algorithm inmystic
that makes use of an explicit gradient. Is there some algorithm that can use a gradient?
– ap21
Nov 14 '18 at 22:03
1
@ap21: No, amystic.constraint
is a "mapping", so it has the formx' = c(x)
-- you could think of it as a nonlinear transform. On the other hand, amystic.penalty
returns a penalty value that is added to the cost... so has the formy = k*p(x)
, which is additive to thecost
. With respect to your second question, the most recentmystic
release doesn't have a gradient solver... however, I have built a gradient solver, and standalone functions that calculate the gradient from points the solar evaluates. These will be included in the next release, and should be in GitHub this month.
– Mike McKerns
Nov 15 '18 at 0:58
add a comment |
Thanks! But tell me, shouldn't suppyling a vectorx
to the constraints give back a vector of Boolean values? What are the numbers it is returning?
– ap21
Nov 14 '18 at 21:57
A different question: I have an explicit gradient of my cost function as well. I couldn't find any default algorithm inmystic
that makes use of an explicit gradient. Is there some algorithm that can use a gradient?
– ap21
Nov 14 '18 at 22:03
1
@ap21: No, amystic.constraint
is a "mapping", so it has the formx' = c(x)
-- you could think of it as a nonlinear transform. On the other hand, amystic.penalty
returns a penalty value that is added to the cost... so has the formy = k*p(x)
, which is additive to thecost
. With respect to your second question, the most recentmystic
release doesn't have a gradient solver... however, I have built a gradient solver, and standalone functions that calculate the gradient from points the solar evaluates. These will be included in the next release, and should be in GitHub this month.
– Mike McKerns
Nov 15 '18 at 0:58
Thanks! But tell me, shouldn't suppyling a vector
x
to the constraints give back a vector of Boolean values? What are the numbers it is returning?– ap21
Nov 14 '18 at 21:57
Thanks! But tell me, shouldn't suppyling a vector
x
to the constraints give back a vector of Boolean values? What are the numbers it is returning?– ap21
Nov 14 '18 at 21:57
A different question: I have an explicit gradient of my cost function as well. I couldn't find any default algorithm in
mystic
that makes use of an explicit gradient. Is there some algorithm that can use a gradient?– ap21
Nov 14 '18 at 22:03
A different question: I have an explicit gradient of my cost function as well. I couldn't find any default algorithm in
mystic
that makes use of an explicit gradient. Is there some algorithm that can use a gradient?– ap21
Nov 14 '18 at 22:03
1
1
@ap21: No, a
mystic.constraint
is a "mapping", so it has the form x' = c(x)
-- you could think of it as a nonlinear transform. On the other hand, a mystic.penalty
returns a penalty value that is added to the cost... so has the form y = k*p(x)
, which is additive to the cost
. With respect to your second question, the most recent mystic
release doesn't have a gradient solver... however, I have built a gradient solver, and standalone functions that calculate the gradient from points the solar evaluates. These will be included in the next release, and should be in GitHub this month.– Mike McKerns
Nov 15 '18 at 0:58
@ap21: No, a
mystic.constraint
is a "mapping", so it has the form x' = c(x)
-- you could think of it as a nonlinear transform. On the other hand, a mystic.penalty
returns a penalty value that is added to the cost... so has the form y = k*p(x)
, which is additive to the cost
. With respect to your second question, the most recent mystic
release doesn't have a gradient solver... however, I have built a gradient solver, and standalone functions that calculate the gradient from points the solar evaluates. These will be included in the next release, and should be in GitHub this month.– Mike McKerns
Nov 15 '18 at 0:58
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
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
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53273909%2fsupplying-a-vector-of-inequalities-constraints-to-mystic%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
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
Required, but never shown
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
Required, but never shown
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
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
For
N=3
I get'x2/x0 <= 2x3/x1 <= 2x4/x2 <= 2'
. Do you need a linebreak here? Also, this might indeed be suitable for a linear programming solver, as you can rewrite all your constraints toz = c * x
(but we don't know your objective function...).– Cleb
Nov 13 '18 at 7:34
@Cleb, Indeed, I realised that my objective function, though complicated, is quadratic in
x
. Hence, something likeSLSQP
should be ideal for what I am searching (see stackoverflow.com/questions/52001922/… for a guide to defining constraints withscipy.minimize()
). However, for future reference, I would still like to know how to define a vector of constraints formystic
. Is adding an
enough?– ap21
Nov 13 '18 at 17:29
@ap21: The answer is yes, adding the
n
is enough. Also whatsimplify
does is isolate a single variable on the left-hand side... that can take some time, so generally, if it's as easy as your constraints equations are, I just would rewrite them by hand.– Mike McKerns
Nov 14 '18 at 13:27