예제 #1
0
int jmi_init_opt_dh(jmi_init_opt_t *jmi_init_opt, jmi_real_t *jac) {
    jmi_t* jmi;
    int retval;
    
    if (jmi_init_opt->jmi->init == NULL || jmi_init_opt->jmi->dae == NULL)  {
        return -1;
    }
    
    jmi = jmi_init_opt->jmi;

    /* Copy values into jmi->z */
    /* Copy free paramters */
    copy_p(jmi_init_opt);
    /* Copy variables */
    copy_v(jmi_init_opt);

    /* Evaluate jacobian */
    retval = jmi_init_dF0 (jmi, jmi_init_opt->der_eval_alg,
            JMI_DER_SPARSE, JMI_DER_PI | JMI_DER_PD | JMI_DER_DX | JMI_DER_X | JMI_DER_W,
            jmi_init_opt->der_mask_v, jac);

    if (jmi_init_opt->stat==1 && jmi_init_opt->jmi->opt->Ffdp->n_eq_F>0) {
        jmi_opt_dFfdp (jmi, jmi_init_opt->der_eval_alg,
                    JMI_DER_SPARSE, JMI_DER_PI | JMI_DER_PD | JMI_DER_DX | JMI_DER_X | JMI_DER_W,
                    jmi_init_opt->der_mask_v, jac + jmi_init_opt->dF0_n_nz);
    }

    return retval;

}
예제 #2
0
int jmi_init_opt_h(jmi_init_opt_t *jmi_init_opt, jmi_real_t *res) {
    int retval;
    
    if (jmi_init_opt->jmi->init == NULL || jmi_init_opt->jmi->dae == NULL)  {
        return -1;
    }
    /*int i; */

    /* Copy values into jmi->z */
    /* Copy free paramters */
    copy_p(jmi_init_opt);
    /* Copy variables */
    copy_v(jmi_init_opt);
/*
    for (i=0;i<jmi_init_opt->n_x;i++) {
        printf("%f\n",jmi_init_opt->x[i]);
    }
*/
    retval = jmi_init_F0(jmi_init_opt->jmi, res);

    if (jmi_init_opt->stat==1 && jmi_init_opt->jmi->opt->Ffdp->n_eq_F>0) {
        retval = jmi_opt_Ffdp(jmi_init_opt->jmi, res+jmi_init_opt->jmi->init->F0->n_eq_F);
    }

/*
    printf("F0\n");
    for (i=0;i<jmi_init_opt->jmi->init->F1->n_eq_F;i++) {
        printf("%f\n",res[i]);
    }
*/
    return retval;
}
예제 #3
0
int jmi_init_opt_f(jmi_init_opt_t *jmi_init_opt, jmi_real_t *f) {
    int i;
    int retval;
    
    if (jmi_init_opt->jmi->init == NULL) {
        return -1;
    }

    /* Copy values into jmi->z */
    /* Copy free paramters */
    copy_p(jmi_init_opt);
    /* Copy variables */
    copy_v(jmi_init_opt);

    *f = 0.0;

    if (jmi_init_opt->stat==1) {
        retval = jmi_opt_J(jmi_init_opt->jmi, f);
    } else {

        retval = jmi_init_F1(jmi_init_opt->jmi, jmi_init_opt->res_F1);
        if (retval<0) {
            return retval;
        }
        for (i=0;i<jmi_init_opt->jmi->init->F1->n_eq_F;i++) {
            /* Call cost function evaluation */
            *f += 0.5*jmi_init_opt->res_F1[i]*jmi_init_opt->res_F1[i];
        }
    }
    return retval;

}
예제 #4
0
void Connection::addData(unsigned char * payload, uint size_payload, Packet packet)
{
	if (BUFFER_ALLOCATE - buffer_size < size_payload)
	{
		fprintf(stderr, "Something went wrong, unable to add payload to Connection buffer.\n");
		return;
	}
	memcpy(buffer + buffer_size, payload, size_payload);
	uint start_pos = buffer_size;
	buffer_size += size_payload;

	uint packet_size = packet.header.caplen;
	unsigned char * copy_packet = new unsigned char [packet_size];
	memcpy(copy_packet, packet.packet, packet_size);
	Packet copy_p(copy_packet, packet.header);
	packet_map[start_pos] = copy_p;
}
예제 #5
0
int jmi_init_opt_df(jmi_init_opt_t *jmi_init_opt, jmi_real_t *df) {
    int i;
    int retval;
    jmi_t* jmi;
    
    if (jmi_init_opt->jmi->init == NULL) {
        return -1;
    }

    jmi = jmi_init_opt->jmi;

    /* Copy values into jmi->z */
    /* Copy free paramters */
    copy_p(jmi_init_opt);
    /* Copy variables */
    copy_v(jmi_init_opt);

    for (i=0;i<jmi_init_opt->n_x;i++) {
        df[i] = 0;
        /*printf("%f\n",jmi_init_opt->x[i]); */
    }

    if (jmi_init_opt->stat==1) {
        retval = jmi_opt_dJ(jmi_init_opt->jmi, jmi_init_opt->der_eval_alg, JMI_DER_DENSE_COL_MAJOR,
                    JMI_DER_PI | JMI_DER_PD | JMI_DER_DX | JMI_DER_X | JMI_DER_W, jmi_init_opt->der_mask_v,df);

    } else {

        /* Evaluate jacobian */
        retval = jmi_init_dF1(jmi, jmi_init_opt->der_eval_alg,
            JMI_DER_SPARSE, JMI_DER_PI | JMI_DER_PD | JMI_DER_DX | JMI_DER_X | JMI_DER_W,
            jmi_init_opt->der_mask_v, jmi_init_opt->dF1_dv);
        if (retval<0) {
            return retval;
        }
/*
        printf("dF1\n");
        for (i=0;i<jmi_init_opt->dF1_dv_n_nz;i++) {
            printf("%f\n",jmi_init_opt->dF1_dv[i]);
        }
*/
        /* Evaluate residual */
        retval = jmi_init_F1(jmi, jmi_init_opt->res_F1);
        if (retval<0) {
            return retval;
        }

        /* Initialize the gradient vector */
        for (i=0;i<jmi_init_opt->n_x;i++) {
            df[i] = 0.;
        }

        /* Compute gradient */
        for (i=0;i<jmi_init_opt->dF1_dv_n_nz;i++) {
            df[jmi_init_opt->dF1_dv_icol[i]-1] +=
                jmi_init_opt->dF1_dv[i]*
                jmi_init_opt->res_F1[jmi_init_opt->dF1_dv_irow[i]-1];
/*          printf("** %d %d %d %f %f \n",i,jmi_init_opt->dF1_dv_irow[i],jmi_init_opt->dF1_dv_icol[i],jmi_init_opt->dF1_dv[i],jmi_init_opt->res_F1[jmi_init_opt->dF1_dv_irow[i]-1]); */
        }

/*
        for(i=0;i<jmi_init_opt->n_x;i++) {
            printf("%f\n",df[i]);
        }
*/
    }
    return retval;

}