コード例 #1
0
ファイル: output.c プロジェクト: aeolus-project/metis
void print_fl_name( int index )

{

  int i;

  if ( index < 0 ) {
    if ( index != -2 ) {
      printf("[UNDEF]");
    } else {
      printf("[TOTAL-TIME]");
    }
    return;
  }

  if ( grelevant_fluents_lnf[index] == NULL ) {
    /* this is a non-artificial "atomic" one
     * (or the mirrored version of one)
     */
    printf("[RF%d](%s)", index, grelevant_fluents_name[index]);
  } else {
    /* this only summarizes a LNF requirement
     */
    printf("[artRF%d]", index);
    for ( i = 0; i < grelevant_fluents_lnf[index]->num_pF; i++ ) {
      printf("%.2f*", grelevant_fluents_lnf[index]->pC[i] );
      print_fl_name( grelevant_fluents_lnf[index]->pF[i] );
      if ( i < grelevant_fluents_lnf[index]->num_pF - 1 ) {
	printf(" + ");
      }
    }
  }

}
コード例 #2
0
void print_ExpNode( ExpNode *n )

{

  if ( !n ) return;

  switch ( n->connective) {
  case AD:
    printf("(+ ");
    print_ExpNode( n->leftson );
    print_ExpNode( n->rightson );
    printf(")");
    break;
  case SU:
    printf("(- ");
    print_ExpNode( n->leftson );
    print_ExpNode( n->rightson );
    printf(")");
    break;
  case MU:
    printf("(* ");
    print_ExpNode( n->leftson );
    print_ExpNode( n->rightson );
    printf(")");
    break;
  case DI:
    printf("(/ ");
    print_ExpNode( n->leftson );
    print_ExpNode( n->rightson );
    printf(")");
    break;
  case MINUS:
    printf("(- ");
    print_ExpNode( n->son );
    printf(")");
    break;
  case NUMBER:
    printf("%.2f", n->value);
    break;
  case FHEAD:
    if ( n->fluent ) {
      print_Fluent( n->fluent );
    } else {
      if ( n->fl >= 0 ) {
	printf(" %.2f*", n->c);
	print_fl_name( n->fl );
      } else {
	printf("[UNDEF]");
      }
    }
    break;
  default:
    printf("\n\nprint Expnode: wrong specifier %d",
	   n->connective);
  }

}
コード例 #3
0
ファイル: output.c プロジェクト: aeolus-project/metis
void print_LnfExpNode( LnfExpNode *n )

{

  int i;

  printf("((");
  for ( i = 0; i < n->num_pF; i++ ) {
    printf("%.2f*", n->pC[i]);
    print_fl_name( n->pF[i] );
  }
  printf(") - (");
  for ( i = 0; i < n->num_nF; i++ ) {
    printf("%.2f*", n->nC[i]);
    print_fl_name( n->nF[i] );
  }
  printf(") + %.2f)", n->c);

}
コード例 #4
0
void print_State( State S )

{

  int i;
  
  for ( i = 0; i < S.num_F; i++ ) {
    printf("\n");
    print_ft_name( S.F[i] );
  }
  for ( i = 0; i < gnum_relevant_fluents; i++ ) {
    printf("\n");
    print_fl_name( i );
    printf(": ");
    if ( S.f_D[i] ) {
      printf("%.2f", S.f_V[i]);
    } else {
      printf("UNDEF");
    }
  }

}
コード例 #5
0
void print_Action( Action *a )

{

  ActionEffect *e;
  int i, j;

  if ( !a->norm_operator &&
       !a->pseudo_action ) {
    printf("\n\nAction REACH-GOAL");
  } else {
    printf("\n\nAction %s ID %d", a->name, a->id ); 
    for ( i = 0; i < a->num_name_vars; i++ ) {
      printf(" %s", gconstants[a->name_inst_table[i]]);
    }
  }

  printf("\n\nPreconds:\n");
  for ( i = 0; i < a->num_preconds; i++ ) {
    print_ft_name( a->preconds[i] );
    printf("\n");
  }
  for ( i = 0; i < a->num_numeric_preconds; i++ ) {
    switch ( a->numeric_preconds_comp[i] ) {
    case LE:
      printf("(< ");
      break;
    case LEQ:
      printf("(<= ");
      break;
    case EQ:
      printf("(= ");
      break;
    case GEQ:
      printf("(>= ");
      break;
    case GE:
      printf("(> ");
      break;
    default:
      printf("\nwrong comparator of Expnodes in actionpre %d\n\n", 
	     a->numeric_preconds_comp[i]);
      exit( 1 );
    }
    print_ExpNode( a->numeric_preconds_lh[i] );
    print_ExpNode( a->numeric_preconds_rh[i] );
    printf(")\n");
  }

  printf("\n\nEffects:");
  for ( j = 0; j < a->num_effects; j++ ) {
    e = &(a->effects[j]);
    printf("\n\neffect %d ID %d", j, e->id);
    printf("\n\nConditions\n");
    for ( i = 0; i < e->num_conditions; i++ ) {
      print_ft_name( e->conditions[i] );
      printf("\n");
    }
    for ( i = 0; i < e->num_numeric_conditions; i++ ) {
      switch ( e->numeric_conditions_comp[i] ) {
      case LE:
	printf("(< ");
	break;
      case LEQ:
	printf("(<= ");
	break;
      case EQ:
	printf("(= ");
	break;
      case GEQ:
	printf("(>= ");
	break;
      case GE:
	printf("(> ");
	break;
      default:
	printf("\nwrong comparator of Expnodes in normeff %d\n\n", 
	       e->numeric_conditions_comp[i]);
	exit( 1 );
      }
      print_ExpNode( e->numeric_conditions_lh[i] );
      print_ExpNode( e->numeric_conditions_rh[i] );
      printf(")\n");
    }
    printf("\nAdds\n");
    for ( i = 0; i < e->num_adds; i++ ) {
      print_ft_name( e->adds[i] );
      printf("\n");
    }
    printf("\nDels\n");
    for ( i = 0; i < e->num_dels; i++ ) {
      print_ft_name( e->dels[i] );
      printf("\n");
    }
    for ( i = 0; i < e->num_numeric_effects; i++ ) {
      switch ( e->numeric_effects_neft[i] ) {
      case ASSIGN:
	printf("\nassign ");
	break;
      case SCALE_UP:
	printf("\nscale-up ");
	break;
      case SCALE_DOWN:
	printf("\nscale-down ");
	break;
      case INCREASE:
	printf("\nincrease ");
	break;
      case DECREASE:
	printf("\ndecrease ");
	break;
      default:
	printf("\n\nprint normop: illegal neft %d\n\n", 
	       e->numeric_effects_neft[i]);
	exit( 1 );
      }
      if ( e->numeric_effects_fl[i] >= 0 ) {
	print_fl_name( e->numeric_effects_fl[i] );
      } else {
	printf("[UNDEF]");
      }
      print_ExpNode( e->numeric_effects_rh[i] );
    }
  }

}
コード例 #6
0
ファイル: output.c プロジェクト: aeolus-project/metis
void print_lnf_Action( Action *a )

{

  ActionEffect *e;
  int i, j;

  if ( !a->norm_operator &&
       !a->pseudo_action ) {
    printf("\n\nAction REACH-GOAL");
  } else {
    printf("\n\nAction %s", a->name ); 
    for ( i = 0; i < a->num_name_vars; i++ ) {
      printf(" %s", gconstants[a->name_inst_table[i]]);
    }
  }

  printf("\n\nPreconds:\n");
  for ( i = 0; i < a->num_preconds; i++ ) {
    print_ft_name( a->preconds[i] );
    printf("\n");
  }
  for ( i = 0; i < a->num_lnf_preconds; i++ ) {
    switch ( a->lnf_preconds_comp[i] ) {
    case GEQ:
      printf("(>= ");
      break;
    case GE:
      printf("(> ");
      break;
    default:
      printf("\nwrong comparator of Expnodes in lnf actionpre %d\n\n", 
	     a->lnf_preconds_comp[i]);
      exit( 1 );
    }
    print_LnfExpNode( a->lnf_preconds_lh[i] );
    printf(" %.2f)\n", a->lnf_preconds_rh[i]);
  }

  printf("\n\nEffects:");
  for ( j = 0; j < a->num_effects; j++ ) {
    printf("\n\neffect %d COST %f", j, a->effects[j].cost);
    e = &(a->effects[j]);
    if ( e->illegal ) printf(" ILLEGAL EFFECT!");
    if ( e->removed ) printf(" REMOVED!!!");
    printf("\n\nConditions\n");
    for ( i = 0; i < e->num_conditions; i++ ) {
      print_ft_name( e->conditions[i] );
      printf("\n");
    }
    for ( i = 0; i < e->num_lnf_conditions; i++ ) {
      switch ( e->lnf_conditions_comp[i] ) {
      case GEQ:
	printf("(>= ");
	break;
      case GE:
	printf("(> ");
	break;
      default:
	printf("\nwrong comparator of Expnodes in lnf normeff %d\n\n", 
	       e->lnf_conditions_comp[i]);
	exit( 1 );
      }
      print_LnfExpNode( e->lnf_conditions_lh[i] );
      printf(" %.2f)\n", e->lnf_conditions_rh[i] );
    }
    printf("\nAdds\n");
    for ( i = 0; i < e->num_adds; i++ ) {
      print_ft_name( e->adds[i] );
      printf("\n");
    }
    printf("\nDels\n");
    for ( i = 0; i < e->num_dels; i++ ) {
      print_ft_name( e->dels[i] );
      printf("\n");
    }
    for ( i = 0; i < e->num_lnf_effects; i++ ) {
      switch ( e->lnf_effects_neft[i] ) {
      case ASSIGN:
	printf("\nassign ");
	break;
      case INCREASE:
	printf("\nincrease ");
	break;
      default:
	printf("\n\nprint lnf normop: illegal neft %d\n\n", 
	       e->lnf_effects_neft[i]);
	exit( 1 );
      }
      if ( e->lnf_effects_fl[i] >= 0 ) {
	print_fl_name( e->lnf_effects_fl[i] );
      } else {
	printf("[UNDEF]");
      }
      print_LnfExpNode( e->lnf_effects_rh[i] );
    }
  }

}