SlideShare a Scribd company logo
1 of 23
Download to read offline
DocEng2013, September 10– 13, 2013, Florence, Italy

Splitting Wide Tables Optimally
Mihai Bilauca

Patrick Healy

Department of Computer Science and Information Systems
University of Limerick, Ireland

Supported by Science Foundation Ireland under the research programme 01/P1.2/C009,
Mathematical Foundations, Practical Notations, and Tools for Reliable Flexible Software.
Splitting Wide Tables Optimally
Why this paper?
• Tables are widely used for presenting logical
relationships between data items;
• Widely spread WYSIWYG tools have poor support for
wide tables;
• Authoring tables is hard, time consuming and error
prone;
• Style manuals recommendations are not always
supported
• Very little research in this area
Splitting Wide Tables Optimally

Slide 2 of 23
A wide table split across multiple pages
Splitting Wide Tables Optimally

Slide 3 of 23
+ Zoom in

Grouping of data items increases readability
Splitting Wide Tables Optimally

Slide 4 of 23
Splitting Wide Tables Optimally
Style recommendations from Chicago Manual of Style
“For a two-page broadside table – which should be presented
on facing pages if at all possible – column heads need not be
repeated; for broadside tables that run beyond two pages,
column heads are repeated only on each new verso.
Where column heads are repeated, the table number and
“continued” should also appear.
For any table that is likely to run to more than one page, the
editor should specify whether continued lines and repeated
column heads will be needed and where footnotes should
appear (usually at the end of the table as a whole).”

Splitting Wide Tables Optimally

Slide 5 of 23
Splitting Wide Tables Optimally
Overview
We present MIP Solutions using OPL for 3 problems that occur
when splitting wide tables with the aim to minimize the effect
on the meaning of data:
1. Minimize Page Count
2. Minimize Page Count and Column Positioning
Changes
3. Minimize Page Count and Group Splitting

Report experimental results with IBM CPLEX 12.3
Conclusions
MIP – Mixed Integer Programming
OPL – Optimization Programming Language
Splitting Wide Tables Optimally

Slide 6 of 23
1.Minimum Page Count

Splitting Wide Tables Optimally

Slide 7 of 23
1.Minimum Page Count – OPL Model
dvar int+ pageSel[Pages] in 0..1;
dvar int+ X[Pages][Cols] in 0..1;
dexpr int pageCount = sum(p in Pages) pageSel[p];
minimize pageCount;
subject to
{
ct1: // select only one page for each column
forall(j in Cols)
sum(p in Pages) X[p][j] == 1;
ct2: // only columns that fit in the page
forall(p in Pages)
sum(j in Cols)
colW[j] / pageW ∗ X[p][j] <= pageSel[p];
}
Splitting Wide Tables Optimally

Slide 8 of 23
1.Minimum Page Count - Results
●

Page count can be reduced by 14% to 25%

●

The difficulty of the problem is not directly linked to the
problem size but to the data itself

Columns

10

20

30

40

50

60

PC

7

16

19

29

34

48

OPC

6

12

15

23

26

39

%Imp

14.28%

25.00%

21.05%

20.68%

23.52%

18.75%

Time

2.25

0.13

0.17

1.18

04.30

1.52

Building Table Formatting Tools

Slide 9 of 23
2.Minimum Page Count & Column
Positioning Changes

Splitting Wide Tables Optimally

Slide 10 of 23
2.Minimum Page Count & Column Positioning Changes
PageW: 490 points
colW : [210, 140, 210, 420, 280, 350, 70, 140, 140, 350]
7 pages : {210,140} {210} {420} {280} {350,70} {140,140}
{350}
Minimum 5 pages:
ColIdx : [1, 7, 8, 5, 2, 9, 6, 10, 3, 4]
Pages:
{210,280} {140,350} {420,70} {140,210} {350,140}
Minimum 5 pages and column position changes possDiff
colIdx : [1, 2, 3, 5, 4, 7, 6, 8, 9, 10]
Pages : {210,140} {210,280} {420,70} {350,140} {140,350}

Splitting Wide Tables Optimally

Slide 11 of 23
2.Minimum Page Count & Column Positioning Changes
dvar int+ pageSel[Pages] in 0..1;
dvar int+ pageIdx[Cols] in 0..1;
dvar int+ colIdx[Cols] in 0..1;
// check if j1 is placed on a page before j2
dexpr int posO[j1,j2 in Cols] = j1 <= j2−1;
dexpr int posN[j1,j2 in Cols] = (colIdx[j1]<=colIdx[j2]−1)
dexpr float posDiff = sum(j1,j2 in Cols : j2 < j1)
abs(posO[j1,j2] − posN[j1,j2]);
dexpr int pageCount = sum(p in Pages) pageSel[p];
// a, b, obj1Val variables are used for OPL flow control
minimize a * pageCount + b * posDiff;

Splitting Wide Tables Optimally

Slide 12 of 23
2.Minimum Page Count & Column Positioning Changes
subject to {
ct1: // do not exceed page width
forall(p in Pages)
sum(j in Cols)
colW[j]/(p==pageIdx[j]) / pageW <= pageSel[p];
ct2: // page and column indexes relationship
forall(ordered j1,j2 in Cols)
(pageIdx[j1]<=pageIdx[j2]-1) (colIdx[j1]<=colIdx[j2]-1) == 0;
ct3: // unique column index values
forall(ordered j1,j2 in Cols)
colIdx[j1]!=colIdx[j2];
// if the minimum page count obj1Val is set
// maintain this value for subsequent searches
ct4:
if (obj1Val >= 0 ) pageCount == obj1Val;
}
Splitting Wide Tables Optimally

Slide 13 of 23
2.Minimum Page Count & Column Positioning Changes
Results
●

Promising performance:
– 2.25s for minimizing a 10 column table with posDiff
33 down to 4, page count from 9 down to 8;
– 89s for minimizing a 20 column table with posDiff
194 down to 4, page count from 13 down to 11;

●

Computational time increases with columns number

●

The data instance can have no better solutions

Building Table Formatting Tools

Slide 14 of 23
3.Minimum Page Count & Group Splitting

Splitting Wide Tables Optimally

Slide 15 of 23
3.Minimum Page Count & Group Splitting
User specifies which columns should preferably be
kept together
PageW: 490 points
colW : [210, 140, 210, 420, 280, 350, 70, 140, 140, 350]
7 pages: {210,140} {210} {420} {280} {350,70} {140,140}
{350}
Minimum 5 pages:
ColIdx:[3, 5, 4, 7, 10, 6, 8, 1, 2, 9]
Pages: {210,280} {420} {70,350} {350,140} {210,140,140}
Group columns 2,3 and 7:
colIdx:[2, 3, 7, 4, 9, 10, 6, 8, 1, 5]
Pages :{140,210,70} {420} {140,350} {350,140} {210,280}
Splitting Wide Tables Optimally

Slide 16 of 23
3.Minimum Page Count & Group Splitting
int colG[Cols] = ...;// column groups
dvar int+ pageSel[Pages] in 0..1;
dvar int+ pageIdx[Cols] in 0..1;
// find the first column of the group
int gFirstCol[g in groups] =
first({j | j in Cols : colG[j] == g});
// counts how many columns of a group are on a
// different page than the first group’s column
dexpr int gSplit[g in groups ] =
sum(j in Cols : colG[j] == g )
(pageIdx[j] != pageIdx[gFirstCol[g]]);
dexpr int gSplitCount = sum(g in groups)
(gSplit[g] >= 1 );
dexpr int pageCount = sum(p in Pages) pageSel[p];
Splitting Wide Tables Optimally

Slide 17 of 23
3.Minimum Page Count & Group Splitting
// a, b, obj1Val variables are used for OPL flow control
minimize a * pageCount + b * posDiff;
subject to {
ct1: // do not exceed page width
forall(p in Pages)
sum(j in Cols)
colW[j] * (p==pageIdx[j])/ pageW <= pageSel[p];
// if the minimum page count obj1Val is set
// maintain this value for subsequent searches
ct2:
if (obj1Val >= 0 ) pageCount == obj1Val;
}

Splitting Wide Tables Optimally

Slide 18 of 23
3.Minimum Page Count & Group Splitting Model
Results
●

●

Promising performance:
●
1m for a 20 column table with 3 groups, none
split, page count from 12 down to 9;
●
2m for 30-40 column tables but time increased
up to 12m when the number of groups
increased;
Computational time increases with columns and
groups number

●

Some relaxed solutions can be preffered

Building Table Formatting Tools

Slide 19 of 23
Conclusions

Splitting Wide Tables Optimally

Slide 20 of 23
Conclusions
•

•

•

Optimal arrangement of columns such that the
page count is minimized when splitting wide tables
can be achieved in relatively short running time; for
tables with 60 columns a solution has been found
in less than 2s;
If additional criteria are added, for example
minimizing the number of relative column positions
changes,the problems become harder as the
number of columns increase;
the difficulty of the problems not only depends on
the problem size but on the complexity of the data;

Splitting Wide Tables Optimally

Slide 21 of 23
Ongoing work
Minimizing the overall page count when a large table
containing text is displayed on fixed size pages and
neither column widths nor row heights are known in
advance.

Splitting Wide Tables Optimally

Slide 22 of 23
Thank you!

www.tabularlayout.org

Splitting Wide Tables Optimally

Slide 23 of 23

More Related Content

Viewers also liked

2013: This Year in Social by Anchor Media
2013: This Year in Social by Anchor Media2013: This Year in Social by Anchor Media
2013: This Year in Social by Anchor Medialbsilva26
 
Embedded programming in RTOS VxWorks for PROFIBUS VME interface card
Embedded programming in RTOS VxWorks for PROFIBUS VME interface cardEmbedded programming in RTOS VxWorks for PROFIBUS VME interface card
Embedded programming in RTOS VxWorks for PROFIBUS VME interface cardRinku Chandolia
 
Aprendizaje enseñanza y propuesta pedagógica
Aprendizaje enseñanza y propuesta pedagógicaAprendizaje enseñanza y propuesta pedagógica
Aprendizaje enseñanza y propuesta pedagógicaMineducyt El Salvador
 
5 relaciones comunidad, escuela, familia
5 relaciones comunidad, escuela, familia5 relaciones comunidad, escuela, familia
5 relaciones comunidad, escuela, familiaMineducyt El Salvador
 
Segundo parcial didáctica de la educación superior l sin contestar
Segundo  parcial didáctica de la educación superior l sin contestarSegundo  parcial didáctica de la educación superior l sin contestar
Segundo parcial didáctica de la educación superior l sin contestarMineducyt El Salvador
 
Segundo parcial didáctica de la educación superior l contestado
Segundo  parcial didáctica de la educación superior l  contestadoSegundo  parcial didáctica de la educación superior l  contestado
Segundo parcial didáctica de la educación superior l contestadoMineducyt El Salvador
 

Viewers also liked (10)

The Software House
The Software House The Software House
The Software House
 
2013: This Year in Social by Anchor Media
2013: This Year in Social by Anchor Media2013: This Year in Social by Anchor Media
2013: This Year in Social by Anchor Media
 
Raghunath
RaghunathRaghunath
Raghunath
 
Embedded programming in RTOS VxWorks for PROFIBUS VME interface card
Embedded programming in RTOS VxWorks for PROFIBUS VME interface cardEmbedded programming in RTOS VxWorks for PROFIBUS VME interface card
Embedded programming in RTOS VxWorks for PROFIBUS VME interface card
 
Confidence = 7 Points of Entanglement 01
Confidence = 7 Points of Entanglement 01Confidence = 7 Points of Entanglement 01
Confidence = 7 Points of Entanglement 01
 
Aprendizaje enseñanza y propuesta pedagógica
Aprendizaje enseñanza y propuesta pedagógicaAprendizaje enseñanza y propuesta pedagógica
Aprendizaje enseñanza y propuesta pedagógica
 
Pp tla función productiva
Pp tla función productivaPp tla función productiva
Pp tla función productiva
 
5 relaciones comunidad, escuela, familia
5 relaciones comunidad, escuela, familia5 relaciones comunidad, escuela, familia
5 relaciones comunidad, escuela, familia
 
Segundo parcial didáctica de la educación superior l sin contestar
Segundo  parcial didáctica de la educación superior l sin contestarSegundo  parcial didáctica de la educación superior l sin contestar
Segundo parcial didáctica de la educación superior l sin contestar
 
Segundo parcial didáctica de la educación superior l contestado
Segundo  parcial didáctica de la educación superior l  contestadoSegundo  parcial didáctica de la educación superior l  contestado
Segundo parcial didáctica de la educación superior l contestado
 

Similar to DocEng2013 Bilauca Healy - Splitting Wide Tables Optimally

You might be paying too much for BigQuery
You might be paying too much for BigQueryYou might be paying too much for BigQuery
You might be paying too much for BigQueryRyuji Tamagawa
 
Crosstalk
CrosstalkCrosstalk
Crosstalkcdhowe
 
Performance Tuning Oracle's BI Applications
Performance Tuning Oracle's BI ApplicationsPerformance Tuning Oracle's BI Applications
Performance Tuning Oracle's BI ApplicationsKPI Partners
 
June 05 P2
June 05 P2June 05 P2
June 05 P2Samimvez
 
Autocad commands for civil and mechanical Download
Autocad commands for civil and mechanical DownloadAutocad commands for civil and mechanical Download
Autocad commands for civil and mechanical Downloadcouponsavan
 
Auto cad shortcuts
Auto cad shortcutsAuto cad shortcuts
Auto cad shortcutsshah shreeji
 
AutoCAD Shortcut List
AutoCAD Shortcut ListAutoCAD Shortcut List
AutoCAD Shortcut ListAkash Patel
 
Auto cad shortcuts
Auto cad shortcutsAuto cad shortcuts
Auto cad shortcutsMintu Kumar
 
Auto cad command_shortcuts
Auto cad command_shortcutsAuto cad command_shortcuts
Auto cad command_shortcutsfajil Siddiki
 
mongoDB Project: Relational databases & Document-Oriented databases
mongoDB Project: Relational databases & Document-Oriented databasesmongoDB Project: Relational databases & Document-Oriented databases
mongoDB Project: Relational databases & Document-Oriented databasesStratos Gounidellis
 
R10 Unit 3 Array For Library System
R10 Unit 3 Array For Library SystemR10 Unit 3 Array For Library System
R10 Unit 3 Array For Library SystemChristina Martin
 
MongoDB Project: Relational databases to Document-Oriented databases
MongoDB Project: Relational databases to Document-Oriented databasesMongoDB Project: Relational databases to Document-Oriented databases
MongoDB Project: Relational databases to Document-Oriented databasesLamprini Koutsokera
 
GRAPHICAL STRUCTURES in our lives
GRAPHICAL STRUCTURES in our livesGRAPHICAL STRUCTURES in our lives
GRAPHICAL STRUCTURES in our livesxryuseix
 
Sentimental analysis of financial articles using neural network
Sentimental analysis of financial articles using neural networkSentimental analysis of financial articles using neural network
Sentimental analysis of financial articles using neural networkBhavyateja Potineni
 
Auto cad commed
Auto cad commedAuto cad commed
Auto cad commed4CS Lahore
 

Similar to DocEng2013 Bilauca Healy - Splitting Wide Tables Optimally (20)

You might be paying too much for BigQuery
You might be paying too much for BigQueryYou might be paying too much for BigQuery
You might be paying too much for BigQuery
 
Crosstalk
CrosstalkCrosstalk
Crosstalk
 
Less08 Schema
Less08 SchemaLess08 Schema
Less08 Schema
 
Performance Tuning Oracle's BI Applications
Performance Tuning Oracle's BI ApplicationsPerformance Tuning Oracle's BI Applications
Performance Tuning Oracle's BI Applications
 
Os8
Os8Os8
Os8
 
June 05 P2
June 05 P2June 05 P2
June 05 P2
 
Autocad commands for civil and mechanical Download
Autocad commands for civil and mechanical DownloadAutocad commands for civil and mechanical Download
Autocad commands for civil and mechanical Download
 
Auto cad shortcuts
Auto cad shortcutsAuto cad shortcuts
Auto cad shortcuts
 
AutoCAD Shortcut List
AutoCAD Shortcut ListAutoCAD Shortcut List
AutoCAD Shortcut List
 
Auto cad shortcuts
Auto cad shortcutsAuto cad shortcuts
Auto cad shortcuts
 
Auto cad shortcuts
Auto cad shortcutsAuto cad shortcuts
Auto cad shortcuts
 
Auto cad shortcuts
Auto cad shortcutsAuto cad shortcuts
Auto cad shortcuts
 
Auto cad command_shortcuts
Auto cad command_shortcutsAuto cad command_shortcuts
Auto cad command_shortcuts
 
Auto cad command_shortcuts
Auto cad command_shortcutsAuto cad command_shortcuts
Auto cad command_shortcuts
 
mongoDB Project: Relational databases & Document-Oriented databases
mongoDB Project: Relational databases & Document-Oriented databasesmongoDB Project: Relational databases & Document-Oriented databases
mongoDB Project: Relational databases & Document-Oriented databases
 
R10 Unit 3 Array For Library System
R10 Unit 3 Array For Library SystemR10 Unit 3 Array For Library System
R10 Unit 3 Array For Library System
 
MongoDB Project: Relational databases to Document-Oriented databases
MongoDB Project: Relational databases to Document-Oriented databasesMongoDB Project: Relational databases to Document-Oriented databases
MongoDB Project: Relational databases to Document-Oriented databases
 
GRAPHICAL STRUCTURES in our lives
GRAPHICAL STRUCTURES in our livesGRAPHICAL STRUCTURES in our lives
GRAPHICAL STRUCTURES in our lives
 
Sentimental analysis of financial articles using neural network
Sentimental analysis of financial articles using neural networkSentimental analysis of financial articles using neural network
Sentimental analysis of financial articles using neural network
 
Auto cad commed
Auto cad commedAuto cad commed
Auto cad commed
 

Recently uploaded

Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Spring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfSpring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfAnna Loughnan Colquhoun
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
RAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIRAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIUdaiappa Ramachandran
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?SANGHEE SHIN
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum ComputingGDSC PJATK
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataCloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataSafe Software
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
20200723_insight_release_plan
20200723_insight_release_plan20200723_insight_release_plan
20200723_insight_release_planJamie (Taka) Wang
 
Things you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceThings you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceMartin Humpolec
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 

Recently uploaded (20)

Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Spring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfSpring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdf
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
RAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIRAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AI
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum Computing
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataCloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
20200723_insight_release_plan
20200723_insight_release_plan20200723_insight_release_plan
20200723_insight_release_plan
 
Things you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceThings you didn't know you can use in your Salesforce
Things you didn't know you can use in your Salesforce
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 

DocEng2013 Bilauca Healy - Splitting Wide Tables Optimally

  • 1. DocEng2013, September 10– 13, 2013, Florence, Italy Splitting Wide Tables Optimally Mihai Bilauca Patrick Healy Department of Computer Science and Information Systems University of Limerick, Ireland Supported by Science Foundation Ireland under the research programme 01/P1.2/C009, Mathematical Foundations, Practical Notations, and Tools for Reliable Flexible Software.
  • 2. Splitting Wide Tables Optimally Why this paper? • Tables are widely used for presenting logical relationships between data items; • Widely spread WYSIWYG tools have poor support for wide tables; • Authoring tables is hard, time consuming and error prone; • Style manuals recommendations are not always supported • Very little research in this area Splitting Wide Tables Optimally Slide 2 of 23
  • 3. A wide table split across multiple pages Splitting Wide Tables Optimally Slide 3 of 23
  • 4. + Zoom in Grouping of data items increases readability Splitting Wide Tables Optimally Slide 4 of 23
  • 5. Splitting Wide Tables Optimally Style recommendations from Chicago Manual of Style “For a two-page broadside table – which should be presented on facing pages if at all possible – column heads need not be repeated; for broadside tables that run beyond two pages, column heads are repeated only on each new verso. Where column heads are repeated, the table number and “continued” should also appear. For any table that is likely to run to more than one page, the editor should specify whether continued lines and repeated column heads will be needed and where footnotes should appear (usually at the end of the table as a whole).” Splitting Wide Tables Optimally Slide 5 of 23
  • 6. Splitting Wide Tables Optimally Overview We present MIP Solutions using OPL for 3 problems that occur when splitting wide tables with the aim to minimize the effect on the meaning of data: 1. Minimize Page Count 2. Minimize Page Count and Column Positioning Changes 3. Minimize Page Count and Group Splitting Report experimental results with IBM CPLEX 12.3 Conclusions MIP – Mixed Integer Programming OPL – Optimization Programming Language Splitting Wide Tables Optimally Slide 6 of 23
  • 7. 1.Minimum Page Count Splitting Wide Tables Optimally Slide 7 of 23
  • 8. 1.Minimum Page Count – OPL Model dvar int+ pageSel[Pages] in 0..1; dvar int+ X[Pages][Cols] in 0..1; dexpr int pageCount = sum(p in Pages) pageSel[p]; minimize pageCount; subject to { ct1: // select only one page for each column forall(j in Cols) sum(p in Pages) X[p][j] == 1; ct2: // only columns that fit in the page forall(p in Pages) sum(j in Cols) colW[j] / pageW ∗ X[p][j] <= pageSel[p]; } Splitting Wide Tables Optimally Slide 8 of 23
  • 9. 1.Minimum Page Count - Results ● Page count can be reduced by 14% to 25% ● The difficulty of the problem is not directly linked to the problem size but to the data itself Columns 10 20 30 40 50 60 PC 7 16 19 29 34 48 OPC 6 12 15 23 26 39 %Imp 14.28% 25.00% 21.05% 20.68% 23.52% 18.75% Time 2.25 0.13 0.17 1.18 04.30 1.52 Building Table Formatting Tools Slide 9 of 23
  • 10. 2.Minimum Page Count & Column Positioning Changes Splitting Wide Tables Optimally Slide 10 of 23
  • 11. 2.Minimum Page Count & Column Positioning Changes PageW: 490 points colW : [210, 140, 210, 420, 280, 350, 70, 140, 140, 350] 7 pages : {210,140} {210} {420} {280} {350,70} {140,140} {350} Minimum 5 pages: ColIdx : [1, 7, 8, 5, 2, 9, 6, 10, 3, 4] Pages: {210,280} {140,350} {420,70} {140,210} {350,140} Minimum 5 pages and column position changes possDiff colIdx : [1, 2, 3, 5, 4, 7, 6, 8, 9, 10] Pages : {210,140} {210,280} {420,70} {350,140} {140,350} Splitting Wide Tables Optimally Slide 11 of 23
  • 12. 2.Minimum Page Count & Column Positioning Changes dvar int+ pageSel[Pages] in 0..1; dvar int+ pageIdx[Cols] in 0..1; dvar int+ colIdx[Cols] in 0..1; // check if j1 is placed on a page before j2 dexpr int posO[j1,j2 in Cols] = j1 <= j2−1; dexpr int posN[j1,j2 in Cols] = (colIdx[j1]<=colIdx[j2]−1) dexpr float posDiff = sum(j1,j2 in Cols : j2 < j1) abs(posO[j1,j2] − posN[j1,j2]); dexpr int pageCount = sum(p in Pages) pageSel[p]; // a, b, obj1Val variables are used for OPL flow control minimize a * pageCount + b * posDiff; Splitting Wide Tables Optimally Slide 12 of 23
  • 13. 2.Minimum Page Count & Column Positioning Changes subject to { ct1: // do not exceed page width forall(p in Pages) sum(j in Cols) colW[j]/(p==pageIdx[j]) / pageW <= pageSel[p]; ct2: // page and column indexes relationship forall(ordered j1,j2 in Cols) (pageIdx[j1]<=pageIdx[j2]-1) (colIdx[j1]<=colIdx[j2]-1) == 0; ct3: // unique column index values forall(ordered j1,j2 in Cols) colIdx[j1]!=colIdx[j2]; // if the minimum page count obj1Val is set // maintain this value for subsequent searches ct4: if (obj1Val >= 0 ) pageCount == obj1Val; } Splitting Wide Tables Optimally Slide 13 of 23
  • 14. 2.Minimum Page Count & Column Positioning Changes Results ● Promising performance: – 2.25s for minimizing a 10 column table with posDiff 33 down to 4, page count from 9 down to 8; – 89s for minimizing a 20 column table with posDiff 194 down to 4, page count from 13 down to 11; ● Computational time increases with columns number ● The data instance can have no better solutions Building Table Formatting Tools Slide 14 of 23
  • 15. 3.Minimum Page Count & Group Splitting Splitting Wide Tables Optimally Slide 15 of 23
  • 16. 3.Minimum Page Count & Group Splitting User specifies which columns should preferably be kept together PageW: 490 points colW : [210, 140, 210, 420, 280, 350, 70, 140, 140, 350] 7 pages: {210,140} {210} {420} {280} {350,70} {140,140} {350} Minimum 5 pages: ColIdx:[3, 5, 4, 7, 10, 6, 8, 1, 2, 9] Pages: {210,280} {420} {70,350} {350,140} {210,140,140} Group columns 2,3 and 7: colIdx:[2, 3, 7, 4, 9, 10, 6, 8, 1, 5] Pages :{140,210,70} {420} {140,350} {350,140} {210,280} Splitting Wide Tables Optimally Slide 16 of 23
  • 17. 3.Minimum Page Count & Group Splitting int colG[Cols] = ...;// column groups dvar int+ pageSel[Pages] in 0..1; dvar int+ pageIdx[Cols] in 0..1; // find the first column of the group int gFirstCol[g in groups] = first({j | j in Cols : colG[j] == g}); // counts how many columns of a group are on a // different page than the first group’s column dexpr int gSplit[g in groups ] = sum(j in Cols : colG[j] == g ) (pageIdx[j] != pageIdx[gFirstCol[g]]); dexpr int gSplitCount = sum(g in groups) (gSplit[g] >= 1 ); dexpr int pageCount = sum(p in Pages) pageSel[p]; Splitting Wide Tables Optimally Slide 17 of 23
  • 18. 3.Minimum Page Count & Group Splitting // a, b, obj1Val variables are used for OPL flow control minimize a * pageCount + b * posDiff; subject to { ct1: // do not exceed page width forall(p in Pages) sum(j in Cols) colW[j] * (p==pageIdx[j])/ pageW <= pageSel[p]; // if the minimum page count obj1Val is set // maintain this value for subsequent searches ct2: if (obj1Val >= 0 ) pageCount == obj1Val; } Splitting Wide Tables Optimally Slide 18 of 23
  • 19. 3.Minimum Page Count & Group Splitting Model Results ● ● Promising performance: ● 1m for a 20 column table with 3 groups, none split, page count from 12 down to 9; ● 2m for 30-40 column tables but time increased up to 12m when the number of groups increased; Computational time increases with columns and groups number ● Some relaxed solutions can be preffered Building Table Formatting Tools Slide 19 of 23
  • 20. Conclusions Splitting Wide Tables Optimally Slide 20 of 23
  • 21. Conclusions • • • Optimal arrangement of columns such that the page count is minimized when splitting wide tables can be achieved in relatively short running time; for tables with 60 columns a solution has been found in less than 2s; If additional criteria are added, for example minimizing the number of relative column positions changes,the problems become harder as the number of columns increase; the difficulty of the problems not only depends on the problem size but on the complexity of the data; Splitting Wide Tables Optimally Slide 21 of 23
  • 22. Ongoing work Minimizing the overall page count when a large table containing text is displayed on fixed size pages and neither column widths nor row heights are known in advance. Splitting Wide Tables Optimally Slide 22 of 23
  • 23. Thank you! www.tabularlayout.org Splitting Wide Tables Optimally Slide 23 of 23