help-glpk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Help-glpk] R: Help-glpk Digest, Vol 79, Issue 23


From: address@hidden
Subject: [Help-glpk] R: Help-glpk Digest, Vol 79, Issue 23
Date: Fri, 26 Jun 2009 18:55:28 +0200 (CEST)

Hi Hussin.
If you can accept a tollerance, you can set a tolerance with  --mipgap option. In attached there is the output on my laptop with option --mipgap 0.01

Best regards,
Claudio



----Messaggio originale----
Da: address@hidden
Data: 26-giu-2009 18.01
A: <address@hidden>
Ogg: Help-glpk Digest, Vol 79, Issue 23

Send Help-glpk mailing list submissions to
address@hidden

To subscribe or unsubscribe via the World Wide Web, visit
http://lists.gnu.org/mailman/listinfo/help-glpk
or, via email, send a message with subject or body 'help' to
address@hidden

You can reach the person managing the list at
address@hidden

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Help-glpk digest..."


Today's Topics:

   1. MIP code (hussin hassen)


----------------------------------------------------------------------

Message: 1
Date: Thu, 25 Jun 2009 10:24:21 -0700 (PDT)
From: hussin hassen <address@hidden>
Subject: [Help-glpk] MIP code
To: Help-glpk <address@hidden>
Message-ID: <address@hidden>
Content-Type: text/plain; charset="us-ascii"

Hello everybody,

GLPK can solve the attached code in 360 sec. on my Laptop, which is very long time.
Is there any suggestion to expedite the solution process?
Is there anything wrong with this code than does not match with MathProg?
Shall I modify the MIP options to make the process faster? and how?

I want the solution process to be finish within 10-30 sec.

Anyone can help?

Thanks

set D;
set S;


# Parameters

param PR {S};             
param PO {D};                    
param AC {S};
param OI {S};
param RI {S};
param OT {S};


# Variables

var W {D,S} binary;
var IL {S} integer >=1 <=3 ; 
var TF {S} ;
var TA {S} ;


# Objective Function

minimize Z: sum {j in S} ( IL[j]*PO['L']*PR[j] + sum{i in D : i != 'L'} W[i,j]*PO[i]*PR[j]  );


subject to

############# L ###################

Const_L1 {i in D, j in S : j < 1 or j > 24}:  W['L',j] = 0 ;

Const_L2 { j in S : j >= 1 and j <= 24 }:  OI[j] + IL[j] >= RI[j] ;

############# A ########################

        Const_A1 {j in S : j = 1 } : TA[j]   = 20 ;

Const_A2 {i in D, j in S: j < 1 or j > 24}: W['A',j] = 0;

Const_A3 {j in S: j >= 1 and j <= 24 } : TA[j]  <= 23;

Const_A4 {j in S: j >= 1 and j <= 24 } : TA[j]  >= 13;

Const_A5 {i in D, j in S : j!=1 }: (- 1.1) * TA[j] + TA[j-1] + 0.1 * AC[j] - 4 * W['A',j] + 0.1 * OT[j] + 2 = 0 ;

############# F ######################

        Const_F1 {j in S : j= 1} : TF[j] = (-18 ) ;

Const_F2 {i in D, j in S : i = 'F' and (j < 1 or j > 24)}:  W['F',j] = 0;

Const_F3 {i in D, j in S : j > 1 and j <= 24}:    TF[j]  <= (-18);

Const_F4 {i in D, j in S : j > 1 and j <= 24}:     TF[j]  >= (-22);

Const_F5 {i in D, j in S: j!=1 }: - TF[j] + TF[j-1] + 0.1 * AC[j] - 2 * W['F',j] + 1 = 0;

############# S #######################

Const_S1 {i in D, j in S : j < 7 or j > 19}: W['S',j] = 0;

Const_S2 : sum {j in S} W['S',j] = 6 ;

Const_S3 {i in D, j in S: j >= 7 and j <= 19} : sum {k in j-1..j+1} W ['S',k] <= 2 ;


solve;


printf  "Z = %8d",sum {j in S}
( IL[j]*PO['L']*PR[j] + sum{i in D : i != 'L'} W[i,j]*PO[i]*PR[j] ) ;

printf "\n";
printf " W(i,j) \n";

for {i in D}
{  for {j in S} printf " %s",if W[i,j] then "1" else ".";
   printf("\n");
}


# Data 

data;

set D := A  S  F  L ;  
  
param PO := A   2000  S   1500  F   250  L   150  ;                              

set S := 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24;

param PR := 1 4 2 4 3 4 4 4 5 4 6 4 7 7.2 8 7.2 9 7.2 10 7.2 11 8.8 12 8.8 13 8.8 14 8.8 15 8.8 16 8.8 17 8.8 18 7.2 19 7.2 20 7.2 21 7.2 22 4 23 4 24 4 ;

param AC := 1 1.25 2 1.15 3 1.05 4 1.1 5 1.2 6 1.4 7 1.7 8 1.8 9 1.9 10 2 11 2 12 2.1  13 2.2 14 2.3 15 2.4 16 2.7 17 2.8 18 3 19 3 20 3 21 3 22 4 23 2.4 24 1.7;

param OI := 1 0 2 0 3 0 4 0 5 0 6 0.1 7 0.1 8 0.1 9 0.5 10 0.5 11 0.7 12 0.7 13 0.7 14 0.7 15 0.7 16 0.5 17 0.1 18 0 19 0 20 0 21 0 22 0 23 0 24 0;

param RI := 1 0.1 2 0.1 3 0.1 4 0.1 5 0.1 6 1 7 1 8 1 9 2 10 2 11 2 12 2 13 2 14 2 15 2 16 2 17 3 18 3 19 3 20 3 21 2 22 2 23 2 24 1;

param OT := 1 15 2 14 3 14 4 13 5 13 6 13 7 14 8 14 9 15 10 17 11 17 12 20 13 24 14 25 15 27 16 26 17 25 18 24 19 24 20 20 21 18 22 16 23 16 24 15 ;


end;


     
-------------- next part --------------

set D;
set S;


# Parameters

param PR {S};             
param PO {D};                    
param AC {S};
param OI {S};
param RI {S};
param OT {S};


# Variables

var W {D,S} binary;
var IL {S} integer >=1 <=3 ; 
var TF {S} ;
var TA {S} ;


# Objective Function

minimize Z: sum {j in S} ( IL[j]*PO['L']*PR[j] + sum{i in D : i != 'L'} W[i,j]*PO[i]*PR[j]  );


subject to

############# L ###################

Const_L1 {i in D, j in S : j < 1 or j > 24}:  W['L',j] = 0 ;

Const_L2 { j in S : j >= 1 and j <= 24 }:  OI[j] + IL[j] >= RI[j] ;

############# A ########################

        Const_A1 {j in S : j = 1 } : TA[j]   = 20 ;

Const_A2 {i in D, j in S: j < 1 or j > 24}: W['A',j] = 0;

Const_A3 {j in S: j >= 1 and j <= 24 } : TA[j]  <= 23;

Const_A4 {j in S: j >= 1 and j <= 24 } : TA[j]  >= 13;

Const_A5 {i in D, j in S : j!=1 }: (- 1.1) * TA[j] + TA[j-1] + 0.1 * AC[j] - 4 * W['A',j] + 0.1 * OT[j] + 2 = 0 ;

############# F ######################

        Const_F1 {j in S : j= 1} : TF[j] = (-18 ) ;

Const_F2 {i in D, j in S : i = 'F' and (j < 1 or j > 24)}:  W['F',j] = 0;

Const_F3 {i in D, j in S : j > 1 and j <= 24}:    TF[j]  <= (-18);

Const_F4 {i in D, j in S : j > 1 and j <= 24}:     TF[j]  >= (-22);

Const_F5 {i in D, j in S: j!=1 }: - TF[j] + TF[j-1] + 0.1 * AC[j] - 2 * W['F',j] + 1 = 0;

############# S #######################

Const_S1 {i in D, j in S : j < 7 or j > 19}: W['S',j] = 0;

Const_S2 : sum {j in S} W['S',j] = 6 ;

Const_S3 {i in D, j in S: j >= 7 and j <= 19} : sum {k in j-1..j+1} W ['S',k] <= 2 ;


solve;


printf  "Z = %8d",sum {j in S}
( IL[j]*PO['L']*PR[j] + sum{i in D : i != 'L'} W[i,j]*PO[i]*PR[j] ) ;

printf "\n";
printf " W(i,j) \n";

for {i in D}
{  for {j in S} printf " %s",if W[i,j] then "1" else ".";
   printf("\n");
}


# Data 

data;

set D := A  S  F  L ;  
  
param PO := A   2000  S   1500  F   250  L   150  ;                              

set S := 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24;

param PR := 1 4 2 4 3 4 4 4 5 4 6 4 7 7.2 8 7.2 9 7.2 10 7.2 11 8.8 12 8.8 13 8.8 14 8.8 15 8.8 16 8.8 17 8.8 18 7.2 19 7.2 20 7.2 21 7.2 22 4 23 4 24 4 ;

param AC := 1 1.25 2 1.15 3 1.05 4 1.1 5 1.2 6 1.4 7 1.7 8 1.8 9 1.9 10 2 11 2 12 2.1  13 2.2 14 2.3 15 2.4 16 2.7 17 2.8 18 3 19 3 20 3 21 3 22 4 23 2.4 24 1.7;

param OI := 1 0 2 0 3 0 4 0 5 0 6 0.1 7 0.1 8 0.1 9 0.5 10 0.5 11 0.7 12 0.7 13 0.7 14 0.7 15 0.7 16 0.5 17 0.1 18 0 19 0 20 0 21 0 22 0 23 0 24 0;

param RI := 1 0.1 2 0.1 3 0.1 4 0.1 5 0.1 6 1 7 1 8 1 9 2 10 2 11 2 12 2 13 2 14 2 15 2 16 2 17 3 18 3 19 3 20 3 21 2 22 2 23 2 24 1;

param OT := 1 15 2 14 3 14 4 13 5 13 6 13 7 14 8 14 9 15 10 17 11 17 12 20 13 24 14 25 15 27 16 26 17 25 18 24 19 24 20 20 21 18 22 16 23 16 24 15 ;


end;











------------------------------

_______________________________________________
Help-glpk mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/help-glpk


End of Help-glpk Digest, Vol 79, Issue 23
*****************************************


Attachment: TestMat.out
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]