NMaximize is not converging to a solutionDeclaration of variables in large Linear Programming model with...
Why doesn't H₄O²⁺ exist?
Rock identification in KY
What defenses are there against being summoned by the Gate spell?
How much RAM could one put in a typical 80386 setup?
Replacing matching entries in one column of a file by another column from a different file
Why doesn't Newton's third law mean a person bounces back to where they started when they hit the ground?
Is it possible to do 50 km distance without any previous training?
How can bays and straits be determined in a procedurally generated map?
Can a vampire attack twice with their claws using Multiattack?
What's the output of a record needle playing an out-of-speed record
Are astronomers waiting to see something in an image from a gravitational lens that they've already seen in an adjacent image?
Why is 150k or 200k jobs considered good when there's 300k+ births a month?
Paid for article while in US on F-1 visa?
Java Casting: Java 11 throws LambdaConversionException while 1.8 does not
Is it unprofessional to ask if a job posting on GlassDoor is real?
Can an x86 CPU running in real mode be considered to be basically an 8086 CPU?
LWC SFDX source push error TypeError: LWC1009: decl.moveTo is not a function
Does detail obscure or enhance action?
Accidentally leaked the solution to an assignment, what to do now? (I'm the prof)
Doing something right before you need it - expression for this?
What are these boxed doors outside store fronts in New York?
What does it mean to describe someone as a butt steak?
High voltage LED indicator 40-1000 VDC without additional power supply
Watching something be written to a file live with tail
NMaximize is not converging to a solution
Declaration of variables in large Linear Programming model with NMaximizeHow trustworthy is NMaximize?Numeric range: present or notMaximalBy[#, “votes”] & not equal to MaximalBy[“votes”]?Maximimize not working properly?Does fitting data get stuck by non-homogeneous interval of data?How to find maximum (not with numbers,but with parameters) of 2-variables function under constraints?Hot to single out numeric values from NMaximizeNSum: Summand (or its derivative) is not numerical at pointProblem with constraints of NMaximize
$begingroup$
I am trying to use NMaximize
to find the maximum value of a variable that satisfies the given constraints. Since the constraints aren't straightforward, I am using the function.
I can see the constraints are such that the value is bounded but I get the below warning messages:
NMaximize::cvmit: Failed to converge to the requested accuracy or
precision within 100000 iterations.
NMaximize::cvdiv: Failed to
converge to a solution. The function may be unbounded.
The constraint and the way I am using the function is as below:
constraint = (x | y) [Element]
Integers && ((x == 0 && 1. <= y <= 12720.) || (1. <= x <= 10712. &&
0 <= y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-43 Sqrt[
4.98614*10^92 + 4.65469*10^88 x -
3.63201*10^84 x^2]) || (10713. <= x <= 19762. &&
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) -
2.8484*10^-43 Sqrt[
4.98614*10^92 + 4.65469*10^88 x - 3.63201*10^84 x^2] < y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-43 Sqrt[
4.98614*10^92 + 4.65469*10^88 x - 3.63201*10^84 x^2]))
maxX =
NMaximize[{x, constraint}, {x, y}, MaxIterations -> 100000]
I have increased the MaxIterations
from 100 to 100000 but it doesn't seem to converge. I am not sure if increasing the MaxIterations
is the solution. Can you please guide me with this?
functions maximum
$endgroup$
|
show 1 more comment
$begingroup$
I am trying to use NMaximize
to find the maximum value of a variable that satisfies the given constraints. Since the constraints aren't straightforward, I am using the function.
I can see the constraints are such that the value is bounded but I get the below warning messages:
NMaximize::cvmit: Failed to converge to the requested accuracy or
precision within 100000 iterations.
NMaximize::cvdiv: Failed to
converge to a solution. The function may be unbounded.
The constraint and the way I am using the function is as below:
constraint = (x | y) [Element]
Integers && ((x == 0 && 1. <= y <= 12720.) || (1. <= x <= 10712. &&
0 <= y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-43 Sqrt[
4.98614*10^92 + 4.65469*10^88 x -
3.63201*10^84 x^2]) || (10713. <= x <= 19762. &&
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) -
2.8484*10^-43 Sqrt[
4.98614*10^92 + 4.65469*10^88 x - 3.63201*10^84 x^2] < y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-43 Sqrt[
4.98614*10^92 + 4.65469*10^88 x - 3.63201*10^84 x^2]))
maxX =
NMaximize[{x, constraint}, {x, y}, MaxIterations -> 100000]
I have increased the MaxIterations
from 100 to 100000 but it doesn't seem to converge. I am not sure if increasing the MaxIterations
is the solution. Can you please guide me with this?
functions maximum
$endgroup$
$begingroup$
Could try maximizing over individual regions of the piecewise set-up. But the machine precision values will make validation of inequalities kind of iffy.
$endgroup$
– Daniel Lichtblau
9 hours ago
1
$begingroup$
I'm not seeing what $y$ has to do with this. Wouldn't the maximum value of $x$ be 19762?constraint /. x -> 19762
results iny [Element] Integers && 7229.16 < y < 7344.29
andconstraint /. x -> 19763
results inFalse
.
$endgroup$
– JimB
9 hours ago
$begingroup$
@JimB, I think forx
,y
isn't needed. Thanks for pointing this out. But if I am trying to maximizey
, I need to maximize over both the variables sincey
is an expression ofx
, right?
$endgroup$
– gaganso
9 hours ago
$begingroup$
Yes, if that's what you want. The general solution appears to be $x = 19762$ and $7230leq y leq 7344$. So to maximize $y$ you'd choose $7344$.
$endgroup$
– JimB
8 hours ago
$begingroup$
@JimB, thank you. But I think the value of $y$ can be greater than 7344 for different values of $x$. For example, at $x = 7504$, the maximum value of y is 13937.
$endgroup$
– gaganso
8 hours ago
|
show 1 more comment
$begingroup$
I am trying to use NMaximize
to find the maximum value of a variable that satisfies the given constraints. Since the constraints aren't straightforward, I am using the function.
I can see the constraints are such that the value is bounded but I get the below warning messages:
NMaximize::cvmit: Failed to converge to the requested accuracy or
precision within 100000 iterations.
NMaximize::cvdiv: Failed to
converge to a solution. The function may be unbounded.
The constraint and the way I am using the function is as below:
constraint = (x | y) [Element]
Integers && ((x == 0 && 1. <= y <= 12720.) || (1. <= x <= 10712. &&
0 <= y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-43 Sqrt[
4.98614*10^92 + 4.65469*10^88 x -
3.63201*10^84 x^2]) || (10713. <= x <= 19762. &&
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) -
2.8484*10^-43 Sqrt[
4.98614*10^92 + 4.65469*10^88 x - 3.63201*10^84 x^2] < y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-43 Sqrt[
4.98614*10^92 + 4.65469*10^88 x - 3.63201*10^84 x^2]))
maxX =
NMaximize[{x, constraint}, {x, y}, MaxIterations -> 100000]
I have increased the MaxIterations
from 100 to 100000 but it doesn't seem to converge. I am not sure if increasing the MaxIterations
is the solution. Can you please guide me with this?
functions maximum
$endgroup$
I am trying to use NMaximize
to find the maximum value of a variable that satisfies the given constraints. Since the constraints aren't straightforward, I am using the function.
I can see the constraints are such that the value is bounded but I get the below warning messages:
NMaximize::cvmit: Failed to converge to the requested accuracy or
precision within 100000 iterations.
NMaximize::cvdiv: Failed to
converge to a solution. The function may be unbounded.
The constraint and the way I am using the function is as below:
constraint = (x | y) [Element]
Integers && ((x == 0 && 1. <= y <= 12720.) || (1. <= x <= 10712. &&
0 <= y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-43 Sqrt[
4.98614*10^92 + 4.65469*10^88 x -
3.63201*10^84 x^2]) || (10713. <= x <= 19762. &&
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) -
2.8484*10^-43 Sqrt[
4.98614*10^92 + 4.65469*10^88 x - 3.63201*10^84 x^2] < y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-43 Sqrt[
4.98614*10^92 + 4.65469*10^88 x - 3.63201*10^84 x^2]))
maxX =
NMaximize[{x, constraint}, {x, y}, MaxIterations -> 100000]
I have increased the MaxIterations
from 100 to 100000 but it doesn't seem to converge. I am not sure if increasing the MaxIterations
is the solution. Can you please guide me with this?
functions maximum
functions maximum
asked 9 hours ago
gagansogaganso
1477
1477
$begingroup$
Could try maximizing over individual regions of the piecewise set-up. But the machine precision values will make validation of inequalities kind of iffy.
$endgroup$
– Daniel Lichtblau
9 hours ago
1
$begingroup$
I'm not seeing what $y$ has to do with this. Wouldn't the maximum value of $x$ be 19762?constraint /. x -> 19762
results iny [Element] Integers && 7229.16 < y < 7344.29
andconstraint /. x -> 19763
results inFalse
.
$endgroup$
– JimB
9 hours ago
$begingroup$
@JimB, I think forx
,y
isn't needed. Thanks for pointing this out. But if I am trying to maximizey
, I need to maximize over both the variables sincey
is an expression ofx
, right?
$endgroup$
– gaganso
9 hours ago
$begingroup$
Yes, if that's what you want. The general solution appears to be $x = 19762$ and $7230leq y leq 7344$. So to maximize $y$ you'd choose $7344$.
$endgroup$
– JimB
8 hours ago
$begingroup$
@JimB, thank you. But I think the value of $y$ can be greater than 7344 for different values of $x$. For example, at $x = 7504$, the maximum value of y is 13937.
$endgroup$
– gaganso
8 hours ago
|
show 1 more comment
$begingroup$
Could try maximizing over individual regions of the piecewise set-up. But the machine precision values will make validation of inequalities kind of iffy.
$endgroup$
– Daniel Lichtblau
9 hours ago
1
$begingroup$
I'm not seeing what $y$ has to do with this. Wouldn't the maximum value of $x$ be 19762?constraint /. x -> 19762
results iny [Element] Integers && 7229.16 < y < 7344.29
andconstraint /. x -> 19763
results inFalse
.
$endgroup$
– JimB
9 hours ago
$begingroup$
@JimB, I think forx
,y
isn't needed. Thanks for pointing this out. But if I am trying to maximizey
, I need to maximize over both the variables sincey
is an expression ofx
, right?
$endgroup$
– gaganso
9 hours ago
$begingroup$
Yes, if that's what you want. The general solution appears to be $x = 19762$ and $7230leq y leq 7344$. So to maximize $y$ you'd choose $7344$.
$endgroup$
– JimB
8 hours ago
$begingroup$
@JimB, thank you. But I think the value of $y$ can be greater than 7344 for different values of $x$. For example, at $x = 7504$, the maximum value of y is 13937.
$endgroup$
– gaganso
8 hours ago
$begingroup$
Could try maximizing over individual regions of the piecewise set-up. But the machine precision values will make validation of inequalities kind of iffy.
$endgroup$
– Daniel Lichtblau
9 hours ago
$begingroup$
Could try maximizing over individual regions of the piecewise set-up. But the machine precision values will make validation of inequalities kind of iffy.
$endgroup$
– Daniel Lichtblau
9 hours ago
1
1
$begingroup$
I'm not seeing what $y$ has to do with this. Wouldn't the maximum value of $x$ be 19762?
constraint /. x -> 19762
results in y [Element] Integers && 7229.16 < y < 7344.29
and constraint /. x -> 19763
results in False
.$endgroup$
– JimB
9 hours ago
$begingroup$
I'm not seeing what $y$ has to do with this. Wouldn't the maximum value of $x$ be 19762?
constraint /. x -> 19762
results in y [Element] Integers && 7229.16 < y < 7344.29
and constraint /. x -> 19763
results in False
.$endgroup$
– JimB
9 hours ago
$begingroup$
@JimB, I think for
x
, y
isn't needed. Thanks for pointing this out. But if I am trying to maximize y
, I need to maximize over both the variables since y
is an expression of x
, right?$endgroup$
– gaganso
9 hours ago
$begingroup$
@JimB, I think for
x
, y
isn't needed. Thanks for pointing this out. But if I am trying to maximize y
, I need to maximize over both the variables since y
is an expression of x
, right?$endgroup$
– gaganso
9 hours ago
$begingroup$
Yes, if that's what you want. The general solution appears to be $x = 19762$ and $7230leq y leq 7344$. So to maximize $y$ you'd choose $7344$.
$endgroup$
– JimB
8 hours ago
$begingroup$
Yes, if that's what you want. The general solution appears to be $x = 19762$ and $7230leq y leq 7344$. So to maximize $y$ you'd choose $7344$.
$endgroup$
– JimB
8 hours ago
$begingroup$
@JimB, thank you. But I think the value of $y$ can be greater than 7344 for different values of $x$. For example, at $x = 7504$, the maximum value of y is 13937.
$endgroup$
– gaganso
8 hours ago
$begingroup$
@JimB, thank you. But I think the value of $y$ can be greater than 7344 for different values of $x$. For example, at $x = 7504$, the maximum value of y is 13937.
$endgroup$
– gaganso
8 hours ago
|
show 1 more comment
2 Answers
2
active
oldest
votes
$begingroup$
Rationalize
the constraint:
constraint2 = ((x == 0 && 1. <= y <= 12720.) || (1. <= x <= 10712. &&
0 <= y < 2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2]) || (10713. <= x <=
19762. &&
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) -
2.8484*10^-1 Sqrt[4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2] < y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2])) //
Rationalize[#, 0] & // Simplify;
With the Rationalized
constraint you can use Maximize
:
maxX = Maximize[{x, constraint2}, {x, y}]
(* {19762, {x -> 19762, y -> 7287}} *)
constraint2 /. maxX[[2]]
(* True *)
EDIT: To find maximum y
(maxY = Maximize[{y, constraint2}, {x, y}]) // N
To plot the region defined by the constraint:
reg = ImplicitRegion[constraint2, {x, y}];
Region[reg,
Frame -> True,
FrameLabel -> (Style[#, 12, Bold] & /@ {x, y}),
Epilog -> {Red,
AbsolutePointSize[3],
Point[{x, y} /. maxX[[2]]],
Point[{x, y} /. maxY[[2]]]}]
$endgroup$
add a comment |
$begingroup$
You have numbers spread a wide range of magnitudes for no good reason. This range is probably too wide for machine precision arithmetic. Also telling NMinimize
explicitly that this an integer optimization problem seems to help. Try this:
constraint2 = ((x == 0 && 1. <= y <= 12720.) || (1. <= x <= 10712. &&
0 <= y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2]) || (10713. <=
x <= 19762. &&
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) -
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2] < y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2])) // Expand
maxX = NMaximize[{x, constraint2}, {x, y}, Integers,
MaxIterations -> 10000]
{19762., {x -> 19762, y -> 7311}}
And with your definition of constraint
:
constraint /. maxX[[2]]
True
$endgroup$
$begingroup$
Butconstraint /. x -> 19762 /. y -> 8647
results inFalse
?
$endgroup$
– JimB
9 hours ago
$begingroup$
@JimB D'oh. Yeah, I did the simplification wrong. -.- Thanks for pointing that out.
$endgroup$
– Henrik Schumacher
9 hours ago
$begingroup$
@HenrikSchumacher, thank you for this. This works forx
but when I try to find the maximumy
similarly, I still get the same message -NMaximize[{y, res}, {x, y}, Integers, MaxIterations -> 100000]
. Output: NMaximize::cvdiv: Failed to converge to a solution. The function may be unbounded.
$endgroup$
– gaganso
9 hours ago
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "387"
};
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: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
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%2fmathematica.stackexchange.com%2fquestions%2f194684%2fnmaximize-is-not-converging-to-a-solution%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Rationalize
the constraint:
constraint2 = ((x == 0 && 1. <= y <= 12720.) || (1. <= x <= 10712. &&
0 <= y < 2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2]) || (10713. <= x <=
19762. &&
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) -
2.8484*10^-1 Sqrt[4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2] < y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2])) //
Rationalize[#, 0] & // Simplify;
With the Rationalized
constraint you can use Maximize
:
maxX = Maximize[{x, constraint2}, {x, y}]
(* {19762, {x -> 19762, y -> 7287}} *)
constraint2 /. maxX[[2]]
(* True *)
EDIT: To find maximum y
(maxY = Maximize[{y, constraint2}, {x, y}]) // N
To plot the region defined by the constraint:
reg = ImplicitRegion[constraint2, {x, y}];
Region[reg,
Frame -> True,
FrameLabel -> (Style[#, 12, Bold] & /@ {x, y}),
Epilog -> {Red,
AbsolutePointSize[3],
Point[{x, y} /. maxX[[2]]],
Point[{x, y} /. maxY[[2]]]}]
$endgroup$
add a comment |
$begingroup$
Rationalize
the constraint:
constraint2 = ((x == 0 && 1. <= y <= 12720.) || (1. <= x <= 10712. &&
0 <= y < 2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2]) || (10713. <= x <=
19762. &&
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) -
2.8484*10^-1 Sqrt[4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2] < y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2])) //
Rationalize[#, 0] & // Simplify;
With the Rationalized
constraint you can use Maximize
:
maxX = Maximize[{x, constraint2}, {x, y}]
(* {19762, {x -> 19762, y -> 7287}} *)
constraint2 /. maxX[[2]]
(* True *)
EDIT: To find maximum y
(maxY = Maximize[{y, constraint2}, {x, y}]) // N
To plot the region defined by the constraint:
reg = ImplicitRegion[constraint2, {x, y}];
Region[reg,
Frame -> True,
FrameLabel -> (Style[#, 12, Bold] & /@ {x, y}),
Epilog -> {Red,
AbsolutePointSize[3],
Point[{x, y} /. maxX[[2]]],
Point[{x, y} /. maxY[[2]]]}]
$endgroup$
add a comment |
$begingroup$
Rationalize
the constraint:
constraint2 = ((x == 0 && 1. <= y <= 12720.) || (1. <= x <= 10712. &&
0 <= y < 2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2]) || (10713. <= x <=
19762. &&
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) -
2.8484*10^-1 Sqrt[4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2] < y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2])) //
Rationalize[#, 0] & // Simplify;
With the Rationalized
constraint you can use Maximize
:
maxX = Maximize[{x, constraint2}, {x, y}]
(* {19762, {x -> 19762, y -> 7287}} *)
constraint2 /. maxX[[2]]
(* True *)
EDIT: To find maximum y
(maxY = Maximize[{y, constraint2}, {x, y}]) // N
To plot the region defined by the constraint:
reg = ImplicitRegion[constraint2, {x, y}];
Region[reg,
Frame -> True,
FrameLabel -> (Style[#, 12, Bold] & /@ {x, y}),
Epilog -> {Red,
AbsolutePointSize[3],
Point[{x, y} /. maxX[[2]]],
Point[{x, y} /. maxY[[2]]]}]
$endgroup$
Rationalize
the constraint:
constraint2 = ((x == 0 && 1. <= y <= 12720.) || (1. <= x <= 10712. &&
0 <= y < 2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2]) || (10713. <= x <=
19762. &&
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) -
2.8484*10^-1 Sqrt[4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2] < y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2])) //
Rationalize[#, 0] & // Simplify;
With the Rationalized
constraint you can use Maximize
:
maxX = Maximize[{x, constraint2}, {x, y}]
(* {19762, {x -> 19762, y -> 7287}} *)
constraint2 /. maxX[[2]]
(* True *)
EDIT: To find maximum y
(maxY = Maximize[{y, constraint2}, {x, y}]) // N
To plot the region defined by the constraint:
reg = ImplicitRegion[constraint2, {x, y}];
Region[reg,
Frame -> True,
FrameLabel -> (Style[#, 12, Bold] & /@ {x, y}),
Epilog -> {Red,
AbsolutePointSize[3],
Point[{x, y} /. maxX[[2]]],
Point[{x, y} /. maxY[[2]]]}]
edited 8 hours ago
answered 8 hours ago
Bob HanlonBob Hanlon
61.4k33598
61.4k33598
add a comment |
add a comment |
$begingroup$
You have numbers spread a wide range of magnitudes for no good reason. This range is probably too wide for machine precision arithmetic. Also telling NMinimize
explicitly that this an integer optimization problem seems to help. Try this:
constraint2 = ((x == 0 && 1. <= y <= 12720.) || (1. <= x <= 10712. &&
0 <= y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2]) || (10713. <=
x <= 19762. &&
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) -
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2] < y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2])) // Expand
maxX = NMaximize[{x, constraint2}, {x, y}, Integers,
MaxIterations -> 10000]
{19762., {x -> 19762, y -> 7311}}
And with your definition of constraint
:
constraint /. maxX[[2]]
True
$endgroup$
$begingroup$
Butconstraint /. x -> 19762 /. y -> 8647
results inFalse
?
$endgroup$
– JimB
9 hours ago
$begingroup$
@JimB D'oh. Yeah, I did the simplification wrong. -.- Thanks for pointing that out.
$endgroup$
– Henrik Schumacher
9 hours ago
$begingroup$
@HenrikSchumacher, thank you for this. This works forx
but when I try to find the maximumy
similarly, I still get the same message -NMaximize[{y, res}, {x, y}, Integers, MaxIterations -> 100000]
. Output: NMaximize::cvdiv: Failed to converge to a solution. The function may be unbounded.
$endgroup$
– gaganso
9 hours ago
add a comment |
$begingroup$
You have numbers spread a wide range of magnitudes for no good reason. This range is probably too wide for machine precision arithmetic. Also telling NMinimize
explicitly that this an integer optimization problem seems to help. Try this:
constraint2 = ((x == 0 && 1. <= y <= 12720.) || (1. <= x <= 10712. &&
0 <= y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2]) || (10713. <=
x <= 19762. &&
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) -
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2] < y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2])) // Expand
maxX = NMaximize[{x, constraint2}, {x, y}, Integers,
MaxIterations -> 10000]
{19762., {x -> 19762, y -> 7311}}
And with your definition of constraint
:
constraint /. maxX[[2]]
True
$endgroup$
$begingroup$
Butconstraint /. x -> 19762 /. y -> 8647
results inFalse
?
$endgroup$
– JimB
9 hours ago
$begingroup$
@JimB D'oh. Yeah, I did the simplification wrong. -.- Thanks for pointing that out.
$endgroup$
– Henrik Schumacher
9 hours ago
$begingroup$
@HenrikSchumacher, thank you for this. This works forx
but when I try to find the maximumy
similarly, I still get the same message -NMaximize[{y, res}, {x, y}, Integers, MaxIterations -> 100000]
. Output: NMaximize::cvdiv: Failed to converge to a solution. The function may be unbounded.
$endgroup$
– gaganso
9 hours ago
add a comment |
$begingroup$
You have numbers spread a wide range of magnitudes for no good reason. This range is probably too wide for machine precision arithmetic. Also telling NMinimize
explicitly that this an integer optimization problem seems to help. Try this:
constraint2 = ((x == 0 && 1. <= y <= 12720.) || (1. <= x <= 10712. &&
0 <= y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2]) || (10713. <=
x <= 19762. &&
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) -
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2] < y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2])) // Expand
maxX = NMaximize[{x, constraint2}, {x, y}, Integers,
MaxIterations -> 10000]
{19762., {x -> 19762, y -> 7311}}
And with your definition of constraint
:
constraint /. maxX[[2]]
True
$endgroup$
You have numbers spread a wide range of magnitudes for no good reason. This range is probably too wide for machine precision arithmetic. Also telling NMinimize
explicitly that this an integer optimization problem seems to help. Try this:
constraint2 = ((x == 0 && 1. <= y <= 12720.) || (1. <= x <= 10712. &&
0 <= y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2]) || (10713. <=
x <= 19762. &&
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) -
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2] < y <
2.08565*10^-36 (3.04959*10^39 + 2.24751*10^34 x) +
2.8484*10^-1 Sqrt[
4.98614*10^8 + 4.65469*10^4 x - 3.63201 x^2])) // Expand
maxX = NMaximize[{x, constraint2}, {x, y}, Integers,
MaxIterations -> 10000]
{19762., {x -> 19762, y -> 7311}}
And with your definition of constraint
:
constraint /. maxX[[2]]
True
edited 9 hours ago
answered 9 hours ago
Henrik SchumacherHenrik Schumacher
59.3k582165
59.3k582165
$begingroup$
Butconstraint /. x -> 19762 /. y -> 8647
results inFalse
?
$endgroup$
– JimB
9 hours ago
$begingroup$
@JimB D'oh. Yeah, I did the simplification wrong. -.- Thanks for pointing that out.
$endgroup$
– Henrik Schumacher
9 hours ago
$begingroup$
@HenrikSchumacher, thank you for this. This works forx
but when I try to find the maximumy
similarly, I still get the same message -NMaximize[{y, res}, {x, y}, Integers, MaxIterations -> 100000]
. Output: NMaximize::cvdiv: Failed to converge to a solution. The function may be unbounded.
$endgroup$
– gaganso
9 hours ago
add a comment |
$begingroup$
Butconstraint /. x -> 19762 /. y -> 8647
results inFalse
?
$endgroup$
– JimB
9 hours ago
$begingroup$
@JimB D'oh. Yeah, I did the simplification wrong. -.- Thanks for pointing that out.
$endgroup$
– Henrik Schumacher
9 hours ago
$begingroup$
@HenrikSchumacher, thank you for this. This works forx
but when I try to find the maximumy
similarly, I still get the same message -NMaximize[{y, res}, {x, y}, Integers, MaxIterations -> 100000]
. Output: NMaximize::cvdiv: Failed to converge to a solution. The function may be unbounded.
$endgroup$
– gaganso
9 hours ago
$begingroup$
But
constraint /. x -> 19762 /. y -> 8647
results in False
?$endgroup$
– JimB
9 hours ago
$begingroup$
But
constraint /. x -> 19762 /. y -> 8647
results in False
?$endgroup$
– JimB
9 hours ago
$begingroup$
@JimB D'oh. Yeah, I did the simplification wrong. -.- Thanks for pointing that out.
$endgroup$
– Henrik Schumacher
9 hours ago
$begingroup$
@JimB D'oh. Yeah, I did the simplification wrong. -.- Thanks for pointing that out.
$endgroup$
– Henrik Schumacher
9 hours ago
$begingroup$
@HenrikSchumacher, thank you for this. This works for
x
but when I try to find the maximum y
similarly, I still get the same message - NMaximize[{y, res}, {x, y}, Integers, MaxIterations -> 100000]
. Output: NMaximize::cvdiv: Failed to converge to a solution. The function may be unbounded.$endgroup$
– gaganso
9 hours ago
$begingroup$
@HenrikSchumacher, thank you for this. This works for
x
but when I try to find the maximum y
similarly, I still get the same message - NMaximize[{y, res}, {x, y}, Integers, MaxIterations -> 100000]
. Output: NMaximize::cvdiv: Failed to converge to a solution. The function may be unbounded.$endgroup$
– gaganso
9 hours ago
add a comment |
Thanks for contributing an answer to Mathematica Stack Exchange!
- 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.
Use MathJax to format equations. MathJax reference.
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%2fmathematica.stackexchange.com%2fquestions%2f194684%2fnmaximize-is-not-converging-to-a-solution%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
$begingroup$
Could try maximizing over individual regions of the piecewise set-up. But the machine precision values will make validation of inequalities kind of iffy.
$endgroup$
– Daniel Lichtblau
9 hours ago
1
$begingroup$
I'm not seeing what $y$ has to do with this. Wouldn't the maximum value of $x$ be 19762?
constraint /. x -> 19762
results iny [Element] Integers && 7229.16 < y < 7344.29
andconstraint /. x -> 19763
results inFalse
.$endgroup$
– JimB
9 hours ago
$begingroup$
@JimB, I think for
x
,y
isn't needed. Thanks for pointing this out. But if I am trying to maximizey
, I need to maximize over both the variables sincey
is an expression ofx
, right?$endgroup$
– gaganso
9 hours ago
$begingroup$
Yes, if that's what you want. The general solution appears to be $x = 19762$ and $7230leq y leq 7344$. So to maximize $y$ you'd choose $7344$.
$endgroup$
– JimB
8 hours ago
$begingroup$
@JimB, thank you. But I think the value of $y$ can be greater than 7344 for different values of $x$. For example, at $x = 7504$, the maximum value of y is 13937.
$endgroup$
– gaganso
8 hours ago