petrinet

package
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 26, 2023 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewMarkSet

func NewMarkSet() markSet

The method to create a set

func NewMarkStack

func NewMarkStack() markStack

The method to create a stack

Types

type CSC

type CSC struct {
	// contains filtered or unexported fields
}

func (*CSC) Get

func (mat *CSC) Get() ([]int32, int, []int, []int, []float64)

type ConstantDist added in v0.9.2

type ConstantDist struct {
	// contains filtered or unexported fields
}

func (*ConstantDist) Float64 added in v0.9.2

type DistributionInterface added in v0.9.2

type DistributionInterface interface {
	Float64(RandomNumberGenerator) float64
}

func NewDistribution

func NewDistribution(dist string, params ...float64) DistributionInterface

type ExpDist added in v0.9.2

type ExpDist struct {
	// contains filtered or unexported fields
}

func (*ExpDist) Float64 added in v0.9.2

func (d *ExpDist) Float64(rng RandomNumberGenerator) float64

type ExpTrans

type ExpTrans struct {
	*Trans
	// contains filtered or unexported fields
}

func (*ExpTrans) DoFiring

func (tr *ExpTrans) DoFiring(net *Net, mark []MarkInt) ([]MarkInt, error)

func (*ExpTrans) IsEnabled

func (tr *ExpTrans) IsEnabled(net *Net, mark []MarkInt) TransStatus

type GenTrans

type GenTrans struct {
	*Trans
	// contains filtered or unexported fields
}

func (*GenTrans) DoFiring

func (tr *GenTrans) DoFiring(net *Net, mark []MarkInt) ([]MarkInt, error)

func (*GenTrans) IsEnabled

func (tr *GenTrans) IsEnabled(net *Net, mark []MarkInt) TransStatus

type GenTransPolicy

type GenTransPolicy int
const (
	GenTransPolicyPRD GenTransPolicy = iota + 1 // PRD: Premenptive different
	GenTransPolicyPRS                           // PRS: Premptive resume
	GenTransPolicyPRI                           // PRI: Preemptive repeat
)

type GenVec

type GenVec struct {
	// contains filtered or unexported fields
}

func (*GenVec) IsAnyEnabled

func (g *GenVec) IsAnyEnabled() bool

func (*GenVec) String

func (g *GenVec) String() string

type GenVecGenerator

type GenVecGenerator struct {
	// contains filtered or unexported fields
}

func NewGenVecGenerator

func NewGenVecGenerator(n int) *GenVecGenerator

type GenVecGeneratorInterface

type GenVecGeneratorInterface interface {
	// contains filtered or unexported methods
}

type Group

type Group struct {
	// contains filtered or unexported fields
}

The structure of group for marks, which consists of GroupType and status vector of GEN transitions.

func (*Group) String

func (g *Group) String() string

type GroupTrans

type GroupTrans struct {
	// contains filtered or unexported fields
}

func (GroupTrans) GetDest

func (g GroupTrans) GetDest() *Group

func (GroupTrans) GetSrc

func (g GroupTrans) GetSrc() *Group

type GroupType

type GroupType int

The enum to indicate group types.

const (
	GENGroup GroupType = iota + 1
	IMMGroup
	ABSGroup
)

GEN: There is no enabled IMM trans IMM: One or more IMM trans are enabled ABS: Absorbing marks (There are no enabled transitions)

type ImmTrans

type ImmTrans struct {
	*Trans
	// contains filtered or unexported fields
}

func (*ImmTrans) DoFiring

func (tr *ImmTrans) DoFiring(net *Net, mark []MarkInt) ([]MarkInt, error)

func (*ImmTrans) IsEnabled

func (tr *ImmTrans) IsEnabled(net *Net, mark []MarkInt) TransStatus

type InArc

type InArc struct {
	// contains filtered or unexported fields
}
type Link struct {
	// contains filtered or unexported fields
}

type Mark

type Mark struct {
	// contains filtered or unexported fields
}

func (*Mark) String

func (m *Mark) String() string

type MarkGenerator

type MarkGenerator struct {
	// contains filtered or unexported fields
}

func NewMarkGenerator

func NewMarkGenerator(n int) *MarkGenerator

type MarkGeneratorInterface

type MarkGeneratorInterface interface {
	// contains filtered or unexported methods
}

type MarkInt

type MarkInt int

type MarkingGraph

type MarkingGraph struct {
	// contains filtered or unexported fields
}

The structure to store the result of analysis. The group represents the type of markings: IMM, GEN, ABS and the vector of status of GEN transitions (Enabled, Disabled and Premenpted).

func CreateMarkingGraph

func CreateMarkingGraph(net *Net, imark []MarkInt, method makingGraphGenerator) *MarkingGraph

func CreateMarkingGraphWithDFS

func CreateMarkingGraphWithDFS(net *Net, imark []MarkInt) *MarkingGraph

func CreateMarkingGraphWithDFSTangible

func CreateMarkingGraphWithDFSTangible(net *Net, imark []MarkInt) *MarkingGraph

func (*MarkingGraph) GroupLabels

func (mg *MarkingGraph) GroupLabels() map[*Group]string

func (*MarkingGraph) InitVector

func (mg *MarkingGraph) InitVector() map[*Group][]float64

func (*MarkingGraph) RewardVector

func (mg *MarkingGraph) RewardVector() map[string]map[*Group][]float64

func (*MarkingGraph) StateLabels added in v0.9.2

func (mg *MarkingGraph) StateLabels() map[*Group][]string

func (*MarkingGraph) Summary added in v0.9.2

func (mg *MarkingGraph) Summary()

func (*MarkingGraph) ToGroupMarkDot

func (mg *MarkingGraph) ToGroupMarkDot(writer io.Writer)

func (*MarkingGraph) ToMarkDot

func (mg *MarkingGraph) ToMarkDot(writer io.Writer)

func (*MarkingGraph) ToMarkDotWithLabel

func (mg *MarkingGraph) ToMarkDotWithLabel(writer io.Writer)

func (*MarkingGraph) ToMarkDotWithLabelAndGroup

func (mg *MarkingGraph) ToMarkDotWithLabelAndGroup(writer io.Writer)

func (*MarkingGraph) TransLabels

func (mg *MarkingGraph) TransLabels() map[GroupTrans]string

func (*MarkingGraph) TransMatrix

func (mg *MarkingGraph) TransMatrix() (map[GroupTrans]*CSC, map[GroupTrans]*CSC, map[GroupTrans]*CSC)

func (*MarkingGraph) WriteState added in v0.9.2

func (mg *MarkingGraph) WriteState(writer io.Writer)

type Net

type Net struct {
	// contains filtered or unexported fields
}

The structure for a petrinet.

func NewNet

func NewNet() *Net

func (*Net) AddMarkGroupString added in v0.10.0

func (net *Net) AddMarkGroupString(f func([]MarkInt) string)

func (*Net) Finalize

func (net *Net) Finalize()

func (*Net) GetPlace

func (net *Net) GetPlace(label string) (*Place, bool)

func (*Net) GetTrans

func (net *Net) GetTrans(label string) (*Trans, bool)

func (*Net) MakeMark added in v0.9.2

func (net *Net) MakeMark(initmark map[string]MarkInt) []MarkInt

func (*Net) NewExpTrans

func (net *Net) NewExpTrans(label string, priority int, vanishable bool, rate float64) *ExpTrans

func (*Net) NewGenTrans

func (net *Net) NewGenTrans(label string, priority int, vanishable bool, dist DistributionInterface, policy GenTransPolicy) *GenTrans

func (*Net) NewImmTrans

func (net *Net) NewImmTrans(label string, priority int, vanishable bool, weight float64) *ImmTrans

func (*Net) NewInArc

func (net *Net) NewInArc(src placeInterface, dest transInterface, multiplicity MarkInt) *InArc

func (*Net) NewInhibitArc

func (net *Net) NewInhibitArc(src placeInterface, dest transInterface, multiplicity MarkInt) *InArc

func (*Net) NewOutArc

func (net *Net) NewOutArc(src transInterface, dest placeInterface, multiplicity MarkInt) *OutArc

func (*Net) NewPlace

func (net *Net) NewPlace(label string, max MarkInt) *Place

func (*Net) SetGuard

func (net *Net) SetGuard(tr transInterface, str string, guard func([]MarkInt) bool)

func (*Net) SetInArcMulti

func (net *Net) SetInArcMulti(arc *InArc, str string, multi func([]MarkInt) MarkInt)

func (*Net) SetOutArcMulti

func (net *Net) SetOutArcMulti(arc *OutArc, str string, multi func([]MarkInt) MarkInt)

func (*Net) SetReward

func (net *Net) SetReward(str string, rwd func([]MarkInt) float64)

func (*Net) SetUpdate

func (net *Net) SetUpdate(tr transInterface, str string, update func([]MarkInt) []MarkInt)

func (*Net) SetWeightRate

func (net *Net) SetWeightRate(tr transInterface, rate func([]MarkInt) float64)

func (*Net) ToPNDot

func (net *Net) ToPNDot(writer io.Writer)

type OutArc

type OutArc struct {
	// contains filtered or unexported fields
}

type PNSimConfig added in v0.9.2

type PNSimConfig struct {
	EndingTime      float64  `json:"time"`
	NumOfFiring     int32    `json:"firings"`
	NumOfSimulation int      `json:"simulations"`
	Rewards         []string `json:"rewards"`
}

func ReadConfigFromJson added in v0.9.2

func ReadConfigFromJson(b []byte) (PNSimConfig, error)

type PNSimulation added in v0.9.2

type PNSimulation struct {
	PNSimConfig
	// contains filtered or unexported fields
}

func NewPNSimulation added in v0.9.2

func NewPNSimulation(net *Net, config PNSimConfig) *PNSimulation

func (*PNSimulation) RunAll added in v0.9.2

func (sim *PNSimulation) RunAll(init []MarkInt, rng RandomNumberGenerator) (map[string][]float64, map[string][]float64, map[string][]float64, []float64, []int32)

func (*PNSimulation) RunSimulation added in v0.9.2

func (sim *PNSimulation) RunSimulation(init []MarkInt, rng RandomNumberGenerator) ([]event, float64, int32)

type Place

type Place struct {
	// contains filtered or unexported fields
}

func (*Place) GetIndex

func (p *Place) GetIndex() int

func (*Place) GetLabel

func (p *Place) GetLabel() string

type RandomNumberGenerator added in v0.9.2

type RandomNumberGenerator interface {
	Float64() float64 // return [0,1) uniform random number
}

type Trans

type Trans struct {
	// contains filtered or unexported fields
}

func (*Trans) DoFiring

func (tr *Trans) DoFiring(net *Net, m []MarkInt) ([]MarkInt, error)

func (*Trans) GetIndex

func (tr *Trans) GetIndex() int

func (*Trans) GetLabel

func (tr *Trans) GetLabel() string

func (*Trans) IsEnabled

func (tr *Trans) IsEnabled(net *Net, mark []MarkInt) TransStatus

type TransStatus

type TransStatus int
const (
	DISABLE TransStatus = iota + 1
	ENABLE
	PREEMPTION
)

func (TransStatus) String

func (t TransStatus) String() string

type TransType

type TransType int
const (
	TransIMM TransType = iota + 1
	TransEXP
	TransGEN
)

func (TransType) String

func (t TransType) String() string

type UniformDist added in v0.9.2

type UniformDist struct {
	// contains filtered or unexported fields
}

func (*UniformDist) Float64 added in v0.9.2

func (d *UniformDist) Float64(rng RandomNumberGenerator) float64

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL