cuiksystem.h
Go to the documentation of this file.
1 #ifndef CUIKSYSTEMH
2 #define CUIKSYSTEMH
3 
4 #include "constants.h"
5 #include "equations.h"
6 #include "variables.h"
7 #include "statistics.h"
8 #include "list.h"
9 #include "box_list.h"
10 #include "parameters.h"
11 #include "box.h"
12 #include "boolean.h"
13 #include "vector.h"
14 #include "csmapping.h"
15 #include "jacobian.h"
16 
17 #include <stdlib.h>
18 
19 
27 /************************************************************************************/
28 
38 #define EQ_MIN_IN_CENTER 0
39 
46 #define NEWTON_WITHIN_RANGES 0
47 
48 /************************************************************************************/
54 #define DEPTH_FIRST_SEARCH 1
55 /************************************************************************************/
56 
57 /************************************************************************************/
63 #define BREADTH_FIRST_SEARCH 2
64 /************************************************************************************/
65 
66 /************************************************************************************/
76 #define MINIMIZATION_SEARCH 3
77 /************************************************************************************/
78 
79 /************************************************************************************/
87 #if (RANDOMNESS)
88  #define CUT_POINT 0.45+0.1*randomDouble()
89 #else
90  #define CUT_POINT 0.5
91 #endif
92 /************************************************************************************/
93 
94 /************************************************************************************/
100 #define MPI_TREAT_BOX_TIMEOUT(cs) (cs->nvariables*SIMPLEX_TIMEOUT*10)
101 /************************************************************************************/
102 
103 
104 /************************************************************************************/
111 #define DIVERGED 1
112 /************************************************************************************/
113 
114 /************************************************************************************/
124 #define CONVERGED_IN_BOX 2
125 /************************************************************************************/
126 
127 
128 /************************************************************************************/
138 #define CONVERGED_IN_GLOBAL 4
139 /************************************************************************************/
140 
141 /************************************************************************************/
150 #define CONVERGED_OUTSIDE_GLOBAL 8
151 /************************************************************************************/
152 
158 #define CONVERGED (CONVERGED_IN_BOX|CONVERGED_IN_GLOBAL|CONVERGED_OUTSIDE_GLOBAL)
159 /************************************************************************************/
160 
181 typedef struct {
184  boolean updated;
185  boolean consistent;
187  boolean empty;
188  boolean scalar;
193  unsigned int searchMode;
197  /******************************************************************************/
198  /* SIMPLIFIED AND DUMMIFIED SUB-SYTEM */
199  /* The dummified system is for internal use only and only used for the linear
200  relaxation methods. Other higher-level methods can operate on the simplified
201  sistem, without dummification. */
207  unsigned int nequations;
208  unsigned int nvariables;
209  boolean *systemVar;
211  boolean *notDummyVar;
213  unsigned int *varType;
219  /******************************************************************************/
220  /* SIMPLIFIED SUB-SYTEM */
223  boolean simp_empty;
228  unsigned int simp_nequations;
229  unsigned int simp_nvariables;
230  unsigned int simp_nee;
232  unsigned int *simp_tp;
240  /******************************************************************************/
241  /* ORIGINAL SUB-SYTEM */
245  unsigned int orig_nequations;
246  unsigned int orig_nvariables;
247  boolean *orig_systemVar;
254  boolean *orig_notDummyVar;
256  char **orig_varNames;
258 } TCuikSystem;
259 
260 
261 /****************************************************************************/
262 /* Methods to initialize/define/re-define CuikSystems (constructors et al.) */
263 /****************************************************************************/
264 
272 void InitCuikSystem(TCuikSystem *cs);
273 
274 
288 void InitCuikSystemFromFile(Tparameters *p,char *filename,TCuikSystem *cs);
289 
305 void AddCuikSystemFromFile(Tparameters *p,char *filename,TCuikSystem *cs);
306 
319 
328 void CopyCuikSystem(TCuikSystem *cs_dst,TCuikSystem *cs_src);
329 
347 
348 
368 boolean CmpBoxesEquation(void *b1,void *b2,void *cs);
369 
387 void SetCSSearchMode(unsigned int sm,Tequation *eqMin,TCuikSystem *cs);
388 
407 void AddTerm2SearchCriterion(double w,unsigned int v,double val,TCuikSystem *cs);
408 
409 /****************************************************************************/
410 /* Methods to add individual variables/equations to the cuik system */
411 /****************************************************************************/
412 
425 unsigned int AddVariable2CS(Tvariable *v,TCuikSystem *cs);
426 
438 
451 
452 /****************************************************************************/
453 /* Methods to access the data stored in the CuikSystem. */
454 /* These methods provide controlled access to the stored data so that the */
455 /* higher levels can not introduce inconsistancies in the CuikSystem */
456 /****************************************************************************/
457 
471 
484 void GetCSVariableNames(char **varNames,TCuikSystem *cs);
485 
495 unsigned int GetCSNumVariables(TCuikSystem *cs);
496 
497 
508 unsigned int GetCSNumSystemVariables(TCuikSystem *cs);
509 
520 unsigned int GetCSNumNonDummyVariables(TCuikSystem *cs);
521 
522 
536 void GetCSVariable(unsigned int n,Tvariable *v,TCuikSystem *cs);
537 
551 void SetCSVariableRange(unsigned int n,Tinterval *r,TCuikSystem *cs);
552 
564 unsigned int GetCSVariableID(char *name,TCuikSystem *cs);
565 
577 char *GetCSVariableName(unsigned int id,TCuikSystem *cs);
578 
579 
592 char *GetCSSystemVariableName(unsigned int id,TCuikSystem *cs);
593 
594 
606 boolean IsSystemVarInSimpCS(Tparameters *p,char *v,TCuikSystem *cs);
607 
624 unsigned int GetCSSystemVars(boolean **sv,TCuikSystem *cs);
625 
626 
637 unsigned int GetCSVarTopology(unsigned int vID,TCuikSystem *cs);
638 
650 void GetCSEquations(Tequations *eqs,TCuikSystem *cs);
651 
661 unsigned int GetCSNumEquations(TCuikSystem *cs);
662 
675 void GetCSEquation(unsigned int n,Tequation *eq,TCuikSystem *cs);
676 
690 boolean IsCSPolynomial(TCuikSystem *cs);
691 
701 boolean IsCSScalar(TCuikSystem *cs);
702 
717 void GetCSJacobian(TJacobian *J,TCuikSystem *cs);
718 
738 unsigned int GetSimpCSTopology(Tparameters *p,
739  unsigned int **t,TCuikSystem *cs);
740 
760 unsigned int GetCSTopology(Tparameters *p,
761  unsigned int **t,TCuikSystem *cs);
762 
774  TJacobian *J,
775  TCuikSystem *cs);
776 
792 void AddJacobianEquations(Tparameters *p,boolean *selectedVars,TCuikSystem *cs);
793 
809 void AddSimplifiedJacobianEquations(Tparameters *p,boolean *selectedVars,TCuikSystem *cs);
810 
811 /****************************************************************************/
812 /* Methods to solve the CuikSystem. */
813 /****************************************************************************/
814 
831 unsigned int MaxReduction(Tparameters *p,unsigned int varMask,double *r,Tbox *b,TCuikSystem *cs);
832 
876 boolean SampleCuikSystem(Tparameters *p,char *fname,Tlist *sb,
877  unsigned int nsamples,unsigned int ntries,
878  unsigned int ndof,TCuikSystem *cs);
879 
910 boolean SampleCuikSystemInBox(Tparameters *p,char *fname,Tlist *sb,
911  unsigned int nsamples,unsigned int ntries,
912  unsigned int ndof,
913  Tbox *init_box,TCuikSystem *cs);
914 
915 
943 boolean IncrementalSampleCuikSystem(Tparameters *p,char *fname,Tlist *sb,
944  boolean *fixVars,
945  unsigned int nsamples,unsigned int ntries,
946  unsigned int ndof,TCuikSystem *cs);
975 boolean IncrementalSampleCuikSystemInBox(Tparameters *p,char *fname,Tlist *sb,
976  boolean *fixVars,
977  unsigned int nsamples,unsigned int ntries,
978  unsigned int ndof,
979  Tbox *init_box,TCuikSystem *cs);
980 
1011 unsigned int CuikNewtonSimp(Tparameters *p,double *x,TCuikSystem *cs);
1012 
1035 unsigned int CuikNewtonInBox(Tparameters *p,
1036  Tbox *bIn,double *sol,Tbox *b_sol,TCuikSystem *cs);
1037 
1060 boolean CuikNewton(Tparameters *p,double *sol,Tbox *b_sol,TCuikSystem *cs);
1061 
1084 unsigned int CuikGradientInBox(Tparameters *p,
1085  Tbox *bIn,double *sol,Tbox *b_sol,TCuikSystem *cs);
1086 
1109 boolean CuikGradient(Tparameters *p,double *sol,Tbox *b_sol,TCuikSystem *cs);
1110 
1111 
1145  boolean restart,char *fstate,Tbox *searchSpace,
1146  FILE *f_out,Tlist *sol,TCuikSystem *cs);
1147 
1148 #if (_USE_MPI)
1149 
1177  boolean restart,char *fstate,Tbox *searchSpace,
1178  FILE *f_out,TCuikSystem *cs);
1190  void MPI_TreatBox(Tparameters *p,TCuikSystem *cs);
1191 #endif
1192 
1193 
1194 /****************************************************************************/
1195 /* Auxiliary Methods. */
1196 /****************************************************************************/
1208 void GenerateInitialBox(Tbox *box,TCuikSystem *cs);
1209 
1220 
1249 boolean RegenerateSolution(Tparameters *p,Tbox *b,TCuikSystem *cs);
1250 
1267 unsigned int RegenerateSolutionPoint(Tparameters *p,double *pt,double **rp,TCuikSystem *cs);
1268 
1290 void RegenerateOriginalBox(Tparameters *p,Tbox *boxS,Tbox *boxO,TCuikSystem *cs);
1291 
1310 unsigned int RegenerateOriginalPoint(Tparameters *p,double *s,double **o,TCuikSystem *cs);
1311 
1325 unsigned int GenerateSimplifiedPoint(Tparameters *p,double *o,double **s,TCuikSystem *cs);
1326 
1344 unsigned int SimplifyBooleanArray(Tparameters *p,boolean *bo,boolean **bs,
1345  TCuikSystem *cs);
1346 
1360 unsigned int ComputeSplitDim(Tparameters *p,Tbox *b,TCuikSystem *cs);
1361 
1380 boolean PointInSystemBox(Tvector *v,Tbox *b,TCuikSystem *cs);
1381 
1395 void EvaluateCSEquations(double *p,double *r,TCuikSystem *cs);
1396 
1415 void EvaluateSimpCSEquations(Tparameters *pr,double *p,double *r,TCuikSystem *cs);
1416 
1432 void EvaluateSubSetSimpCSEquations(Tparameters *pr,boolean *se,double *p,double *r,TCuikSystem *cs);
1433 
1448 double ErrorInCSEquations(double *p,TCuikSystem *cs);
1449 
1470 double ErrorInSimpCSEquations(Tparameters *pr,double *p,TCuikSystem *cs);
1471 
1483 double EvaluateCSCost(Tparameters *p,boolean simp,double *s,void *cs);
1484 
1500 void EvaluateCSJacobian(double *p,double ***J,TCuikSystem *cs);
1501 
1517 double ErrorInSolution(Tbox *b,TCuikSystem *cs);
1518 
1536 double ErrorInInequalities(Tbox *b,TCuikSystem *cs);
1537 
1551 boolean InequalitiesHoldOnPoint(double *p,TCuikSystem *cs);
1552 
1567 boolean SimpInequalitiesHoldOnPoint(Tparameters *pr,double *p,TCuikSystem *cs);
1568 
1582 double ErrorInSimpInequalitiesOnPoint(Tparameters *pr,double *p,TCuikSystem *cs);
1583 
1584 
1598 unsigned int ManifoldDimension(Tparameters *pr,double *p,TCuikSystem *cs);
1599 
1600 /****************************************************************************/
1601 /* Output the information in the CuikSystem */
1602 /****************************************************************************/
1603 
1613 void PrintCuikSystem(Tparameters *p,FILE *f,TCuikSystem *cs);
1614 
1629 
1630 
1641 
1642 
1643 /****************************************************************************/
1644 /* Destructor */
1645 /****************************************************************************/
1646 
1654 void DeleteCuikSystem(TCuikSystem *cs);
1655 
1656 #endif
unsigned int GenerateSimplifiedPoint(Tparameters *p, double *o, double **s, TCuikSystem *cs)
Generates a simplified point.
Definition: cuiksystem.c:4992
Definition of the boolean type.
Set of variables of a cuiksystem.
Definition: variables.h:38
unsigned int MaxReduction(Tparameters *p, unsigned int varMask, double *r, Tbox *b, TCuikSystem *cs)
Reduces a box as much as possible.
Definition: cuiksystem.c:2955
void MPI_SolveCuikSystem(Tparameters *p, boolean restart, char *fstate, Tbox *searchSpace, FILE *f_out, TCuikSystem *cs)
Determines the solution set for a cuiksystem. Main scheduler.
Definition: cuiksystem.c:4369
boolean RegenerateSolution(Tparameters *p, Tbox *b, TCuikSystem *cs)
Regenerates a box from the system variables.
Definition: cuiksystem.c:4862
unsigned int CuikGradientInBox(Tparameters *p, Tbox *bIn, double *sol, Tbox *b_sol, TCuikSystem *cs)
Applies gradient descent to a set of equations.
Definition: cuiksystem.c:3961
void GenerateInitialBox(Tbox *box, TCuikSystem *cs)
Gives the search space in the form of a box.
Definition: cuiksystem.c:4849
A table of constants.
Definition: constants.h:53
unsigned int RegenerateSolutionPoint(Tparameters *p, double *pt, double **rp, TCuikSystem *cs)
Regenerates a solution point from the system variables.
Definition: cuiksystem.c:4926
double ErrorInSolution(Tbox *b, TCuikSystem *cs)
Maximum error for a box.
Definition: cuiksystem.c:5180
Definition of the Tvariables type and the associated functions.
Tequations orig_equations
Definition: cuiksystem.h:242
boolean * systemVar
Definition: cuiksystem.h:209
boolean SimpInequalitiesHoldOnPoint(Tparameters *pr, double *p, TCuikSystem *cs)
Tests if all simplified inqualities hold for a given point.
Definition: cuiksystem.c:5268
void AddEquation2CS(Tparameters *p, Tequation *eq, TCuikSystem *cs)
Adds an equation to the system.
Definition: cuiksystem.c:2502
void GetSimpCSJacobian(Tparameters *p, TJacobian *J, TCuikSystem *cs)
Defines the Jacobian of a simplified CuikSystem.
Definition: cuiksystem.c:2734
Definition of the TJacobian type and the associated functions.
boolean * orig_notDummyVar
Definition: cuiksystem.h:254
double ErrorInCSEquations(double *p, TCuikSystem *cs)
Evalates the norm of the error in a point.
Definition: cuiksystem.c:5120
void SaveCuikSystemSimplification(Tparameters *p, FILE *f, TCuikSystem *cs)
Saves the simplification information associated with a cuiksystem.
Definition: cuiksystem.c:5439
Tvariables simp_variables
Definition: cuiksystem.h:226
void PrintCuikSystemWithSimplification(Tparameters *p, FILE *f, TCuikSystem *cs)
Prints the simplified cuiksystem.
Definition: cuiksystem.c:5384
Definition of a table of Tconstants.
char ** orig_varNames
Definition: cuiksystem.h:256
unsigned int ComputeSplitDim(Tparameters *p, Tbox *b, TCuikSystem *cs)
Determines the best dimensions to split a given box.
Definition: cuiksystem.c:5036
unsigned int AddVariable2CS(Tvariable *v, TCuikSystem *cs)
Adds a variable to the system.
Definition: cuiksystem.c:2532
Tequations equations
Definition: cuiksystem.h:204
double ErrorInSimpCSEquations(Tparameters *pr, double *p, TCuikSystem *cs)
Evaluates the norm of the error in a point for the simplified equations.
Definition: cuiksystem.c:5140
void CuikSystemMerge(Tparameters *p, TCuikSystem *cs1, TCuikSystem *cs2, TCuikSystem *cs)
Produces the union of two cuik systems.
Definition: cuiksystem.c:2335
unsigned int GetCSNumNonDummyVariables(TCuikSystem *cs)
Gets the number of non-dummy variables already in the cuiksystem.
Definition: cuiksystem.c:2579
Mapping between the sets of variables in two different cuiksystems.
Definition: csmapping.h:53
unsigned int searchMode
Definition: cuiksystem.h:193
Tmapping * orig2sd
Definition: cuiksystem.h:202
unsigned int orig_nequations
Definition: cuiksystem.h:245
boolean simp_empty
Definition: cuiksystem.h:223
unsigned int ManifoldDimension(Tparameters *pr, double *p, TCuikSystem *cs)
Computes the dimension of the solution space.
Definition: cuiksystem.c:5312
void InitCuikSystem(TCuikSystem *cs)
Constructor.
Definition: cuiksystem.c:2167
Definition of the Tstatistics type and the associated functions.
unsigned int GetCSNumVariables(TCuikSystem *cs)
Gets the number of variables already in the cuiksystem.
Definition: cuiksystem.c:2565
Matrix equation.
Definition: mequation.h:42
void SolveCuikSystem(Tparameters *p, boolean restart, char *fstate, Tbox *searchSpace, FILE *f_out, Tlist *sol, TCuikSystem *cs)
Determines the solution set for a cuiksystem.
Definition: cuiksystem.c:4192
Collection of methods to work on Tlist of boxes.
void AddSimplifiedJacobianEquations(Tparameters *p, boolean *selectedVars, TCuikSystem *cs)
Adds a linear combination of the Jacobian to the system.
Definition: cuiksystem.c:2835
unsigned int GetCSNumSystemVariables(TCuikSystem *cs)
Gets the number of system variables already in the cuiksystem.
Definition: cuiksystem.c:2570
void AddJacobianEquations(Tparameters *p, boolean *selectedVars, TCuikSystem *cs)
Adds linear a linear combination of the Jacobian to the system.
Definition: cuiksystem.c:2805
void GenerateSimpInitialBox(Tparameters *p, Tbox *box, TCuikSystem *cs)
Gives the search space in the form of a box for the simplified system.
Definition: cuiksystem.c:4854
void CopyCuikSystem(TCuikSystem *cs_dst, TCuikSystem *cs_src)
Copy constructor.
Definition: cuiksystem.c:2216
boolean scalar
Definition: cuiksystem.h:188
void MPI_TreatBox(Tparameters *p, TCuikSystem *cs)
Determines the solution set for a cuiksystem. Child process.
Definition: cuiksystem.c:4756
Tstatistics st
Definition: cuiksystem.h:190
unsigned int * simp_tp
Definition: cuiksystem.h:232
char * GetCSVariableName(unsigned int id, TCuikSystem *cs)
Gets a variable name.
Definition: cuiksystem.c:2612
Tvariables orig_variables
Definition: cuiksystem.h:243
boolean PointInSystemBox(Tvector *v, Tbox *b, TCuikSystem *cs)
Determines if a given point is fully included in the system sub-box (i.e., the sub-box fot the system...
Definition: cuiksystem.c:5060
boolean IsCSScalar(TCuikSystem *cs)
Identifies scalar cuiksystems.
Definition: cuiksystem.c:2701
Set of equations.
Definition: equations.h:81
boolean empty
Definition: cuiksystem.h:187
boolean IsCSPolynomial(TCuikSystem *cs)
Identifies polynomial cuiksystems.
Definition: cuiksystem.c:2696
An equation.
Definition: equation.h:237
unsigned int GetSimpCSTopology(Tparameters *p, unsigned int **t, TCuikSystem *cs)
Topology of the variables in the simplified system.
Definition: cuiksystem.c:2719
void PrintCuikSystem(Tparameters *p, FILE *f, TCuikSystem *cs)
Prints a cuiksystem.
Definition: cuiksystem.c:5359
void AddCuikSystemFromFile(Tparameters *p, char *filename, TCuikSystem *cs)
Adds information from a file.
Definition of the Tbox type and the associated functions.
boolean consistent
Definition: cuiksystem.h:185
A generic list.
Definition: list.h:46
Definition of the Tlist type and the associated functions.
unsigned int CuikNewtonSimp(Tparameters *p, double *x, TCuikSystem *cs)
CuikNewton on the simplified system.
Definition: cuiksystem.c:3618
Statistics associated with a solving process.
Definition: statistics.h:28
Tmapping * orig2s
Definition: cuiksystem.h:221
void InitCuikSystemFromFile(Tparameters *p, char *filename, TCuikSystem *cs)
Constructor from a file.
void EvaluateCSEquations(double *p, double *r, TCuikSystem *cs)
Evaluates the equation set on a point.
Definition: cuiksystem.c:5087
TJacobian J
Definition: cuiksystem.h:238
Tequation orig_eqMin
Definition: cuiksystem.h:194
boolean IsSystemVarInSimpCS(Tparameters *p, char *v, TCuikSystem *cs)
Identifies system variables that survive in the simplified system.
Definition: cuiksystem.c:2641
A table of parameters.
boolean updated
Definition: cuiksystem.h:184
boolean IncrementalSampleCuikSystem(Tparameters *p, char *fname, Tlist *sb, boolean *fixVars, unsigned int nsamples, unsigned int ntries, unsigned int ndof, TCuikSystem *cs)
Generates samples for a cuiksystem.
Definition: cuiksystem.c:3265
void EvaluateSimpCSEquations(Tparameters *pr, double *p, double *r, TCuikSystem *cs)
Evaluates the simplified equation set on a point.
Definition: cuiksystem.c:5092
void GetCSVariables(Tvariables *vs, TCuikSystem *cs)
Gets the cuiksystem variables.
Definition: cuiksystem.c:2550
void EvaluateCSJacobian(double *p, double ***J, TCuikSystem *cs)
Evaluates the Jacobian of the system in a given point.
Definition: cuiksystem.c:5108
void SetCSSearchMode(unsigned int sm, Tequation *eqMin, TCuikSystem *cs)
Sets the search mode for the cuiksystem.
Definition: cuiksystem.c:2433
void GetCSVariableNames(char **varNames, TCuikSystem *cs)
Gets points to the variable names.
Definition: cuiksystem.c:2555
boolean CuikNewton(Tparameters *p, double *sol, Tbox *b_sol, TCuikSystem *cs)
Applies Newton-Rhapson to a set of equations.
Definition: cuiksystem.c:3947
A generic vector.
Definition: vector.h:227
Tequation eqMin
Definition: cuiksystem.h:216
unsigned int CuikNewtonInBox(Tparameters *p, Tbox *bIn, double *sol, Tbox *b_sol, TCuikSystem *cs)
Applies Newton-Rhapson to a set of equations.
Definition: cuiksystem.c:3714
void DeleteCuikSystem(TCuikSystem *cs)
Destructor.
Definition: cuiksystem.c:5450
unsigned int GetCSSystemVars(boolean **sv, TCuikSystem *cs)
Identifies the system variables.
Definition: cuiksystem.c:2659
A box.
Definition: box.h:83
Data associated with each variable in the problem.
Definition: variable.h:84
boolean IncrementalSampleCuikSystemInBox(Tparameters *p, char *fname, Tlist *sb, boolean *fixVars, unsigned int nsamples, unsigned int ntries, unsigned int ndof, Tbox *init_box, TCuikSystem *cs)
Generates samples for a cuiksystem in given box.
Definition: cuiksystem.c:3285
A cuiksystem, i.e., a set of variables and equations defining a position analysis problem...
Definition: cuiksystem.h:181
void RegenerateOriginalBox(Tparameters *p, Tbox *boxS, Tbox *boxO, TCuikSystem *cs)
Generates a box in the original cuiksystem from a box of the simplified one.
Definition: cuiksystem.c:4967
void GetCSEquation(unsigned int n, Tequation *eq, TCuikSystem *cs)
Gets the an equation from a cuiksystem.
Definition: cuiksystem.c:2688
double EvaluateCSCost(Tparameters *p, boolean simp, double *s, void *cs)
Evalutes the equation to minimize in a given point.
Definition: cuiksystem.c:5162
Definition of the Tvector type and the associated functions.
boolean InequalitiesHoldOnPoint(double *p, TCuikSystem *cs)
Tests if all inqualities hold for a given point.
Definition: cuiksystem.c:5248
Tvariables variables
Definition: cuiksystem.h:205
unsigned int simp_nee
Definition: cuiksystem.h:230
unsigned int nvariables
Definition: cuiksystem.h:208
The Jacobian of a set of equations.
Definition: jacobian.h:23
double ErrorInInequalities(Tbox *b, TCuikSystem *cs)
Maximum inequality error for a box.
Definition: cuiksystem.c:5219
void GetCSEquations(Tequations *eqs, TCuikSystem *cs)
Gets a copy of the system equations.
Definition: cuiksystem.c:2680
unsigned int simp_nvariables
Definition: cuiksystem.h:229
unsigned int orig_nvariables
Definition: cuiksystem.h:246
Tequations simp_equations
Definition: cuiksystem.h:225
double ErrorInSimpInequalitiesOnPoint(Tparameters *pr, double *p, TCuikSystem *cs)
Computes the maximum error in all the simplified inqualities for a given point.
Definition: cuiksystem.c:5291
unsigned int GetCSVariableID(char *name, TCuikSystem *cs)
Gets the numerical identifier of a variable given its name.
Definition: cuiksystem.c:2607
unsigned int simp_nequations
Definition: cuiksystem.h:228
Tconstants constants
Definition: cuiksystem.h:182
void SetCSVariableRange(unsigned int n, Tinterval *r, TCuikSystem *cs)
Gets the range of a variable from a cuiksystem.
Definition: cuiksystem.c:2595
boolean CuikGradient(Tparameters *p, double *sol, Tbox *b_sol, TCuikSystem *cs)
Applies gradient descent to a set of equations.
Definition: cuiksystem.c:4171
void EvaluateSubSetSimpCSEquations(Tparameters *pr, boolean *se, double *p, double *r, TCuikSystem *cs)
Evaluates a subset of the simplified equation set on a point.
Definition: cuiksystem.c:5100
char * GetCSSystemVariableName(unsigned int id, TCuikSystem *cs)
Gets a system variable name.
Definition: cuiksystem.c:2617
unsigned int * varType
Definition: cuiksystem.h:213
boolean SampleCuikSystem(Tparameters *p, char *fname, Tlist *sb, unsigned int nsamples, unsigned int ntries, unsigned int ndof, TCuikSystem *cs)
Generates samples for a cuiksystem.
Definition: cuiksystem.c:2988
void VerifyCuikSystem(Tparameters *p, TCuikSystem *cs)
Checks the consistency of the cuiksystem.
Definition: cuiksystem.c:2206
Definition of the Tmapping type and the associated functions.
boolean SampleCuikSystemInBox(Tparameters *p, char *fname, Tlist *sb, unsigned int nsamples, unsigned int ntries, unsigned int ndof, Tbox *init_box, TCuikSystem *cs)
Generates samples for a cuiksystem in given box.
Definition: cuiksystem.c:3007
boolean * orig_systemVar
Definition: cuiksystem.h:247
void AddMatrixEquation2CS(Tparameters *p, TMequation *eq, TCuikSystem *cs)
Adds a matrix equation to the system.
Definition: cuiksystem.c:2511
boolean CmpBoxesEquation(void *b1, void *b2, void *cs)
Determines which box to explore first in minimization mode.
Definition: cuiksystem.c:2428
Defines a interval.
Definition: interval.h:33
unsigned int GetCSNumEquations(TCuikSystem *cs)
Gets the number of equations already in the cuiksystem.
Definition: cuiksystem.c:2709
boolean * notDummyVar
Definition: cuiksystem.h:211
Definition of the Tparameters type and the associated functions.
void GetCSVariable(unsigned int n, Tvariable *v, TCuikSystem *cs)
Gets the a variable from a cuiksystem.
Definition: cuiksystem.c:2587
unsigned int GetCSVarTopology(unsigned int vID, TCuikSystem *cs)
Determines the topology of a given variable.
Definition: cuiksystem.c:2672
Definition of the Tequations type and the associated functions.
void GetCSJacobian(TJacobian *J, TCuikSystem *cs)
Defines the Jacobian of a CuikSystem.
Definition: cuiksystem.c:2714
unsigned int nequations
Definition: cuiksystem.h:207
void AddTerm2SearchCriterion(double w, unsigned int v, double val, TCuikSystem *cs)
Adds penalty terms to the search criterion.
Definition: cuiksystem.c:2456
unsigned int RegenerateOriginalPoint(Tparameters *p, double *s, double **o, TCuikSystem *cs)
Generates an original point from a simplified point.
Definition: cuiksystem.c:4978
unsigned int SimplifyBooleanArray(Tparameters *p, boolean *bo, boolean **bs, TCuikSystem *cs)
Transforms arrays of booleans from the original to the simplified system.
Definition: cuiksystem.c:5002
unsigned int GetCSTopology(Tparameters *p, unsigned int **t, TCuikSystem *cs)
Topology of the variables in the system.
Definition: cuiksystem.c:2728
Tequation simp_eqMin
Definition: cuiksystem.h:235