Changeset f6d90ed in mmcs
- Timestamp:
- Nov 4, 2016, 1:35:29 PM (8 years ago)
- Branches:
- master
- Children:
- 9b2ca78
- Parents:
- b9d5f5e
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
mainwindow.C
rb9d5f5e rf6d90ed 2373 2373 QTableWidget *tw = findChild<QTableWidget *>("MatrizAn"); 2374 2374 restarIdentidadAn(tw); 2375 totalesEncadenamientoMa(); 2375 2376 } 2376 2377 … … 2484 2485 else 2485 2486 { 2486 total_ma = MatrixMa.sum();2487 2487 QTableWidget *tablaMa = new QTableWidget; 2488 2488 tablaMa->setObjectName("MatrizMa"); … … 2981 2981 opcionCuentaEncadenamientos=2;//Se establece un valor para la variable de la opcion 2982 2982 } 2983 2984 2983 } 2985 2984 … … 3214 3213 enTable->setItem(columna,3,valorAdelante); 3215 3214 //Se estiman los clasificadores 3216 determinarClasificador(enTable,columna,j-2,t otal_ma);3215 determinarClasificador(enTable,columna,j-2,titulo); 3217 3216 columna++; 3218 3217 } … … 3268 3267 @param <index> Recibe la ubicación del vector de donde se extraerá el valor 3269 3268 */ 3270 void MainWindow::estimarClasificador(double &fila, double &columna, int index, double total) 3271 { 3272 qDebug("Clasificadores"); 3273 qDebug()<<vFila; 3274 qDebug()<<vColumna; 3269 void MainWindow::estimarClasificador(double &fila, double &columna, int index, QString nombre) 3270 { 3275 3271 //Se buscan los botones para saber si se estimó por coeficientes técnicos o Ma 3276 3272 QRadioButton *rbCT = findChild<QRadioButton *>("CTButton"); … … 3299 3295 else if(rbMa->isChecked()) 3300 3296 { 3301 columna = (vFila.at(index)*vFila.count())/total; 3302 fila = (vColumna.at(index)*vColumna.count())/total; 3303 } 3304 } 3305 3306 3307 /** 3308 @brief Función que hace el trabajo de calcular y determinar los clasificadores 3297 columna = (vFila.at(index)*vFila.count())/totalCuentasEncadenamiento[nombre][0]; 3298 qDebug()<<"Columna:"<<vFila.at(index)<<"*"<<vFila.count()<<"/"<<totalCuentasEncadenamiento[nombre][0]; 3299 fila = (vColumna.at(index)*vColumna.count())/totalCuentasEncadenamiento[nombre][1]; 3300 qDebug()<<"Fila:"<<vColumna.at(index)<<"*"<<vColumna.count()<<"/"<<totalCuentasEncadenamiento[nombre][1]; 3301 } 3302 } 3303 3304 3305 /** 3306 @ brief Función que hace el trabajo de calcular y determinar los clasificadores 3309 3307 @date 08/09/2016 3310 3308 @author Rodrigo Boet … … 3313 3311 @param <element> Recibe el indice de donde se extraerá el valor para calcular el clasificador 3314 3312 */ 3315 void MainWindow::determinarClasificador(QTableWidget *tw, int index_table, int element, double total)3313 void MainWindow::determinarClasificador(QTableWidget *tw, int index_table, int element, QString nombre) 3316 3314 { 3317 3315 QString value; … … 3319 3317 double elementColumna; 3320 3318 double elementFila; 3321 estimarClasificador(elementFila,elementColumna,element, total);3319 estimarClasificador(elementFila,elementColumna,element,nombre); 3322 3320 //Elementos de la clasificación columna 3323 3321 QTableWidgetItem *clasificacionColumna = new QTableWidgetItem(QString::number(elementColumna,'f',precission)); … … 3426 3424 for(int i=2;i<countEndogena;i++) 3427 3425 { 3426 QString title = tw->item(i,0)->text(); 3428 3427 double sumaColumna = 0; 3429 3428 double sumaFila = 0; … … 3450 3449 enTable->setItem(columna,3,valorAdelante); 3451 3450 //Se estiman los clasificadores 3452 determinarClasificador(enTable,columna,i-2,t otal_ma);3451 determinarClasificador(enTable,columna,i-2,title); 3453 3452 columna++; 3454 3453 } … … 3628 3627 QVector<double> x, y; 3629 3628 QStringList myHtml; 3630 myHtml.append("<table>"); 3631 for(int i=0;i<row;i++) 3632 { 3633 myHtml.append("<tr>"); 3634 for(int j=0;j<col;j++) 3635 { 3636 QString item = tw->item(i,j)->text(); 3637 QString limit = tw->item(i,0)->text(); 3638 //Comprende las filas superiores 3639 if(i==0 and j>1) 3640 { 3641 myHtml.append("<td align='center' style='font-weight:bold;background-color:LightGrey;'>"+item+"</td>"); 3642 } 3643 //Comprende las cuentas en la parte izquierda 3644 else if((i>0 and !limit.isEmpty()) and j==0) 3645 { 3646 myHtml.append("<td style='background-color:steelblue;color:white'>"+item+"</td>"); 3647 } 3648 //Comprende las subcuentas en la parte izquierda 3649 else if((i>0 and !limit.isEmpty())and j==1) 3650 { 3651 myHtml.append("<td align='center' style='background-color:LightGrey'>"+item+"</td>"); 3652 } 3653 //Comprende la última fila 3654 else if(i>0 and limit.isEmpty()) 3655 { 3656 myHtml.append("<td align='center' style='font-weight:bold'>"+item+"</td>"); 3657 } 3658 //Comprende el resto de los elementos 3659 else 3660 { 3661 myHtml.append("<td align='center'>"+item+"</td>"); 3662 } 3663 if((i>0 and i<row-1) and (j>3 and j<col-1)) 3664 { 3665 QString titem = Separador(tw->item(i,j),true); 3666 double valor = titem.toDouble(); 3667 if(j==4) 3629 QStringList encadenamientos_totales; 3630 int end = 0; 3631 if(report) 3632 { 3633 myHtml.append("<table style='font-size:small;'><caption align='center'><h3>Encadenamientos</h3></caption>"); 3634 encadenamientos_totales.append("<table style='font-size:small;'><caption align='center'><h3>Totales por Cuenta</h3></caption><tr><td></td><td></td>"); 3635 encadenamientos_totales.append("<td align='center' style='font-weight:bold;background-color:LightGrey;'>Encadenamiento Parcial hacia atrás</td>"); 3636 encadenamientos_totales.append("<td align='center' style='font-weight:bold;background-color:LightGrey;'>Encadenamiento Parcial hacia adelante</td></tr><tr>"); 3637 for(int i=0;i<row;i++) 3638 { 3639 myHtml.append("<tr>"); 3640 if(end!=0) 3641 { 3642 encadenamientos_totales.append("<tr>"); 3643 } 3644 for(int j=0;j<col;j++) 3645 { 3646 QString item = tw->item(i,j)->text(); 3647 QString limit = tw->item(i,0)->text(); 3648 //Comprende las filas superiores 3649 if(i==0 and j>1) 3668 3650 { 3669 x.append(valor);3651 myHtml.append("<td align='center' style='font-weight:bold;background-color:LightGrey;'>"+item+"</td>"); 3670 3652 } 3653 //Comprende las cuentas en la parte izquierda 3654 else if((i>0 and !limit.isEmpty()) and j==0) 3655 { 3656 myHtml.append("<td style='background-color:steelblue;color:white'>"+item+"</td>"); 3657 } 3658 //Comprende las subcuentas en la parte izquierda 3659 else if((i>0 and !limit.isEmpty())and j==1) 3660 { 3661 myHtml.append("<td align='center' style='background-color:LightGrey'>"+item+"</td>"); 3662 } 3663 //Comprende la última fila 3664 else if(i>0 and limit.isEmpty()) 3665 { 3666 if(end==0) 3667 { 3668 end = i; 3669 } 3670 if(j==1) 3671 { 3672 encadenamientos_totales.append("<td align='center' style='font-weight:bold;background-color:steelblue;'>"+item+"</td>"); 3673 } 3674 else 3675 { 3676 encadenamientos_totales.append("<td align='center' style='font-weight:bold'>"+item+"</td>"); 3677 } 3678 } 3679 //Comprende el resto de los elementos 3671 3680 else 3672 3681 { 3673 y.append(valor);3682 myHtml.append("<td align='center'>"+item+"</td>"); 3674 3683 } 3675 } 3676 } 3677 myHtml.append("</tr>"); 3678 } 3679 myHtml.append("</table>"); 3684 if((i>0 and i<row-1) and (j>3 and j<col-1)) 3685 { 3686 QString titem = Separador(tw->item(i,j),true); 3687 double valor = titem.toDouble(); 3688 if(j==4) 3689 { 3690 x.append(valor); 3691 } 3692 else 3693 { 3694 y.append(valor); 3695 } 3696 } 3697 } 3698 myHtml.append("</tr>"); 3699 if(end!=0) 3700 { 3701 encadenamientos_totales.append("</tr>"); 3702 } 3703 } 3704 myHtml.append("</table>"); 3705 encadenamientos_totales.append("</table>"); 3706 } 3680 3707 //Máximos y Mínimos 3681 3708 double max = 3; … … 3753 3780 //Se generan los cambios en el grafico 3754 3781 customPlot->replot(); 3755 3756 3782 QString reportText; 3757 3783 //Se evalua si es un reporte 3758 3784 if(report){ 3759 3785 QTextDocument report; 3760 report.setHtml(myHtml.join("") );3786 report.setHtml(myHtml.join("")+encadenamientos_totales.join("")); 3761 3787 QTextCursor cursor(&report); 3762 3788 QPixmap pm = customPlot->toPixmap(); … … 3764 3790 cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor); 3765 3791 cursor.insertImage(img); 3766 QPrinter printer( QPrinter::HighResolution ); 3767 printer.setOutputFileName(filename); 3768 printer.setOutputFormat(QPrinter::PdfFormat); 3769 report.print(&printer); 3792 QPdfWriter pdf(filename); 3793 report.print(&pdf); 3770 3794 reportText = "Se generó con éxito el reporte\n en "+filename; 3771 3795 } … … 3932 3956 @author Rodrigo Boet 3933 3957 @param <tw> Recibe el widget de la tabla 3934 @param <clasico> Recibe un booleano (Verdadero si para el modelo clásico, Falso en caso contrario)3958 @param <clasico> Recibe un int para buscar la tabla 3935 3959 */ 3936 3960 void MainWindow::calcularEscenario(int clasico) … … 6527 6551 } 6528 6552 } 6553 6554 /** 6555 @brief Función para obtener los totales de encademientos de Ma y almacenarlos en un diccionario 6556 @date 04/11/2015 6557 @author Rodrigo Boet 6558 */ 6559 void MainWindow::totalesEncadenamientoMa() 6560 { 6561 QTableWidget *tw = findChild<QTableWidget *>("MatrizMa"); 6562 int count = tw->rowCount(); 6563 for(int i=2;i<count;i++) 6564 { 6565 QString title = tw->item(i,0)->text(); 6566 double sumaColumna = 0; 6567 double sumaFila = 0; 6568 double EncadenamientoAtras; 6569 double EncadenamientoAdelante; 6570 for(int j=2;j<count;j++) 6571 { 6572 EncadenamientoAtras = MatrixMa(j-2,i-2); 6573 EncadenamientoAdelante = MatrixMa(i-2,j-2); 6574 sumaColumna+=EncadenamientoAtras; 6575 sumaFila+=EncadenamientoAdelante; 6576 } 6577 if(!totalCuentasEncadenamiento.contains(title)) 6578 { 6579 QVector<double> valores; 6580 valores.append(sumaColumna); 6581 valores.append(sumaFila); 6582 totalCuentasEncadenamiento.insert(title,valores); 6583 } 6584 else 6585 { 6586 totalCuentasEncadenamiento[title][0]+=sumaColumna; 6587 totalCuentasEncadenamiento[title][1]+=sumaFila; 6588 } 6589 } 6590 qDebug()<<totalCuentasEncadenamiento; 6591 } -
mainwindow.H
r8f1b6a6 rf6d90ed 123 123 QMap<int, QMap<QString,QStringList> > diccCuentasEncadenamientos; 124 124 QMap<QString,double> totalCuentas; 125 QMap<QString,QVector<double> > totalCuentasEncadenamiento; 125 126 126 127 QStringList ComponentesEndogenos; … … 155 156 Eigen::MatrixXd C; 156 157 157 double total_ma;158 159 158 QString csvFilePath; 160 159 char csvSeparator; … … 297 296 void estimarVIFVC(); 298 297 //Función para estimar la clasificación de las cuentas por CW o Rassmusen 299 void estimarClasificador(double &, double &, int index, double total = 0);298 void estimarClasificador(double &, double &, int index, QString nombre); 300 299 //Función para determinar los clasificadores 301 void determinarClasificador(QTableWidget *, int index_table, int element, double total = 0);300 void determinarClasificador(QTableWidget *, int index_table, int element, QString nombre); 302 301 303 302 //Función para validar la cuenta producto/actividad … … 310 309 //Funciones referentes al impacto a corto plazo 311 310 Eigen::MatrixXd obtenerMatriz(QString); 311 312 //Funcion para crear un diccionario con los totales por cuenta en Ma 313 void totalesEncadenamientoMa(); 312 314 313 315 //Funcion para crear una nueva pestaña
Note: See TracChangeset
for help on using the changeset viewer.