[Top][All Lists]

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

Re: [Help-glpk] glp_analyze_bound

From: Francesco Arneodo
Subject: Re: [Help-glpk] glp_analyze_bound
Date: Fri, 2 Jul 2010 18:29:02 +0200

Thank you, now it works!


On 1 Jul 2010, at 23:34, glpk xypron wrote:

Hello Francesco,

a bus error is created when a program tries to access a memory
address that is not assigned to the program and this error
is detected by the hardware. If the error is detected by software
it is called a segmentation fault.

The function
void glp_analyze_bound(glp_prob *P, int k, double *limit1,
int *var1, double *limit2, int *var2);
does not return pointers limit1, var1, ... but writes to the
memory locations to which the pointers your program provides

Hence you either have to use malloc to allocate the memory, e.g.
 limit1 = (double *) malloc(sizeof(double));
or you pass the address of variable like in the example below:

#include "glpk.h"
#include <stdio.h>

int main(int argc, const char *argv[]) {
   double limit1;
   double limit2;
   int var1, var2;

   printf("%s\n", argv[1]);
   glp_prob *GLV;
   GLV = glp_create_prob();
   glp_read_mps(GLV, GLP_MPS_FILE, NULL,argv[1]);
   glp_adv_basis(GLV, 0);
   glp_simplex(GLV, NULL);
   glp_print_sol(GLV, "GLV_SOL.dat");
   glp_analyze_bound(GLV, 3, &limit1, &var1, &limit2, &var2);
   printf("limit1 %f, var1 %i, limit2 %f, var2 %i\n",
       limit1, var1, limit2, var2);

to compile use

   gcc example.c -lglpk -o example

Then call the program with a valid MPS file name. I used

   example glpk-4.44/examples/samp1.mps

Best regards


-------- Original-Nachricht --------
Datum: Tue, 29 Jun 2010 17:03:47 +0400
Von: frnz65 <address@hidden>
An: address@hidden
Betreff: Re: [Help-glpk] glp_analyze_bound

Andrew Makhorin wrote:

I'm trying to use glp_analyze_bound:

double *limit1;
double *limit2;
int *var1, *var2;

       glp_prob *GLV;
        GLV = glp_create_prob();
        glp_read_mps(GLV, GLP_MPS_FILE, NULL, mpscardfile);
        glp_adv_basis(GLV, 0);
        glp_simplex(GLV, NULL);
glp_print_sol(GLV, "../out/GLV_SOL.dat"); // write the results in
       glp_analyze_bound(GLV, 473, limit1, var1, limit2, var2);

but I do get a bus error when I use     glp_analyze_bound.

GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter

reply via email to

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