本文整理汇总了C#中Schedule.Dirty方法的典型用法代码示例。如果您正苦于以下问题:C# Schedule.Dirty方法的具体用法?C# Schedule.Dirty怎么用?C# Schedule.Dirty使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Schedule
的用法示例。
在下文中一共展示了Schedule.Dirty方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Exchange
/// <summary>
/// 换位算子,将一段基因交换
/// 调用Schedule下某个班级的交换随机两天
/// </summary>
private void Exchange(Schedule schedule)
{
int ci = Global.Random.Next(Global.ClassCount);
int first, second;
Global.RandomGeneric2Value(Global.DayPerWeek, out first, out second);
schedule[ci].Exchange2Days(first, second);
schedule.Dirty();
}
示例2: Mutate
/// <summary>
/// 变异算子,内部调用交换算子实现
/// 变异概率20%
/// </summary>
private Schedule Mutate(Schedule s)
{
int ci, d;
//调换概率20%
if (Global.Random.Next(100) < Global.MutateRate)
{
ci = Global.Random.Next(Global.ClassCount);
s[ci].RandomExchange2Days();
s.Dirty();
}
//微调概率20%
if (Global.Random.Next(100) < Global.MutateRate)
{
ci = Global.Random.Next(Global.ClassCount);
d = Global.Random.Next(Global.DayPerWeek);
s[ci][d].RandomExchange2Lesson();
s.Dirty();
}
return s;
}
示例3: Cross
/// <summary>
/// 交叉算子,双亲交配并产生下一代种群
/// </summary>
private void Cross()
{
int first, second;
for (int i = 0; i < _populationSize; i++)
{
Schedule s;
//交叉概率80%
if (Global.Random.Next(100) < Global.CrossRate)
{
Global.RandomGeneric2Value(_populationSize, out first, out second);
//切分的标志,标志以前用第一个个体的基因,标志之后用第二个个体的基因.
int f = Global.Random.Next(Global.ClassCount);
s = new Schedule(Global.ClassCount);
for (int j = 0; j < f; j++)
{
s[j] = new ClassSchedule(_selectedSchedule[first]);
}
for (int j = f; j < Global.ClassCount; j++)
{
s[j] = new ClassSchedule(_selectedSchedule[second]);
}
s.Dirty();
}
else
{
s = new Schedule(_selectedSchedule[Global.Random.Next(_populationSize)]);
}
//将新个体放入新种群
_newPopulation.Add(s);
}
}