-/* $Id$ */
-
-/* Copyright (c) 2004 Arnaud Legrand. All rights reserved. */
+/* Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010. The SimGrid Team.
+ * All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
lmm_variable_t var = NULL;
lmm_constraint_t cnst = NULL;
- while ((var = extract_variable(sys)))
+ while ((var = extract_variable(sys))) {
+ WARN2("Variable %p (%d) still in LMM system when freing it: this may be a bug",
+ var,var->id_int);
lmm_var_free(sys, var);
+ }
while ((cnst = extract_constraint(sys)))
lmm_cnst_free(sys, cnst);
xbt_swag_foreach(cnst, cnst_list) {
/* INIT */
cnst->remaining = cnst->bound;
+ if (cnst->remaining == 0)
+ continue;
cnst->usage = 0;
elem_list = &(cnst->element_set);
xbt_swag_foreach(elem, elem_list) {
} else { /* FIXME one day: We recompute usage.... :( */
cnst->usage = 0.0;
make_elem_inactive(elem);
+ elem_list = &(cnst->element_set);
xbt_swag_foreach(elem, elem_list) {
if (elem->variable->weight <= 0)
break;
if (elem->variable->value > 0)
break;
if ((elem->value > 0)) {
- if (cnst->usage < elem->value / elem->variable->weight)
- cnst->usage = elem->value / elem->variable->weight;
+ cnst->usage=MAX(cnst->usage,elem->value / elem->variable->weight);
DEBUG2("Constraint Usage %d : %f", cnst->id_int, cnst->usage);
make_elem_active(elem);
}