Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
DEv-CF model
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
KIEU Thi phuong
DEv-CF model
Commits
a08e38a2
Commit
a08e38a2
authored
4 months ago
by
KIEU Thi phuong
Browse files
Options
Downloads
Patches
Plain Diff
Transducer atomic model
parent
be0b4623
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/AMTransducer.java
+123
-0
123 additions, 0 deletions
src/AMTransducer.java
with
123 additions
and
0 deletions
src/AMTransducer.java
0 → 100644
+
123
−
0
View file @
a08e38a2
package
carfollowing_2024_05_02
;
import
java.io.BufferedWriter
;
import
java.io.FileWriter
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
DEVSModel.DEVSAtomic
;
import
DEVSModel.Port
;
public
class
AMTransducer
extends
DEVSAtomic
{
Port
carRec
;
enum
Phase
{
idle
,
received
};
Phase
phase
;
private
float
time
;
// 2024_04_17 ouput in trans
private
FileWriter
writerSpeed
;
private
FileWriter
writerPosition
;
public
AMTransducer
()
{
name
=
"trans"
;
carRec
=
new
Port
(
this
,
"car_received"
);
this
.
addInPort
(
carRec
);
}
@Override
public
void
init
()
{
phase
=
Phase
.
idle
;
time
=
0
;
try
{
writerSpeed
=
new
FileWriter
(
"output/speed"
+
AMGenerator
.
numCar
+
"_"
+
AMGenerator
.
numTestFile
);
writerPosition
=
new
FileWriter
(
"output/position"
+
AMGenerator
.
numCar
+
"_"
+
AMGenerator
.
numTestFile
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
@Override
public
void
deltaExt
(
Port
port
,
Object
obj
,
float
e
)
{
// Update system time
time
+=
e
;
System
.
out
.
println
(
"---deltaExt---trans"
);
System
.
out
.
println
(
"Time: "
+
time
);
// If car comes to AMTransducer
if
(
port
.
equals
(
carRec
))
{
if
(
phase
==
Phase
.
idle
)
{
// Change to received state
phase
=
Phase
.
received
;
// Set arrival time
((
Car
)
obj
).
setArrivalTime
(
time
);
Car
carNew
=
(
Car
)
obj
;
System
.
out
.
println
(
"*** Car received"
);
// 2024_04_17 print results to file
for
(
String
s
:
carNew
.
listPosition
)
{
try
{
writerPosition
.
write
(
carNew
.
getID
()+
" "
+
s
);
writerPosition
.
write
(
"\n"
);
}
catch
(
IOException
e1
)
{
e1
.
printStackTrace
();
}
}
for
(
String
s
:
carNew
.
listSpeed
)
{
try
{
writerSpeed
.
write
(
carNew
.
getID
()+
" "
+
s
);
writerSpeed
.
write
(
"\n"
);
}
catch
(
IOException
e1
)
{
e1
.
printStackTrace
();
}
}
}
}
}
@Override
public
void
deltaInt
()
{
if
(
phase
==
Phase
.
received
)
{
// Back to idle state
phase
=
Phase
.
idle
;
}
}
@Override
public
float
getDuration
()
{
if
(
phase
==
Phase
.
received
)
return
0
;
else
return
Float
.
POSITIVE_INFINITY
;
}
@Override
public
Object
[]
lambda
()
{
// nothing to output
return
null
;
}
public
void
endSim
(){
try
{
writerPosition
.
close
();
writerSpeed
.
close
();
}
catch
(
IOException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
System
.
out
.
println
(
"**** Simulation ends ****"
);
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment