Skip to content

Commit 0c88b1e

Browse files
committed
Change at ThumbnailObject CheckSum, minor changes.
1 parent 2701a7c commit 0c88b1e

File tree

10 files changed

+75
-69
lines changed

10 files changed

+75
-69
lines changed

SharpPDDL/ActionPDDL/ActionLambdaPDDL.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ public ActionLambdaPDDL(IReadOnlyList<Parametr> parameters, IReadOnlyList<Expres
5353
continue;
5454

5555
ChecksPreconditionSimplified.Add(preconditionWithNewParam);
56-
5756
}
5857

5958
Expression CheckAllPreco;

SharpPDDL/CrisscrossesGenerate/CrisscrossGenerator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ internal class CrisscrossGenerator
4848

4949
//Buffors between consuments-procucents
5050
protected ConcurrentQueue<Crisscross> PossibleGoalRealization;
51-
protected SortedSet<Crisscross> PossibleNewCrisscrossCre;
52-
protected List<Crisscross> PossibleToCrisscrossReduce;
51+
protected ICollection<Crisscross> PossibleNewCrisscrossCre;
52+
protected ICollection<Crisscross> PossibleToCrisscrossReduce;
5353

5454
//Classes of data workining
5555
protected GoalChecker goalChecker;
@@ -80,7 +80,7 @@ internal void InitBuffors (IEnumerable<Crisscross> PossibleGoalRealization, IEnu
8080
{
8181
this.PossibleGoalRealization = (PossibleGoalRealization is null)? new ConcurrentQueue<Crisscross>() : new ConcurrentQueue<Crisscross>(PossibleGoalRealization);
8282
this.PossibleNewCrisscrossCre = (PossibleNewCrisscrossCre is null) ? new SortedSet<Crisscross>(Crisscross.SortCumulativedTransitionCharge()) : new SortedSet<Crisscross>(PossibleNewCrisscrossCre, Crisscross.SortCumulativedTransitionCharge());
83-
this.PossibleToCrisscrossReduce = (PossibleToCrisscrossReduce is null) ? new List<Crisscross>() : new List<Crisscross>(PossibleToCrisscrossReduce);
83+
this.PossibleToCrisscrossReduce = (PossibleToCrisscrossReduce is null) ? new SortedSet<Crisscross>(Crisscross.SortCumulativedTransitionCharge()) : new SortedSet<Crisscross>(PossibleToCrisscrossReduce, Crisscross.SortCumulativedTransitionCharge());
8484
}
8585

8686
internal CrisscrossGenerator(Crisscross CurrentBuilded, DomeinPDDL Owner, Action<KeyValuePair<Crisscross, List<GoalPDDL>>> foundSols, Action<uint> currentMinCumulativeCostUpdate)

SharpPDDL/CrisscrossesGenerate/CrisscrossNewPossiblesCreator.cs

Lines changed: 46 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@ class CrisscrossNewPossiblesCreator
1616
internal Action NoNewData;
1717

1818
internal readonly AutoResetEvent BuildingNewCrisscrossARE;
19-
protected readonly SortedSet<Crisscross> PossibleNewCrisscrossCre;
19+
protected readonly ICollection<Crisscross> PossibleNewCrisscrossCre;
2020
protected readonly object PossibleNewSrisscrossCreLocker;
2121

2222
protected readonly AutoResetEvent ReducingCrisscrossARE;
23-
protected readonly List<Crisscross> PossibleToCrisscrossReduce;
23+
protected readonly ICollection<Crisscross> PossibleToCrisscrossReduce;
2424
protected readonly object CrisscrossReduceLocker;
2525

26-
internal CrisscrossNewPossiblesCreator(List<ActionPDDL> actions, AutoResetEvent BuildingNewCrisscrossARE, SortedSet<Crisscross> PossibleNewCrisscrossCre, object PossibleNewSrisscrossCreLocker, AutoResetEvent ReducingCrisscrossARE, List<Crisscross> PossibleToCrisscrossReduce, object CrisscrossReduceLocker)
26+
internal CrisscrossNewPossiblesCreator(List<ActionPDDL> actions, AutoResetEvent BuildingNewCrisscrossARE, ICollection<Crisscross> PossibleNewCrisscrossCre, object PossibleNewSrisscrossCreLocker, AutoResetEvent ReducingCrisscrossARE, ICollection<Crisscross> PossibleToCrisscrossReduce, object CrisscrossReduceLocker)
2727
{
2828
this.Actions = actions;
2929

@@ -56,7 +56,6 @@ bool CheckPossibleOfRealization()
5656
}
5757

5858
Crisscross stateToCheck;
59-
List<Crisscross> ToAddList = new List<Crisscross>();
6059

6160
while (!token.IsCancellationRequested)
6261
{
@@ -101,31 +100,61 @@ void TryActionPossibility(ThumbnailObject[] SetToCheck, int actionPos)
101100
uint ActionCost = (uint)Actions[actionPos].actionCost.CostExpressionFunc.DynamicInvoke(SetToCheck);
102101
stateToCheck.Add(newPossibleState, actionPos, ActionArg, ActionCost, out Crisscross AddedItem);
103102

104-
ToAddList.Add(AddedItem);
103+
lock (CrisscrossReduceLocker)
104+
{
105+
PossibleToCrisscrossReduce.Add(AddedItem);
106+
}
107+
ReducingCrisscrossARE.Set();
105108
}
106109

107-
void CheckAllPos(int actionPos, ThumbnailObject[] SetToCheck, int currentIndex, List<ThumbnailObject>[] possibleOld, List<ThumbnailObject>[] possibleNew, bool UntilNowOnlyOld)
110+
void CheckAllPos(int actionPos, ThumbnailObject[] SetToCheck, int currentIndex, IList<ThumbnailObject>[] possibleOld, IList<ThumbnailObject>[] possibleNew, bool UntilNowOnlyOld)
108111
{
109-
IEnumerable<ThumbnailObject> newone = new List<ThumbnailObject>(possibleOld[currentIndex]);
110-
112+
ThumbnailObject[] ToRemove = new ThumbnailObject[0];
113+
111114
if (currentIndex != 0)
112115
{
113-
ThumbnailObject[] ToRemove = new ThumbnailObject[currentIndex];
116+
ToRemove = new ThumbnailObject[currentIndex];
114117
Array.Copy(SetToCheck, ToRemove, currentIndex);
115-
newone = newone.Except(ToRemove);
116118
}
117119

120+
IEnumerable<ThumbnailObject> newone = possibleNew[currentIndex].Except(ToRemove);
121+
122+
foreach (ThumbnailObject thisOne in newone)
123+
{
124+
SetToCheck[currentIndex] = thisOne;
125+
126+
if (currentIndex == SetToCheck.Length - 1)
127+
TryActionPossibility(SetToCheck, actionPos);
128+
else
129+
CheckAllPos(actionPos, SetToCheck, currentIndex + 1, possibleOld, possibleNew, false);
130+
}
131+
132+
if (UntilNowOnlyOld)
133+
if (SetToCheck.Length == currentIndex + 1)
134+
{
135+
//return;
136+
}
137+
138+
newone = possibleOld[currentIndex].Except(ToRemove);
139+
118140
foreach (ThumbnailObject thisOne in newone)
119141
{
120142
SetToCheck[currentIndex] = thisOne;
121143

122144
if (currentIndex == SetToCheck.Length - 1)
123-
TryActionPossibility( SetToCheck, actionPos);
145+
TryActionPossibility(SetToCheck, actionPos);
124146
else
125147
CheckAllPos(actionPos, SetToCheck, currentIndex + 1, possibleOld, possibleNew, UntilNowOnlyOld);
126148
}
127149
}
128150

151+
void CheckTheOldPoss(int actionPos, IEnumerable<ThumbnailObject>[] possibleCha)
152+
{
153+
if (stateToCheck.Root is null)
154+
return;
155+
//stateToCheck.Root.Children
156+
}
157+
129158
for (int actionPos = 0; actionPos != Actions.Count(); actionPos++)
130159
{
131160
IEnumerable<ThumbnailObject>[] possibleAll = new IEnumerable<ThumbnailObject>[Actions[actionPos].InstantActionParamCount];
@@ -139,42 +168,25 @@ void CheckAllPos(int actionPos, ThumbnailObject[] SetToCheck, int currentIndex,
139168
if (possibleAll.Any(p => !p.Any()))
140169
continue;
141170

171+
CheckTheOldPoss(actionPos, possibleCha);
172+
142173
if (possibleCha.All(p => !p.Any()))
143174
{
144175
//tylko sprawdzenie poprzednich i wyjście
145176
}
146177

147178
ThumbnailObject[] SetToCheck = new ThumbnailObject[Actions[actionPos].InstantActionParamCount];
148-
List<ThumbnailObject>[] possibleNew = new List<ThumbnailObject>[SetToCheck.Length];
149-
List<ThumbnailObject>[] possibleOld = new List<ThumbnailObject>[SetToCheck.Length];
179+
IList<ThumbnailObject>[] possibleNew = new IList<ThumbnailObject>[SetToCheck.Length];
180+
IList<ThumbnailObject>[] possibleOld = new IList<ThumbnailObject>[SetToCheck.Length];
150181

151182
for (int i = 0; i != SetToCheck.Length; i++)
152183
{
153-
possibleNew[i] = new List<ThumbnailObject>(possibleCha[i]);
154-
possibleOld[i] = new List<ThumbnailObject>(possibleAll[i]);//.Except(possibleNew[i]));
184+
possibleNew[i] = possibleCha[i].ToList().AsReadOnly();
185+
possibleOld[i] = possibleAll[i].Except(possibleNew[i]).ToList().AsReadOnly();
155186
}
156187

157188
CheckAllPos(actionPos, SetToCheck, 0, possibleOld, possibleNew, true);
158189
}
159-
160-
if (ToAddList.Any())
161-
{
162-
ToAddList = ToAddList.OrderBy(c => c.CumulativedTransitionCharge).ToList();
163-
bool any;
164-
165-
lock (CrisscrossReduceLocker)
166-
{
167-
any = PossibleToCrisscrossReduce.Any();
168-
PossibleToCrisscrossReduce.AddRange(ToAddList);
169-
170-
if(any)
171-
PossibleToCrisscrossReduce.Sort(Crisscross.SortCumulativedTransitionCharge());
172-
173-
ReducingCrisscrossARE.Set();
174-
}
175-
176-
ToAddList.Clear();
177-
}
178190
}
179191
NoNewData.BeginInvoke(null, null);
180192
IsWaiting = true;

SharpPDDL/CrisscrossesGenerate/CrisscrossReducer.cs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ class CrisscrossReducer
1818
internal Action NoNewData;
1919

2020
internal AutoResetEvent ReducingCrisscrossARE;
21-
List<Crisscross> PossibleToCrisscrossReduce;
21+
ICollection<Crisscross> PossibleToCrisscrossReduce;
2222
object CrisscrossReduceLocker;
2323

2424
ConcurrentQueue<Crisscross> PossibleGoalRealization;
2525
AutoResetEvent CheckingGoalRealizationARE;
2626

27-
internal CrisscrossReducer(Crisscross states, AutoResetEvent ReducingCrisscrossARE, List<Crisscross> PossibleToCrisscrossReduce, object CrisscrossReduceLocker, ConcurrentQueue<Crisscross> PossibleGoalRealization, AutoResetEvent CheckingGoalRealizationARE)
27+
internal CrisscrossReducer(Crisscross states, AutoResetEvent ReducingCrisscrossARE, ICollection<Crisscross> PossibleToCrisscrossReduce, object CrisscrossReduceLocker, ConcurrentQueue<Crisscross> PossibleGoalRealization, AutoResetEvent CheckingGoalRealizationARE)
2828
{
2929
this.states = states;
3030
IndexStates();
@@ -76,17 +76,18 @@ bool CheckPossibleOfRealization()
7676
{
7777
Crisscross possibleToCrisscrossReduce;
7878

79-
try
79+
lock (CrisscrossReduceLocker)
8080
{
81-
lock (CrisscrossReduceLocker)
81+
try
8282
{
83-
possibleToCrisscrossReduce = PossibleToCrisscrossReduce[0];
84-
PossibleToCrisscrossReduce.RemoveAt(0);
83+
possibleToCrisscrossReduce = PossibleToCrisscrossReduce.First();
8584
}
86-
}
87-
catch
88-
{
89-
continue;
85+
catch
86+
{
87+
continue;
88+
}
89+
90+
PossibleToCrisscrossReduce.Remove(possibleToCrisscrossReduce);
9091
}
9192

9293
if (IndexedStates.ContainsKey(possibleToCrisscrossReduce.Content.CheckSum))

SharpPDDL/CrisscrossesGenerate/GoalChecker.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ class GoalChecker
2424
ConcurrentQueue<Crisscross> PossibleGoalRealization;
2525

2626
object PossibleNewCrisscrossCreLocker;
27-
SortedSet<Crisscross> PossibleNewCrisscrossCre;
27+
ICollection<Crisscross> PossibleNewCrisscrossCre;
2828
AutoResetEvent BuildingNewCrisscrossARE;
2929

30-
internal GoalChecker(ObservableCollection<GoalPDDL> domainGoals, AutoResetEvent CheckingGoalRealizationARE, ConcurrentQueue<Crisscross> PossibleGoalRealization, object PossibleNewCrisscrossCreLocker, SortedSet<Crisscross> PossibleNewCrisscrossCre, AutoResetEvent BuildingNewCrisscrossARE)
30+
internal GoalChecker(ObservableCollection<GoalPDDL> domainGoals, AutoResetEvent CheckingGoalRealizationARE, ConcurrentQueue<Crisscross> PossibleGoalRealization, object PossibleNewCrisscrossCreLocker, ICollection<Crisscross> PossibleNewCrisscrossCre, AutoResetEvent BuildingNewCrisscrossARE)
3131
{
3232
this.domainGoals = domainGoals;
3333

SharpPDDL/Execution/WholeActionExecutionLambda.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ internal WholeActionExecutionLambda(string Name, IReadOnlyList<Parametr> Paramet
3232
foreach (ExpressionExecution execution in executions)
3333
execution.CompleteClassPos(Parameters);
3434

35-
IReadOnlyList<ExpressionExecution> OldDataExecutions = executions.Where(e => e.WorkWithNewValues == false).ToList();
36-
IReadOnlyList<ExpressionExecution> NewDataExecutions = executions.Where(e => e.WorkWithNewValues == true).ToList();
35+
IReadOnlyList<ExpressionExecution> OldDataExecutions = executions.Where(e => !e.WorkWithNewValues).ToList();
36+
IReadOnlyList<ExpressionExecution> NewDataExecutions = executions.Where(e => e.WorkWithNewValues).ToList();
3737

3838
for (int i = 0; i != Parameters.Count; i++)
3939
{
@@ -76,7 +76,7 @@ internal WholeActionExecutionLambda(string Name, IReadOnlyList<Parametr> Paramet
7676

7777
for (int i = 0; i != NewDataExecutions.Count; i++)
7878
{
79-
ActualObjectPDDL = OldDataExecutions[i];
79+
ActualObjectPDDL = NewDataExecutions[i];
8080
ExecutionEffectsArray[2*UsingVar + OldDataExecutions.Count + i ] = Visit(NewDataExecutions[i].Func);
8181
}
8282

SharpPDDL/GlobalClass.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ internal static (IReadOnlyList<Type> Interfaces, IReadOnlyList<Type> Types, IRea
2727
return (ToReturnInterfaces, ToReturnBaseTypes, ToReturnAllTypes);
2828
}
2929

30+
internal const int ThObCheckSumSize = 4;
3031
internal static string LamdbaParamPrefix => "o";
3132
internal static string SpecialFuncPrefix => "!";
3233
internal static string EmptyName => "empty";

SharpPDDL/PossibleState.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,10 @@ internal PossibleState(PossibleState PreviousPossibleState, List<ThumbnailObject
4343

4444
private string FigureCheckSum()
4545
{
46-
string MD5input = "";
46+
byte[] inputBytes = new byte[ThumbnailObjects.Count * ThumbnailObjects[0].CheckSum.Length];
4747

4848
for (int ThumbnailObjectsCounter = 0; ThumbnailObjectsCounter != ThumbnailObjects.Count; ++ThumbnailObjectsCounter)
49-
{
50-
MD5input = MD5input + ThumbnailObjects[ThumbnailObjectsCounter].CheckSum + ";";
51-
}
52-
53-
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(MD5input);
49+
Array.Copy(ThumbnailObjects[ThumbnailObjectsCounter].CheckSum, 0, inputBytes, GloCla.ThObCheckSumSize * ThumbnailObjectsCounter, GloCla.ThObCheckSumSize);
5450

5551
string CheckSum;
5652
using (MD5 md5 = MD5.Create())

SharpPDDL/SharpPDDL.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<PackageReleaseNotes
1212
- Some optimalization</PackageReleaseNotes>
1313
<RepositoryUrl>https://github.com/ArBom/SharpPDDL.git</RepositoryUrl>
14-
<Version>0.3.0.7</Version>
14+
<Version>0.3.0.8</Version>
1515
<PackageTags>GOAP;planning;AI;IIoT</PackageTags>
1616
<SignAssembly>false</SignAssembly>
1717
<DelaySign>false</DelaySign>
@@ -23,8 +23,8 @@
2323
<PackageReadmeFile>README.md</PackageReadmeFile>
2424
<PackageProjectUrl>https://github.com/ArBom/SharpPDDL</PackageProjectUrl>
2525
<NeutralLanguage></NeutralLanguage>
26-
<AssemblyVersion>0.3.0.7</AssemblyVersion>
27-
<FileVersion>0.3.0.7</FileVersion>
26+
<AssemblyVersion>0.3.0.8</AssemblyVersion>
27+
<FileVersion>0.3.0.8</FileVersion>
2828
</PropertyGroup>
2929

3030
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

SharpPDDL/Thumbnails/ThumbnailObject.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,18 @@ internal abstract class ThumbnailObject
1414
public abstract ThumbnailObject Precursor { get; }
1515
internal ThumbnailObject Parent;
1616
internal List<ThumbnailObject> child;
17-
internal string CheckSum;
17+
internal byte[] CheckSum = new byte[GloCla.ThObCheckSumSize];
1818

1919
internal void FigureCheckSum()
2020
{
21-
string MD5input = Precursor.GetHashCode().ToString();
22-
23-
for (int arrayCounter = 0; arrayCounter != ValuesIndeksesKeys.Count(); ++arrayCounter)
24-
MD5input = MD5input + ";" + this[ValuesIndeksesKeys[arrayCounter]].ToString();
25-
21+
IEnumerable<ValueType> values = ValuesIndeksesKeys.Select(VIK => this[VIK]);
22+
string MD5input = Precursor.GetHashCode() + ";" + string.Join(";", values);
2623
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(MD5input);
2724

2825
using (MD5 md5 = MD5.Create())
2926
{
3027
byte[] hashBytes = md5.ComputeHash(inputBytes);
31-
CheckSum = Convert.ToBase64String(hashBytes).Substring(0,4);
28+
Array.Copy(hashBytes, CheckSum, GloCla.ThObCheckSumSize);
3229
}
3330
}
3431

0 commit comments

Comments
 (0)