MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Problem with Maximize and conditions.

  • To: mathgroup at smc.vnet.net
  • Subject: [mg51091] Re: Problem with Maximize and conditions.
  • From: "Janos D. Pinter" <jdpinter at hfx.eastlink.ca>
  • Date: Mon, 4 Oct 2004 06:18:05 -0400 (EDT)
  • References: <cjlna7$q7f$1@smc.vnet.net> <200410030947.FAA10680@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Colleagues,

may I add a few general points to the discussion:

- NMinimize (and the other similar fcts) is (are) not set up directly to 
solve models that include integer variables. However, it can be used to 
produce valid (lower) bounds, by omitting integrality restrictions and then 
solving the model. If then one can find a feasible solution, then the 
upper/lower bounds can be compared and used e.g. in branch-and-bound 
solution strategies.

- Integer variable restrictions can be easily added to the model 
formulation as non-convex constraints, but that makes the numerical 
solution difficult.

- Except in small models, simple enumeration will not work (e.g., 100 
binary vars have 2^100 possible settings).

- Continuous global optimization (GO) - or even integer linear programming 
- is already pretty hard; adding integer restrictions to GO models may 
increase the difficulty substantially. There is no 'universal' solver to 
tackle such models in full generality, for large model-instances (in spite 
of some grand claims by 'optimists').

Regards,
Janos Pinter

PS In the MathOptimizer Pro manual, we solve small instances of mixed 
integer models by using the continuous GO solver LGO, but the comments 
above still apply.




>"Nacho" <ncc1701zzz at hotmail.com> wrote in message
>news:cjlna7$q7f$1 at smc.vnet.net...
> > Hello.
> >
> > I was trying to solve a problem with Mathematica 5 and I am getting
> > strange results.
> >
> > The problem is:
> >
> > Minimize x+y+z, with the condition that 1/20x+y+5z==100 and x,y,z are
> > Integers between 1 and 98 (inclusive).
> >
> > So I use:
> >
> > Minimize[{x+y+z, 1/20 x+y+5z\[Equal]100,  x \[Element] Integers,
> >    y \[Element] Integers, z\[Element]Integers, 0<x<99,0<y<99,0<z<99},
> > {x,y,
> >    z}]
> >
> > I have copied the text using "Plain text" option, I hope it's fine.
> >
> > This returns the same expression, I suppose that Mathematica cannot
> > resolve it. So I use NMinimize:
> >
> > NMinimize[{x+y+z, 1/20 x+y+5z\[Equal]100,  x \[Element] Integers,
> >    y \[Element] Integers, z\[Element]Integers, 0<x<99,0<y<99,0<z<99},
> > {x,y,
> >    z}]
> >
> > Now I get a result, but rather weird...
> >
> > \!\({25.`, {x -> 1, y -> 5, z -> 1899\/100}}\)
> >
> > The minimum of x+y+z is 25 but z is 1899/100
> > 1899/100 is not a Integers, and the nearest Integer, 19, doesn't
> > satisfy 1/20x+y+5z==100, and also x+y+z is not 25 but 24.99
> >
> > I don't know why Mathematica has returned a Real when I specified an
> > Integers. I suppose that it is related to the use of NMinimize. I
> > suppose that it considers that 18.99 is so near of 19 that it can be
> > considered an Integer.
> >
> > If you remove the condition of z being an Integer, the result changes,
> > so it is affecting. Also, if you ask for "1899/100 e Integers" it
> > returns False.
> >
> > So, does anybody know how to solve this? Ideally, I would like to know
> > why Minimize doesn't work (so I have to use NMinimize), but in any
> > case, how to solve the problem.
> >
> > Thanks!
> >


  • Prev by Date: Re: Problem with Maximize and conditions.
  • Next by Date: Re: Problem with Maximize and conditions.
  • Previous by thread: Re: Problem with Maximize and conditions.
  • Next by thread: Re: Problem with Maximize and conditions.