| 434 | } |
| 435 | |
| 436 | void InputQuery::saveQuery( const String &fileName ) |
| 437 | { |
| 438 | AutoFile queryFile( fileName ); |
| 439 | queryFile->open( IFile::MODE_WRITE_TRUNCATE ); |
| 440 | |
| 441 | // Number of Variables |
| 442 | queryFile->write( Stringf( "%u\n", _numberOfVariables ) ); |
| 443 | |
| 444 | // Number of Bounds |
| 445 | queryFile->write( Stringf( "%u\n", _lowerBounds.size() ) ); |
| 446 | queryFile->write( Stringf( "%u\n", _upperBounds.size() ) ); |
| 447 | |
| 448 | // Number of Equations |
| 449 | queryFile->write( Stringf( "%u\n", _equations.size() ) ); |
| 450 | |
| 451 | // Number of Non-linear Constraints |
| 452 | queryFile->write( Stringf( "%u", _plConstraints.size() + _nlConstraints.size() ) ); |
| 453 | |
| 454 | printf( "Number of variables: %u\n", _numberOfVariables ); |
| 455 | printf( "Number of lower bounds: %u\n", _lowerBounds.size() ); |
| 456 | printf( "Number of upper bounds: %u\n", _upperBounds.size() ); |
| 457 | printf( "Number of equations: %u\n", _equations.size() ); |
| 458 | printf( "Number of non-linear constraints: %u\n", |
| 459 | _plConstraints.size() + _nlConstraints.size() ); |
| 460 | |
| 461 | // Number of Input Variables |
| 462 | queryFile->write( Stringf( "\n%u", getNumInputVariables() ) ); |
| 463 | |
| 464 | // Input Variables |
| 465 | unsigned i = 0; |
| 466 | for ( const auto &inVar : getInputVariables() ) |
| 467 | { |
| 468 | queryFile->write( Stringf( "\n%u,%u", i, inVar ) ); |
| 469 | ++i; |
| 470 | } |
| 471 | ASSERT( i == getNumInputVariables() ); |
| 472 | |
| 473 | // Number of Output Variables |
| 474 | queryFile->write( Stringf( "\n%u", getNumOutputVariables() ) ); |
| 475 | |
| 476 | // Output Variables |
| 477 | i = 0; |
| 478 | for ( const auto &outVar : getOutputVariables() ) |
| 479 | { |
| 480 | queryFile->write( Stringf( "\n%u,%u", i, outVar ) ); |
| 481 | ++i; |
| 482 | } |
| 483 | ASSERT( i == getNumOutputVariables() ); |
| 484 | |
| 485 | // Lower Bounds |
| 486 | for ( const auto &lb : _lowerBounds ) |
| 487 | queryFile->write( Stringf( "\n%d,%.10f", lb.first, lb.second ) ); |
| 488 | |
| 489 | // Upper Bounds |
| 490 | for ( const auto &ub : _upperBounds ) |
| 491 | queryFile->write( Stringf( "\n%d,%.10f", ub.first, ub.second ) ); |
| 492 | |
| 493 | // Equations |