examples/netgen.c
author Alpar Juttner <alpar@cs.elte.hu>
Sun, 05 Dec 2010 17:35:23 +0100
changeset 2 4c8956a7bdf4
permissions -rw-r--r--
Set up CMAKE build environment
     1 /* netgen.c */
     2 
     3 /* This main program generates 50 original NETGEN instances of the
     4    minimum cost flow problem and writes them in DIMACS format to the
     5    current directory. */
     6 
     7 #include <stddef.h>
     8 #include <stdio.h>
     9 #include <stdlib.h>
    10 #include <glpk.h>
    11 
    12 static int parm[50][15] =
    13 {    {13502460, 101,
    14       5000, 2500, 2500, 25000, 1, 100, 250000, 0, 0, 0, 100, 1, 1000,
    15    },{4281922, 102,
    16       5000, 2500, 2500, 25000, 1, 100, 2500000, 0, 0, 0, 100, 1, 1000,
    17    },{44820113, 103,
    18       5000, 2500, 2500, 25000, 1, 100, 6250000, 0, 0, 0, 100, 1, 1000,
    19    },{13450451, 104,
    20       5000, 2500, 2500, 25000, -100, -1, 250000, 0, 0, 0, 100, 1, 1000,
    21    },{14719436, 105,
    22       5000, 2500, 2500, 25000, 101, 200, 250000, 0, 0, 0, 100, 1, 1000,
    23    },{17365786, 106,
    24       5000, 2500, 2500, 12500, 1, 100, 125000, 0, 0, 0, 100, 1, 1000,
    25    },{19540113, 107,
    26       5000, 2500, 2500, 37500, 1, 100, 375000, 0, 0, 0, 100, 1, 1000,
    27    },{19560313, 108,
    28       5000, 2500, 2500, 50000, 1, 100, 500000, 0, 0, 0, 100, 1, 1000,
    29    },{2403509, 109,
    30       5000, 2500, 2500, 75000, 1, 100, 750000, 0, 0, 0, 100, 1, 1000,
    31    },{92480414, 110,
    32       5000, 2500, 2500, 12500, 1, 100, 250000, 0, 0, 0, 100, 1, 1000,
    33    },{4230140, 111,
    34       5000, 2500, 2500, 37500, 1, 100, 250000, 0, 0, 0, 100, 1, 1000,
    35    },{10032490, 112,
    36       5000, 2500, 2500, 50000, 1, 100, 250000, 0, 0, 0, 100, 1, 1000,
    37    },{17307474, 113,
    38       5000, 2500, 2500, 75000, 1, 100, 250000, 0, 0, 0, 100, 1, 1000,
    39    },{4925114, 114,
    40       5000, 500, 4500, 25000, 1, 100, 250000, 0, 0, 0, 100, 1, 1000,
    41    },{19842704, 115,
    42       5000, 1500, 3500, 25000, 1, 100, 250000, 0, 0, 0, 100, 1, 1000,
    43    },{88392060, 116,
    44       5000, 2500, 2500, 25000, 1, 100, 250000, 0, 0, 0, 0, 1, 1000,
    45    },{12904407, 117,
    46       5000, 2500, 2500, 12500, 1, 100, 125000, 0, 0, 0, 0, 1, 1000,
    47    },{11811811, 118,
    48       5000, 2500, 2500, 37500, 1, 100, 375000, 0, 0, 0, 0, 1, 1000,
    49    },{90023593, 119,
    50       5000, 2500, 2500, 50000, 1, 100, 500000, 0, 0, 0, 0, 1, 1000,
    51    },{93028922, 120,
    52       5000, 2500, 2500, 75000, 1, 100, 750000, 0, 0, 0, 0, 1, 1000,
    53    },{72707401, 121,
    54       5000, 50, 50, 25000, 1, 100, 250000, 50, 50, 0, 100, 1, 1000,
    55    },{93040771, 122,
    56       5000, 250, 250, 25000, 1, 100, 250000, 250, 250, 0, 100, 1, 1000,
    57    },{70220611, 123,
    58       5000, 500, 500, 25000, 1, 100, 250000, 500, 500, 0, 100, 1, 1000,
    59    },{52774811, 124,
    60       5000, 1000, 1000, 25000, 1, 100, 250000, 1000, 1000, 0, 100, 1,
    61       1000,
    62    },{22492311, 125,
    63       5000, 1500, 1500, 25000, 1, 100, 250000, 1500, 1500, 0, 100, 1,
    64       1000,
    65    },{35269337, 126,
    66       5000, 500, 500, 12500, 1, 100, 125000, 500, 500, 0, 100, 1, 1000,
    67    },{30140502, 127,
    68       5000, 500, 500, 37500, 1, 100, 375000, 500, 500, 0, 100, 1, 1000,
    69    },{49205455, 128,
    70       5000, 500, 500, 50000, 1, 100, 500000, 500, 500, 0, 100, 1, 1000,
    71    },{42958341, 129,
    72       5000, 500, 500, 75000, 1, 100, 750000, 500, 500, 0, 100, 1, 1000,
    73    },{25440925, 130,
    74       5000, 500, 500, 12500, 1, 100, 250000, 500, 500, 0, 100, 1, 1000,
    75    },{75294924, 131,
    76       5000, 500, 500, 37500, 1, 100, 250000, 500, 500, 0, 100, 1, 1000,
    77    },{4463965, 132,
    78       5000, 500, 500, 50000, 1, 100, 250000, 500, 500, 0, 100, 1, 1000,
    79    },{13390427, 133,
    80       5000, 500, 500, 75000, 1, 100, 250000, 500, 500, 0, 100, 1, 1000,
    81    },{95250971, 134,
    82       1000, 500, 500, 25000, 1, 100, 250000, 500, 500, 0, 100, 1, 1000,
    83    },{54830522, 135,
    84       2500, 500, 500, 25000, 1, 100, 250000, 500, 500, 0, 100, 1, 1000,
    85    },{520593, 136,
    86       7500, 500, 500, 25000, 1, 100, 250000, 500, 500, 0, 100, 1, 1000,
    87    },{52900925, 137,
    88       10000, 500, 500, 25000, 1, 100, 250000, 500, 500, 0, 100, 1, 1000,
    89    },{22603395, 138,
    90       5000, 500, 500, 25000, 1, 100, 250000, 500, 500, 0, 100, 1, 50,
    91    },{55253099, 139,
    92       5000, 500, 500, 25000, 1, 100, 250000, 500, 500, 0, 100, 1, 250,
    93    },{75357001, 140,
    94       5000, 500, 500, 25000, 1, 100, 250000, 500, 500, 0, 100, 1, 500,
    95    },{10072459, 141,
    96       5000, 500, 500, 25000, 1, 100, 250000, 500, 500, 0, 100, 1, 2500,
    97    },{55728492, 142,
    98       5000, 500, 500, 25000, 1, 100, 250000, 500, 500, 0, 100, 1, 5000,
    99    },{593043, 143,
   100       5000, 500, 500, 25000, 1, 100, 250000, 500, 500, 0, 0, 1, 1000,
   101    },{94236572, 144,
   102       5000, 500, 500, 25000, 1, 10, 250000, 500, 500, 0, 100, 1, 1000,
   103    },{94882955, 145,
   104       5000, 500, 500, 25000, 1, 1000, 250000, 500, 500, 0, 100, 1, 1000,
   105    },{48489922, 146,
   106       5000, 500, 500, 25000, 1, 10000, 250000, 500, 500, 0, 100, 1,
   107       1000,
   108    },{75578374, 147,
   109       5000, 500, 500, 25000, -100, -1, 250000, 500, 500, 0, 100, 1,
   110       1000,
   111    },{44821152, 148,
   112       5000, 500, 500, 25000, -50, 49, 250000, 500, 500, 0, 100, 1, 1000,
   113    },{45224103, 149,
   114       5000, 500, 500, 25000, 101, 200, 250000, 500, 500, 0, 100, 1,
   115       1000,
   116    },{63491741, 150,
   117       5000, 500, 500, 25000, 1001, 1100, 250000, 500, 500, 0, 100, 1,
   118       1000,
   119    }
   120 };
   121 
   122 typedef struct { double rhs; } v_data;
   123 typedef struct { double cap, cost; } a_data;
   124 
   125 int main(void)
   126 {     glp_graph *G;
   127       int k;
   128       char fname[100+1];
   129       G = glp_create_graph(sizeof(v_data), sizeof(a_data));
   130       for (k = 1; k <= 50; k++)
   131       {  sprintf(fname, "netgn%03d.min", parm[k-1][1]);
   132          glp_netgen(G, offsetof(v_data, rhs), offsetof(a_data, cap),
   133             offsetof(a_data, cost), &parm[k-1][-1]);
   134          glp_write_mincost(G, offsetof(v_data, rhs), -1,
   135             offsetof(a_data, cap), offsetof(a_data, cost), fname);
   136       }
   137       glp_delete_graph(G);
   138       return 0;
   139 }
   140 
   141 /* eof */