6#include "tpcclibConfig.h"
87 nlo->
xfull=calloc(parNr,
sizeof(
double));
89 nlo->
xlower=calloc(parNr,
sizeof(
double));
91 nlo->
xupper=calloc(parNr,
sizeof(
double));
93 nlo->
xdelta=calloc(parNr,
sizeof(
double));
95 nlo->
xtol=calloc(parNr,
sizeof(
double));
129 for(
unsigned int i=0; i<nlo1->
totalNr; i++) nlo2->
xtol[i]=nlo1->
xtol[i];
161 nlo->
plist=(
double*)malloc((nlo->
totalNr+1)*
sizeof(
double));
168 for(
unsigned int i=0; i<nlo->
totalNr; i++)
192 for(
unsigned int i=0; i<nr-1; i++)
193 for(
unsigned int j=i+1; j<nr; j++) {
194 if( (!isfinite(nlo->
plist[i*(dim+1)+dim]) && isfinite(nlo->
plist[j*(dim+1)+dim]))
195 || nlo->
plist[i*(dim+1)+dim] > nlo->
plist[j*(dim+1)+dim])
197 for(
unsigned int k=0; k<=dim; k++) {
198 double d=nlo->
plist[i*(dim+1)+k];
199 nlo->
plist[i*(dim+1)+k]=nlo->
plist[j*(dim+1)+k]; nlo->
plist[j*(dim+1)+k]=d;
235 for(
unsigned int j=0; j<dim; j++) {
238 for(
unsigned int i=0; i<nr; i++) {
239 if(isfinite(nlo->
plist[i*(dim+1)+j])) meanp[j]+=nlo->
plist[i*(dim+1)+j];
248 for(
unsigned int j=0; j<dim; j++) {
251 double sqrsum=0.0, sumsqr=0.0;
252 for(
unsigned int i=0; i<nr; i++) {
253 if(isfinite(nlo->
plist[i*(dim+1)+j])) {
254 sqrsum+=nlo->
plist[i*(dim+1)+j];
255 sumsqr+=nlo->
plist[i*(dim+1)+j]*nlo->
plist[i*(dim+1)+j];
261 double ff=sumsqr - sqrsum/(double)n;
262 if(!(ff>0.0)) sdp[j]=0.0;
263 else sdp[j]=sqrt( ff / (
double)(n-1) );
282 if(nlo==NULL || fp==NULL)
return;
284 fprintf(fp,
"\nSampled points:\n");
289 for(
unsigned int si=0; si<nr; si++) {
290 fprintf(fp,
"%d\t", 1+si);
291 for(
unsigned int i=0; i<dim; i++) fprintf(fp,
"%e ", nlo->
plist[si*(dim+1)+i]);
292 fprintf(fp,
"=> %e\n", nlo->
plist[si*(dim+1)+dim]);
308 if(d==NULL || fp==NULL)
return;
309 if(d->
totalNr==0) {fprintf(fp,
"NLOPT is empty\n");
return;}
310 fprintf(fp,
"param xfull xlower xupper xdelta xtol\n");
311 for(
unsigned int i=0; i<d->
totalNr; i++) {
312 fprintf(fp,
"%5d", 1+i);
313 fprintf(fp,
" %10.5f", d->
xfull[i]);
314 fprintf(fp,
" %10.5f", d->
xlower[i]);
315 fprintf(fp,
" %10.5f", d->
xupper[i]);
316 fprintf(fp,
" %10.5f", d->
xdelta[i]);
317 fprintf(fp,
" %10.5f\n", d->
xtol[i]);
319 fprintf(fp,
"maxFunCalls := %d\n", d->
maxFunCalls);
320 fprintf(fp,
"funCalls := %d\n", d->
funCalls);
321 fprintf(fp,
"funval := %g\n", d->
funval);
322 fprintf(fp,
"usePList := %d\n", d->
usePList);
337 if(d==NULL || d->
totalNr<1)
return(0);
341 for(
unsigned int i=0; i<d->
totalNr; i++) {
343 if(!isnan(r) && r<macheps) n++;
358 if(d==NULL || d->
totalNr<1)
return(0);
359 unsigned int i, ln=0, dn=0;
366 if(!isnan(r) && r<macheps) ln++;
373 if(!isnan(d->
xdelta[i]) && fabs(d->
xdelta[i])<macheps) dn++;
378 if(dn==0)
return(ln);
379 if(ln==0)
return(dn);
384 if(!isnan(d->
xdelta[i]) && fabs(d->
xdelta[i])<macheps) {n++;
continue;}
386 if(!isnan(r) && r<macheps) {n++;
continue;}
401 if(d==NULL || d->
totalNr<1)
return;
403 while(i<d->totalNr) {
404 if(!isnan(d->
xfull[i]) && !isnan(d->
xdelta[i])) {i++;
continue;}
405 for(j=i+1; j<d->
totalNr; j++) {
429 d->
x=d->
y=d->
w=d->
sy=NULL;
void nloptInit(NLOPT *nlo)
int nloptAllocate(NLOPT *nlo, unsigned int parNr)
unsigned int nloptLimitFixedNr(NLOPT *d)
int nloptMeanP(NLOPT *nlo, unsigned int nr, double *meanp, double *sdp)
unsigned int nloptFixedNr(NLOPT *d)
void nloptRemoveEmpties(NLOPT *d)
void nloptPrintP(NLOPT *nlo, unsigned int nr, FILE *fp)
void nloptFree(NLOPT *nlo)
int nloptAddP(NLOPT *nlo, double *p, double funval)
void nloptdataInit(NLOPT_DATA *d)
int nloptDuplicate(NLOPT *nlo1, NLOPT *nlo2)
void nloptWrite(NLOPT *d, FILE *fp)
int nloptSortP(NLOPT *nlo)
double(* _fun)(int, double *, void *)
Header file for library libtpcextensions.
@ TPCERROR_FAIL
General error.
@ TPCERROR_OUT_OF_MEMORY
Cannot allocate memory.
@ TPCERROR_NO_DATA
File contains no data.
Header file for library libtpcnlopt.
Header file for libtpcrand.