Replicator活动

使用 ReplicatorActivity 活动可以在运行时创建单个活动的任意多个实例。 每个 ReplicatorActivity 活动都只能包含一个子活动,但该子活动可以是复合活动。

默认情况下,ReplicatorActivity 活动在所有子活动都已完成时完成。 您可以使用 UntilCondition 属性,在子活动实例完成之前停止执行 ReplicatorActivity。
ReplicatorActivity 需要两条关键信息:

ExecutionType 属性必须设置为 Sequential 或 Parallel。 ExecutionType 属性指示复制的子活动实例是以并行方式还是顺序方式执行。如果是以并行方式执行,则将在 ReplicatorActivity 活动执行时创建所有实例;如果是以顺序方式执行,则将依次执行子活动的每个实例,即:前一个实例完成后再执行下一个实例。

必须填充 InitialChildData 集合属性,以便为子活动的每个复制实例提供数据。

可以实现在 ReplicatorActivity 开始执行之前引发的 Initialized 处理程序,以填充 InitialChildData 集合属性并设置 ExecutionType。

还可以指定使以下事件可以与 ReplicatorActivity 活动一起使用的处理程序:

ChildInitialized 事件在每次初始化子活动的实例时都会引发,它将 InitialChildData 集合的该项中的数据传递给要初始化的子活动的实际实例。ReplicatorChildEventArgs 包含该处理程序的事件参数。

每当子活动的实例完成时都会引发的 ChildCompleted 事件。ReplicatorChildEventArgs 包含此处理程序的事件参数。

在 ReplicatorActivity 完成后引发的 Completed 事件。

当子活动执行多次时,会为每次迭代创建子活动的一个单独实例。 这样便可以单独执行实例(对于 ConditionedActivityGroup 活动,可能会以并行方式执行实例)。 因此,活动树(称为模板)中的活动的定义永远不会执行,并总是处于 Initialized 状态。 对模板的运行实例的访问由作为模板父级的复合活动提供。 例如,对于 ReplicatorActivity 活动,可能存在多个活动的实例,从而使得 ReplicatorActivity.DynamicActivities 返回子活动的运行实例的集合。
首先拖进一个Replicator 和 一个Code活动到wrokflow1.cs
然后向其中添加如下代码:
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
using System.Drawing;
using System.Linq;
using System.Workflow.ComponentModel.Compiler;
using System.Workflow.ComponentModel.Serialization;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Workflow.Runtime;
using System.Workflow.Activities;
using System.Workflow.Activities.Rules;
namespace WorkflowConsoleApplication2
{
public sealed partial class Workflow1 : SequentialWorkflowActivity
{
private String vote;
private int countAll = 0;
private String result = String.Empty;
private ArrayList array;

public int CountAll
{
get { return countAll; }
}

public String Result
{
get { return result; }
}

public ArrayList ArrayL
{
get { return array; }
set { array = value; }
}

public Workflow1()
{
InitializeComponent();
}

private void replicatorActivity1_Initialized(object sender, EventArgs e)
{
this.replicatorActivity1.InitialChildData = array;
}

private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
countAll++;
}

private void replicatorActivity1_ChildInitialized(object sender, ReplicatorChildEventArgs e)
{
vote = e.InstanceData as String;
vote = "您给" + vote + "投了票";
System.Console.WriteLine(vote);
}

private void replicatorActivity1_ChildCompleted(object sender, ReplicatorChildEventArgs e)
{
result = result + "\n" + vote;
System.Console.WriteLine("completed" + countAll);
}

private void replicatorActivity1_Completed(object sender, EventArgs e)
{
System.Console.WriteLine("all completed");
}
}

}


将Program.cs中的代码修改如下:
using System.Linq;
using System.Text;
using System.Threading;
using System.Workflow.Runtime;
using System.Workflow.Runtime.Hosting;
using System.Collections;
namespace WorkflowConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
using(WorkflowRuntime workflowRuntime = new WorkflowRuntime())
{
AutoResetEvent waitHandle = new AutoResetEvent(false);
workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) {waitHandle.Set();};
workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e)
{
Console.WriteLine(e.Exception.Message);
waitHandle.Set();
};
[b] Dictionary<string, object> dic = new Dictionary<string, object>();
ArrayList list = new ArrayList();
list.Add("chenyuan");
list.Add("yuanchen");
dic.Add("ArrayL",list);
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WorkflowConsoleApplication2.Workflow1),dic);[/b]
instance.Start();

waitHandle.WaitOne();
}
}
}
}
内容概要:本文围绕“基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究”展开,提出了一种结合Koopman算子理论与递归神经网络(RNN)的数据驱动建模方法,旨在对非线性纳米定位系统进行有效线性化建模,并实现高精度的模型预测控制(MPC)。该方法利用Koopman算子将非线性系统映射到高维线性空间,通过递归神经网络学习系统的动态演化规律,构建可解释性强、计算效率高的线性化模型,进而提升预测控制在复杂不确定性环境下的鲁棒性与跟踪精度。文中给出了完整的Matlab代码实现,涵盖数据预处理、网络训练、模型验证与MPC控制器设计等环节,具有较强的基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)可复现性和工程应用价值。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及自动化、精密仪器、机器人等方向的工程技术人员。; 使用场景及目标:①解决高精度纳米定位系统中非线性动态响应带来的控制难题;②实现复杂机电系统的数据驱动建模与预测控制一体化设计;③为非线性系统控制提供一种可替代传统机理建模的有效工具。; 阅读建议:建议结合提供的Matlab代码逐模块分析实现流程,重点关注Koopman观测矩阵构造、RNN网络结构设计与MPC控制器耦合机制,同时可通过替换实际系统数据进行迁移验证,深化对数据驱动控制方法的理解与应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值