This repository has been archived on 2019-10-23. You can view files and clone it, but cannot push or open issues or pull requests.
aro/src/sub.c

63 lines
1.6 KiB
C

#include "sub.h"
#include <stdio.h>
#include <glpk.h>
static void add_column_sp(glp_prob *lp, int num_col_sp) {
glp_add_cols(lp, 1);
char name[10] = "";
snprintf(name, sizeof name, "rouleau%d", num_col_sp);
glp_set_col_name(lp, num_col_sp, name);
glp_set_col_bnds(lp, num_col_sp, GLP_LO, 0.0, 0.0);
glp_set_obj_coef(lp, num_col_sp, 1.0);
num_col_sp++;
}
void column_generator(int y1, int y2, int y3, int y4, int a[static 4], int num_col_sp) {
glp_prob *sous_prob;
int ia[1 + 1000];
int ja[1 + 1000];
double ar[1 + 1000];
/* double z, x1, x2, x3, x4; */
/* create problem */
sous_prob = glp_create_prob();
glp_set_prob_name(sous_prob, "rouleaux-parfaits");
glp_set_obj_dir(sous_prob, GLP_MAX);
/* fill problem */
glp_add_rows(sous_prob, 4);
glp_set_row_name(sous_prob, 1, "taille0");
glp_set_row_bnds(sous_prob, 1, GLP_UP, 0.0, 100.0);
num_col_sp = 1;
const double coeffs[] = {45.0, 36.0, 31.0, 14.0};
for (int i = 1; i < 5; i++) {
add_column_sp(sous_prob, num_col_sp);
glp_set_col_kind(sous_prob, i, GLP_IV);
ia[i] = 1;
ja[i] = i;
ar[i] = coeffs[i];
}
glp_load_matrix(sous_prob, 4, ia, ja, ar);
/* solve problem */
glp_simplex(sous_prob, NULL);
glp_intopt(sous_prob, NULL);
a[0] = glp_get_obj_val(sous_prob);
a[1] = glp_mip_col_val(sous_prob, 1);
a[2] = glp_mip_col_val(sous_prob, 2);
a[3] = glp_mip_col_val(sous_prob, 3);
a[4] = glp_mip_col_val(sous_prob, 4);
printf("a1 = %d; a2 = %d; a3 = %d; a4 = %d\n", a[1], a[2], a[3], a[4]);
/* housekeeping */
glp_delete_prob(sous_prob);
//glp_intopt(glp_prob *mip, const glp_iocp *parm);
}