[Date Index]
[Thread Index]
[Author Index]
Re: About linear programming
*To*: mathgroup at smc.vnet.net
*Subject*: [mg126252] Re: About linear programming
*From*: Dana DeLouis <dana01 at me.com>
*Date*: Fri, 27 Apr 2012 06:49:14 -0400 (EDT)
*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com
Hi. A little off topic, but I always get confused with the basic input to the function - LinearProgramming.
Here's a little program to take an input that might be easier to read, and put it into the form required by the function.
There's lots of variations one could make. Here's a simple example...
Here, the constraints are definitely not in the required form for the function:
obj = {30,40,20,10,-15,-20,-10,-8};
const =
{
{.3,.3,.25,.15,0,0,0,0} <=1000,
{.25,.35,.3,.1,0,0,0,0} <=1000,
{.45,.5,.4,.22,0,0,0,0} <=1000,
{.15,.15,.1,.05,0,0,0,0} <=1000,
{1,0,0,0,1,0,0,0} ==800,
{0,1,0,0,0,1,0,0} ==750,
{0,0,1,0,0,0,1,0} ==600,
{0,0,0,1,0,0,0,1} ==500
};
LinearProgMax[obj,Rationalize[const]]
{64625, {800,750,775/2,500,0,0,425/2,0}}
%//N
{64625., {800.,750.,387.5,500.,0.,0.,212.5,0.}}
LinearProgMin[obj_,const_]:=Module[{v,sol},
v=const/.(Less|LessEqual)[x_,y_]->{x,{y,-1}};
v=v/.(Greater|GreaterEqual)[x_,y_]->{x,{y,+1}};
v=v/.Equal[x_,y_]->{x,{y,0}};
v=Transpose[v];
sol = LinearProgramming[obj,First[v],Last[v] ];
{sol.obj,sol}]
LinearProgMax[obj_,const_]:=LinearProgMin[-obj,const]/.{x_,y_}->{-x,y}
After copying a table of cells from a Spread Sheet, a macro could convert it into the form above.
One could even include First[v].sol to get the values of the Right hand side to make sure the constraints were met (or calculate slack).
ie change to: {sol.obj, sol, First[v].sol}
= = = = = = = = = =
HTH :>)
Dana DeLouis
Mac & Math 8
= = = = = = = = = =
On Apr 25, 12:35 am, Marcela Villa Marulanda <mavim... at gmail.com> wrote:
> Hi,
>
> I attempt to solve these linear programming problems in Mathematica,
> but its result is "Maximize::natt: The maximum is not attained at any
> point satisfying the given constraints", why? I've solved this problem
> in other applications and the solution is achieved.
>
> I don't know the reasons about it. I'll thank to whom give me some
> clues!
>
> Problem 1
>
> Maximize[{5 Subscript[x, 1] + 4 Subscript[x, 2] + 3 Subscript[x, 3],
> Subscript[x, 1] + Subscript[x, 3] <= 15 &&
> Subscript[x, 2] + 2 Subscript[x, 3] <= 25}, {Subscript[x, 1],
> Subscript[x, 2], Subscript[x, 3]}];
>
> Problem 2
>
> Maximize[{30 Subscript[x, 1] + 40 Subscript[x, 2] +
> 20 Subscript[x, 3] + 10 Subscript[x, 4] - 15 Subscript[x, 5] -
> 20 Subscript[x, 6] - 10 Subscript[x, 7] - 8 Subscript[x, 8],
> 0.3 Subscript[x, 1] + 0.3 Subscript[x, 2] + 0.25 Subscript[x, 3] +
> 0.15 Subscript[x, 4] <= 1000 &&
> 0.25 Subscript[x, 1] + 0.35 Subscript[x, 2] +
> 0.3 Subscript[x, 3] + 0.1 Subscript[x, 4] <= 1000 &&
> 0.45 Subscript[x, 1] + 0.5 Subscript[x, 2] + 0.4 Subscript[x, 3] +
> 0.22 Subscript[x, 4] <= 1000 &&
> 0.15 Subscript[x, 1] + 0.15 Subscript[x, 2] +
> 0.1 Subscript[x, 3] + 0.05 Subscript[x, 4] <= 1000 &&
> Subscript[x, 1] + Subscript[x, 5] == 800 &&
> Subscript[x, 2] + Subscript[x, 6] == 750 &&
> Subscript[x, 3] + Subscript[x, 7] == 600 &&
> Subscript[x, 4] + Subscript[x, 8] == 500}, {Subscript[x, 1],
> Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5],
> Subscript[x, 6], Subscript[x, 7], Subscript[x, 8]}]
Prev by Date:
**Re: Print out an Expression Letter by Letter on the same line**
Next by Date:
**Re: Instability with Dynamic content**
Previous by thread:
**Re: About linear programming**
Next by thread:
**FindFit and squared residuals**
| |