You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							36 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							36 lines
						
					
					
						
							1.0 KiB
						
					
					
				| /* TODD, a class of hard instances of zero-one knapsack problems */ | |
| 
 | |
| /* Written in GNU MathProg by Andrew Makhorin <mao@gnu.org> */ | |
| 
 | |
| /* Chvatal describes a class of instances of zero-one knapsack problems | |
|    due to Todd. He shows that a wide class of algorithms - including all | |
|    based on branch and bound or dynamic programming - find it difficult | |
|    to solve problems in the Todd class. More exactly, the time required | |
|    by these algorithms to solve instances of problems that belong to the | |
|    Todd class grows as an exponential function of the problem size. | |
|  | |
|    Reference: | |
|    Chvatal V. (1980), Hard knapsack problems, Op. Res. 28, 1402-1411. */ | |
| 
 | |
| param n > 0 integer; | |
| 
 | |
| param log2_n := log(n) / log(2); | |
| 
 | |
| param k := floor(log2_n); | |
| 
 | |
| param a{j in 1..n} := 2 ** (k + n + 1) + 2 ** (k + n + 1 - j) + 1; | |
| 
 | |
| param b := 0.5 * floor(sum{j in 1..n} a[j]); | |
| 
 | |
| var x{1..n} binary; | |
| 
 | |
| maximize obj: sum{j in 1..n} a[j] * x[j]; | |
| 
 | |
| s.t. cap: sum{j in 1..n} a[j] * x[j] <= b; | |
| 
 | |
| data; | |
| 
 | |
| param n := 15; | |
| /* change this parameter to choose a particular instance */ | |
| 
 | |
| end;
 |