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(" + "); } } } }
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); } }
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); }
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"); } } }
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] ); } } }
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] ); } } }