|
From: <koc...@us...> - 2009-10-04 10:13:13
|
Revision: 400
http://scstudio.svn.sourceforge.net/scstudio/?rev=400&view=rev
Author: kocianon
Date: 2009-10-04 10:13:06 +0000 (Sun, 04 Oct 2009)
Log Message:
-----------
compilation fix
Modified Paths:
--------------
trunk/src/check/time/bmsc_tightening.h
trunk/src/check/time/time_consistency.cpp
trunk/src/data/time.h
trunk/tests/CMakeLists.txt
trunk/tests/bmsc_tightening_test.cpp
trunk/tests/incon_test.cpp
trunk/tests/tighten_msc_test.cpp
Modified: trunk/src/check/time/bmsc_tightening.h
===================================================================
--- trunk/src/check/time/bmsc_tightening.h 2009-10-04 07:31:34 UTC (rev 399)
+++ trunk/src/check/time/bmsc_tightening.h 2009-10-04 10:13:06 UTC (rev 400)
@@ -1,6 +1,7 @@
#ifndef _TIME_TIGHTENING_H_
#define _TIME_TIGHTENING_H_
#include "time_consistency.h"
+#include "check/pseudocode/utils.h"
typedef std::pair<Event*,Event*> EventPair;
typedef std::list<EventPair> EventPairsList;
@@ -113,7 +114,7 @@
MscTimeIntervalSetD max_intrset;
MscTimeIntervalSetD evts_intrset;
- z.insert(MscTimeIntervalD(0,0));
+ max_intrset.insert(MscTimeIntervalD(0,0));
EventPairsList pairs;
@@ -142,8 +143,17 @@
// assign tightened interval
interval = MscTimeIntervalSetD::set_intersection(interval,max_intrset);
// TODO:
+ EventPVector all_events = get_events();
+ EventPVector::iterator it_v;
+
// for all a \in events
// for all b \in a.get_next do
+ for(it_v = all_events.begin();it_v!=all_events.end();it_v++)
+ {
+ EventPSet succs = EventFirstSuccessors::get(*it_v);
+ EventPSet::iterator it_succ;
+ for(it_succ=succs.begin();it_succ!=succs.end();it_succ++)
+ {
EventPList::iterator it_min_events;
EventPList::iterator it_max_events;
MscTimeIntervalSetD path_union;
@@ -153,7 +163,7 @@
for(it_max_events=m_maxs.begin();it_max_events!=m_maxs.end();it_max_events++)
{
- if(is_leq(*it_min_events,a)&&is_leq(b,*it_max_events))
+ if(is_leq(*it_min_events,*it_v)&&is_leq(*it_succ,*it_max_events))
continue;
path_union=MscTimeIntervalSetD::set_union(path_union,
t_matrix(get_number(*it_min_events),get_number(*it_max_events))
@@ -162,14 +172,15 @@
}
MscTimeIntervalSetD tight_interval;
- tight_interval = MscTimeIntervalSetD::set_union(interval,get_max_value(path_union,interval));
+ tight_interval = MscTimeIntervalSetD::set_union(interval,
+ MscTimeIntervalSetD::zero_max_interval(path_union,interval));
MscTimeIntervalSetD prefix_interval;
prefix_interval.insert(MscTimeIntervalD(0,0));
for(it_min_events=m_mins.begin();it_min_events!=m_mins.end();it_min_events++)
{
prefix_interval=MscTimeIntervalSetD::components_max(
- t_matrix(get_number(*it_min_events),get_number(a)),prefix_interval);
+ t_matrix(get_number(*it_min_events),get_number(*it_v)),prefix_interval);
}
MscTimeIntervalSetD suffix_interval;
@@ -177,13 +188,15 @@
for(it_max_events=m_maxs.begin();it_max_events!=m_maxs.end();it_max_events++)
{
suffix_interval=MscTimeIntervalSetD::components_max(
- t_matrix(get_number(b),get_number(*it_max_events)),suffix_interval);
+ t_matrix(get_number(*it_succ),get_number(*it_max_events)),suffix_interval);
}
//final tightening
- t_matrix(get_number(a),get_number(b))=MscTimeIntervalSetD::set_intersection(t_matrix(get_number(a),get_number(b)),tight_interval-prefix_interval-suffix_interval);
- //endfor
+ t_matrix(get_number(*it_v),get_number(*it_succ))=MscTimeIntervalSetD::set_intersection(t_matrix(get_number(*it_v),get_number(*it_succ)),tight_interval-prefix_interval-suffix_interval);
+ } // end for succs
+ } // end for all events
+
/*
bool is_on_common_path;
EventPSet nodes_on_common_path;
Modified: trunk/src/check/time/time_consistency.cpp
===================================================================
--- trunk/src/check/time/time_consistency.cpp 2009-10-04 07:31:34 UTC (rev 399)
+++ trunk/src/check/time/time_consistency.cpp 2009-10-04 10:13:06 UTC (rev 400)
@@ -152,8 +152,8 @@
{
for(unsigned j=0;j<size;j++)
{
- m_result_matrix(i,j)=MscTimeIntervalDSet();
- m_to_go_matrix(i,j)=MscTimeIntervalDSet();
+ m_result_matrix(i,j)=MscTimeIntervalSetD();
+ m_to_go_matrix(i,j)=MscTimeIntervalSetD();
}
}
}
@@ -182,7 +182,7 @@
//////////////////////////////////////////////////////////////////
-void BmscMatrixConverter::get_first_area_events(EventArea* area,Event* e)
+void BMscMatrixConverter::get_first_area_events(EventArea* area,Event* e)
{
if(!area)
return;
@@ -210,7 +210,7 @@
}
}
-void BmscMatrixConverter::get_strict_successors(StrictEvent *e)
+void BMscMatrixConverter::get_strict_successors(StrictEvent *e)
{
if(e->get_successor().get())
m_succs[e].insert(e->get_successor().get());
@@ -219,7 +219,7 @@
}
-void BmscMatrixConverter::get_coregion_successors(CoregionEvent *e)
+void BMscMatrixConverter::get_coregion_successors(CoregionEvent *e)
{
if(e->get_successors().size()!=0)
{
@@ -234,7 +234,7 @@
get_first_area_events(e->get_area()->get_next().get(),e);
}
-void BmscMatrixConverter::get_successors(Event *e)
+void BMscMatrixConverter::get_successors(Event *e)
{
StrictEvent* strict = dynamic_cast<StrictEvent*>(e);
if(strict)
@@ -254,7 +254,7 @@
}
-void BmscMatrixConverter::build_up_matrix()
+void BMscMatrixConverter::build_up_matrix()
{
init_visual();
m_matrix.resize(m_events.size(),m_events.size());
@@ -294,8 +294,8 @@
for(it=relations.begin();it!=relations.end();it++)
{
- if(closure_initiator.get_visual_closure((*it)->get_event_a())[
- closure_initiator.get_topology_index((*it)->get_event_b())])
+ if(m_closure_initiator.get_visual_closure((*it)->get_event_a())[
+ m_closure_initiator.get_topology_index((*it)->get_event_b())])
{
MatrixFunc::fill_matrix(m_matrix,(*it)->get_interval_set(), \
get_number((*it)->get_event_a()),get_number((*it)->get_event_b()));
@@ -310,5 +310,3 @@
}
///////////////////////////////////////////////////////////////////////
-
-
Modified: trunk/src/data/time.h
===================================================================
--- trunk/src/data/time.h 2009-10-04 07:31:34 UTC (rev 399)
+++ trunk/src/data/time.h 2009-10-04 10:13:06 UTC (rev 400)
@@ -1247,8 +1247,8 @@
tmp = MscTimeInterval<T>::interval_intersection(*it,*it2);
if(tmp.is_valid())
new_set.insert(tmp);
- else
- std::cerr<< "not valid " << tmp << std::endl;
+ //else
+ // std::cerr<< "not valid " << tmp << std::endl;
}
}
return new_set;
@@ -1285,6 +1285,28 @@
return new_set;
}
+ /**
+ *\brief makes intersection of arguments
+ * if intersection is empty set returns empty set
+ * else returns interval [0,maxValue(intersection) with
+ * appropriate right boundary ("]" or ")")
+ *
+ */
+ static MscTimeIntervalSet<T> zero_max_interval(MscTimeIntervalSet left,
+ MscTimeIntervalSet right)
+ {
+ MscTimeIntervalSet<T> inter = set_intersection(left,right);
+ if(inter.is_empty())
+ return inter;
+
+ MscTimeIntervalSet<T> ret;
+ MscTimeInterval<T> back = inter.m_set.back();
+ MscTimeInterval<T> new_int(true,0,back.get_end_value(),back.get_end_closed());
+
+ ret.insert(new_int);
+ return ret;
+ }
+
/**
* @brief prints interval set to the string
* @return interval set string
Modified: trunk/tests/CMakeLists.txt
===================================================================
--- trunk/tests/CMakeLists.txt 2009-10-04 07:31:34 UTC (rev 399)
+++ trunk/tests/CMakeLists.txt 2009-10-04 10:13:06 UTC (rev 400)
@@ -149,14 +149,14 @@
ADD_TEST(interval_set_test ${EXECUTABLE_OUTPUT_PATH}/interval_set_test)
ADD_TEST(interval_string ${EXECUTABLE_OUTPUT_PATH}/interval_string)
-ADD_EXECUTABLE(bmsc_matrix_converter_test
- bmsc_matrix_converter_test.cpp
-)
-TARGET_LINK_LIBRARIES(bmsc_matrix_converter_test
- scmsc
- sctime
- scpseudocode
-)
+#ADD_EXECUTABLE(bmsc_matrix_converter_test
+# bmsc_matrix_converter_test.cpp
+#)
+#TARGET_LINK_LIBRARIES(bmsc_matrix_converter_test
+# scmsc
+# sctime
+# scpseudocode
+#)
ADD_EXECUTABLE(incon_test
incon_test.cpp
Modified: trunk/tests/bmsc_tightening_test.cpp
===================================================================
--- trunk/tests/bmsc_tightening_test.cpp 2009-10-04 07:31:34 UTC (rev 399)
+++ trunk/tests/bmsc_tightening_test.cpp 2009-10-04 10:13:06 UTC (rev 400)
@@ -37,75 +37,87 @@
instance1->add_area(strict1);
instance2->add_area(strict2);
instance3->add_area(strict3);
+
EventPtr e0 = strict1->add_event();
- EventPtr e1 = strict3->add_event();
- EventPtr e2 = strict2->add_event();
- EventPtr e3 = strict2->add_event();
- EventPtr e4 = strict1->add_event();
- EventPtr e5 = strict3->add_event();
-
+ EventPtr e40 = strict1->add_event();
+
+ EventPtr e30 = strict2->add_event();
+ EventPtr e20 = strict2->add_event();
+
+ EventPtr e11 = strict3->add_event();
+ EventPtr e10 = strict3->add_event();
+
CompleteMessagePtr m1 = new CompleteMessage(L"hi1");
- m1->glue_events(e0, e1);
+ m1->glue_events(e0, e11);
CompleteMessagePtr m2 = new CompleteMessage(L"hi2");
- m2->glue_events(e5, e2);
+ m2->glue_events(e10, e20);
CompleteMessagePtr m3 = new CompleteMessage(L"hi3");
- m3->glue_events(e3, e4);
+ m3->glue_events(e30, e40);
- MscTimeIntervalD in6(10,20);
- MscTimeIntervalD in7(0,0);
- MscTimeIntervalD in8(30,40);
- MscTimeIntervalD in9(60,D::infinity());//TODO: infi
- MscTimeIntervalD in10(20,30);
- MscTimeIntervalD in11(40,50);
- MscTimeIntervalD in12(60,120);
+ MscTimeIntervalD in1(10,20);
+ MscTimeIntervalD in2(0,0);
+ MscTimeIntervalD in3(30,40);
+ MscTimeIntervalD in4(60,D::infinity());//TODO: infi
+ MscTimeIntervalD in5(20,30);
+ MscTimeIntervalD in6(40,50);
+
+ MscTimeIntervalD in12(60,70);
MscTimeIntervalD in13(20,70);
- MscTimeIntervalDSet ins1;
- MscTimeIntervalDSet ins2;
- MscTimeIntervalDSet ins3;
- MscTimeIntervalDSet ins4;
- MscTimeIntervalDSet ins5;
- MscTimeIntervalDSet ins6;
- MscTimeIntervalDSet ins7;
- MscTimeIntervalDSet ins8;
+ MscTimeIntervalSetD ins1;
+ MscTimeIntervalSetD ins2;
+ MscTimeIntervalSetD ins3;
+ MscTimeIntervalSetD ins4;
+ MscTimeIntervalSetD ins5;
+ MscTimeIntervalSetD ins6;
+ MscTimeIntervalSetD ins7;
+ MscTimeIntervalSetD ins8;
- ins1.insert(in6);
+ ins1.insert(in1);
- ins2.insert(in8);
- ins2.insert(in9);
+ ins2.insert(in2);
+
+// ins2.insert(in9);
- ins3.insert(in6);
+ ins3.insert(in3);
+ ins3.insert(in4);
+
- ins4.insert(in10);
- ins4.insert(in11);
+ ins4.insert(in5);
+ ins4.insert(in6);
ins5.insert(in12);
- ins6.insert(in7);
+// ins6.insert(in7);
TimeRelationEventPtr rel1a = new TimeRelationEvent(ins1);
- rel1a->glue_events(e0.get(),e1.get());
- TimeRelationEventPtr rel6 = new TimeRelationEvent(ins6);
- rel6->glue_events(e1.get(),e5.get());
- TimeRelationEventPtr rel2 = new TimeRelationEvent(ins2);
- rel2->glue_events(e5.get(),e2.get());
- TimeRelationEventPtr rel1b = new TimeRelationEvent(ins1);
- rel1b->glue_events(e3.get(),e2.get());
- TimeRelationEventPtr rel4 = new TimeRelationEvent(ins4);
- rel4->glue_events(e3.get(),e4.get());
+ rel1a->glue_events(e0.get(),e11.get());
+
+ TimeRelationEventPtr rel6 = new TimeRelationEvent(ins2);
+ rel6->glue_events(e11.get(),e10.get());
+
+ TimeRelationEventPtr rel2 = new TimeRelationEvent(ins3);
+ rel2->glue_events(e10.get(),e20.get());
+
+ TimeRelationEventPtr rel7 = new TimeRelationEvent(ins1);
+ rel7->glue_events(e30.get(),e20.get());
+
+ TimeRelationEventPtr rel1b = new TimeRelationEvent(ins4);
+ rel1b->glue_events(e30.get(),e40.get());
+
TimeRelationEventPtr rel5 = new TimeRelationEvent(ins5);
- rel5->glue_events(e0.get(),e4.get());
+ rel5->glue_events(e0.get(),e40.get());
- MscTimeIntervalDSet i;
+ MscTimeIntervalSetD i;
i.insert(MscTimeIntervalD(0,80));
BMscDuplicator duplicator;
BMscPtr bmsc_duplicated = duplicator.duplicate_bmsc(bmsc);
- BmscMatrixConverter conv2;
+ BMscMatrixConverter conv2;
conv2.compute_matrix(bmsc_duplicated);
std::cerr << conv2.get_matrix() << std::endl;
MscSolveTCSP sol2;
@@ -115,23 +127,23 @@
std::cerr << "##################################################" << std::endl;
- BmscMatrixConverter conv;
+ BMscMatrixConverter conv;
conv.compute_matrix(bmsc);
std::cerr << conv.get_matrix() << std::endl;
- if(conv.is_leq(e3.get(),e4.get()))
- std::cerr << "ANO" << std::endl;
- else
- std::cerr << "NE" << std::endl;
+// if(conv.is_leq(e3.get(),e4.get()))
+// std::cerr << "ANO" << std::endl;
+// else
+// std::cerr << "NE" << std::endl;
MscSolveTCSP sol;
std::cerr << sol.solve(conv.get_matrix()) << std::endl;
// sol.solve(conv.get_matrix());
// MaxTightener tight;
- EventPList min;
- EventPList max;
- min.push_back(e0.get());
+// EventPList min;
+// EventPList max;
+// min.push_back(e0.get());
// min.push_back(e3.get());
// max.push_back(e2.get());
- max.push_back(e4.get());
+// max.push_back(e4.get());
std::pair<MscTimeIntervalSetD,IntervalSetMatrix> pair;
TightenBMsc tighten(bmsc);
Modified: trunk/tests/incon_test.cpp
===================================================================
--- trunk/tests/incon_test.cpp 2009-10-04 07:31:34 UTC (rev 399)
+++ trunk/tests/incon_test.cpp 2009-10-04 10:13:06 UTC (rev 400)
@@ -63,14 +63,14 @@
- MscTimeIntervalDSet ints1;
- MscTimeIntervalDSet ints2;
- MscTimeIntervalDSet ints3;
- MscTimeIntervalDSet ints4;
- MscTimeIntervalDSet ints5;
- MscTimeIntervalDSet ints6;
- MscTimeIntervalDSet ints7;
- MscTimeIntervalDSet ints8;
+ MscTimeIntervalSetD ints1;
+ MscTimeIntervalSetD ints2;
+ MscTimeIntervalSetD ints3;
+ MscTimeIntervalSetD ints4;
+ MscTimeIntervalSetD ints5;
+ MscTimeIntervalSetD ints6;
+ MscTimeIntervalSetD ints7;
+ MscTimeIntervalSetD ints8;
ints1.insert(int6);
ints2.insert(int7);
@@ -89,11 +89,11 @@
for(unsigned i=0;i<ms.size1();i++){
if(i==j)
{
- ms(j,i) = MscTimeIntervalDSet();
+ ms(j,i) = MscTimeIntervalSetD();
ms(j,i).insert(MscTimeIntervalD(0,0));
}
else
- ms(j,i) = MscTimeIntervalDSet();
+ ms(j,i) = MscTimeIntervalSetD();
ms(j,i).insert(MscTimeIntervalD(false,-D::infinity(),D::infinity(),false));
}
}
@@ -120,10 +120,10 @@
- MscTimeIntervalDSet ints11;
- MscTimeIntervalDSet ints12;
- MscTimeIntervalDSet ints13;
- MscTimeIntervalDSet ints14;
+ MscTimeIntervalSetD ints11;
+ MscTimeIntervalSetD ints12;
+ MscTimeIntervalSetD ints13;
+ MscTimeIntervalSetD ints14;
ints11.insert(int17);
ints11.insert(int16);
@@ -140,12 +140,12 @@
for(unsigned i=0;i<omg.size1();i++){
if(i==j)
{
- omg(j,i) = MscTimeIntervalDSet();
+ omg(j,i) = MscTimeIntervalSetD();
omg(j,i).insert(MscTimeIntervalD(0,0));
}
else
{
- omg(j,i) = MscTimeIntervalDSet();
+ omg(j,i) = MscTimeIntervalSetD();
omg(j,i).insert(MscTimeIntervalD(false,-D::infinity(),D::infinity(),false));
}
}
@@ -156,10 +156,10 @@
omg(2,3) = ints13;
omg(1,3) = ints14;
- omg(1,0) = MscTimeIntervalDSet::interval_inverse(ints11);
- omg(2,1) = MscTimeIntervalDSet::interval_inverse(ints12);
- omg(3,2) = MscTimeIntervalDSet::interval_inverse(ints13);
- omg(3,1) = MscTimeIntervalDSet::interval_inverse(ints14);
+ omg(1,0) = MscTimeIntervalSetD::interval_inverse(ints11);
+ omg(2,1) = MscTimeIntervalSetD::interval_inverse(ints12);
+ omg(3,2) = MscTimeIntervalSetD::interval_inverse(ints13);
+ omg(3,1) = MscTimeIntervalSetD::interval_inverse(ints14);
std::cout << omg << std::endl;
std::cout << sol.solve(omg) << std::endl;
std::cout << "//////////////////////////////////////" << std::endl;
@@ -178,14 +178,14 @@
- MscTimeIntervalDSet ins1;
- MscTimeIntervalDSet ins2;
- MscTimeIntervalDSet ins3;
- MscTimeIntervalDSet ins4;
- MscTimeIntervalDSet ins5;
- MscTimeIntervalDSet ins6;
- MscTimeIntervalDSet ins7;
- MscTimeIntervalDSet ins8;
+ MscTimeIntervalSetD ins1;
+ MscTimeIntervalSetD ins2;
+ MscTimeIntervalSetD ins3;
+ MscTimeIntervalSetD ins4;
+ MscTimeIntervalSetD ins5;
+ MscTimeIntervalSetD ins6;
+ MscTimeIntervalSetD ins7;
+ MscTimeIntervalSetD ins8;
ins1.insert(int6);
@@ -204,31 +204,31 @@
for(unsigned i=0;i<karel.size1();i++){
if(i==j)
{
- karel(j,i) = MscTimeIntervalDSet();
+ karel(j,i) = MscTimeIntervalSetD();
karel(j,i).insert(MscTimeIntervalD(0,0));
}
else
{
- karel(j,i) = MscTimeIntervalDSet();
+ karel(j,i) = MscTimeIntervalSetD();
karel(j,i).insert(MscTimeIntervalD(false,-D::infinity(),D::infinity(),false));
}
}
}
karel(0,1) = ins1;
- karel(1,0) = MscTimeIntervalDSet::interval_inverse(ins1);
+ karel(1,0) = MscTimeIntervalSetD::interval_inverse(ins1);
karel(1,2) = ins2;
- karel(2,1) = MscTimeIntervalDSet::interval_inverse(ins2);
+ karel(2,1) = MscTimeIntervalSetD::interval_inverse(ins2);
karel(3,2) = ins3;
- karel(2,3) = MscTimeIntervalDSet::interval_inverse(ins3);
+ karel(2,3) = MscTimeIntervalSetD::interval_inverse(ins3);
karel(3,4) = ins4;
- karel(4,3) = MscTimeIntervalDSet::interval_inverse(ins4);
+ karel(4,3) = MscTimeIntervalSetD::interval_inverse(ins4);
karel(0,4) = ins5;
- karel(4,0) = MscTimeIntervalDSet::interval_inverse(ins5);
+ karel(4,0) = MscTimeIntervalSetD::interval_inverse(ins5);
std::cerr << karel << std::endl;
MatrixFunc::print_out(karel);
Modified: trunk/tests/tighten_msc_test.cpp
===================================================================
--- trunk/tests/tighten_msc_test.cpp 2009-10-04 07:31:34 UTC (rev 399)
+++ trunk/tests/tighten_msc_test.cpp 2009-10-04 10:13:06 UTC (rev 400)
@@ -61,14 +61,14 @@
- MscTimeIntervalDSet ins1;
- MscTimeIntervalDSet ins2;
- MscTimeIntervalDSet ins3;
- MscTimeIntervalDSet ins4;
- MscTimeIntervalDSet ins5;
- MscTimeIntervalDSet ins6;
- MscTimeIntervalDSet ins7;
- MscTimeIntervalDSet ins8;
+ MscTimeIntervalSetD ins1;
+ MscTimeIntervalSetD ins2;
+ MscTimeIntervalSetD ins3;
+ MscTimeIntervalSetD ins4;
+ MscTimeIntervalSetD ins5;
+ MscTimeIntervalSetD ins6;
+ MscTimeIntervalSetD ins7;
+ MscTimeIntervalSetD ins8;
ins1.insert(in6);
@@ -97,10 +97,10 @@
TimeRelationEventPtr rel5 = new TimeRelationEvent(ins5);
rel5->glue_events(e0.get(),e4.get());
- MscTimeIntervalDSet i;
+ MscTimeIntervalSetD i;
i.insert(MscTimeIntervalD(0,80));
- BmscMatrixConverter conv;
+ BMscMatrixConverter conv;
conv.compute_matrix(bmsc);
std::cerr << conv.get_matrix() << std::endl;
if(conv.is_leq(e3.get(),e4.get()))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|