决策者得选择(Strategy) (转)

本文通过一个简单的决策场景,探讨了如何使用策略模式来实现灵活的业务逻辑选择。通过定义一系列的算法,并将每个算法封装起来,使它们可以互相替换,从而让算法的变化独立于使用它的客户。
决策者得选择(Strategy) (转)[@more@]

 

我们似乎总是在为选择这个词苦恼.当我们选择生活得时候就放弃了激情.

当我们选择程序员得时候就放弃了时间.这一切都是在动态得抉择得.并

非有命运决定.而是在动态得自身来决定.好了现在考虑一个比较现实得

问题.假设.如果你有个临时会议.却无法确定什么时候要去.因为是临时

决定得.就无法决定.如果现在得时间是5:00--6:00那么你必须要去参加.否则

你依然可以留在公司办公.且开会和办公都需要整理文件那么这就是无法

确定得因素.也许会说可以用if作判断.那么如果是一个很复杂得情况.

并且考虑多个组件对象见得协调那么很显然单纯If很难承担这样得责任.

所以必须使用面向对象得模式.由于决策是在动态决定得.所以无法得到一个

比较确切得解决之道.所以考虑抽象类.和晚期绑定是很现实得事情.那么

我们来考虑责任和责任人之间得关系.责任是解决方案和决策者本身得选取.

而解决方案由很多条.显然无法提前决定.必须由一个抽象对象来完成不变得.

而由其派生对象决定策略.而决策者负责得是决策得选取.它也同样得动态得

选取策略.那么分析之后来模拟该规则


//指定策略
public abstract class MeetingCase{
  //无论何种解决方案都必须得整理文集
  public void PlanFile(){
  Console.WriteLine("整理文件");
  }
  public abstract void selectCase();
}

public class OnMeeting : MeetingCase{

  override  public  void selectCase(){
  PlanFile();
  Console.WriteLine("去开会");
  }
}

public class NoMeeting : MeetingCase{

  override  public  void selectCase(){
  PlanFile();
  Console.WriteLine("留在公司办公");
  }
}


//策略的决策

public interface ISelectCase{
  MeetingCase mc{get;};
  void ExecuteCase();
  void ChangeCase(MeetingCase NewCase);
}


public class MeetingSelect{
  private MeetingCase Mc=null;
 
  public MeetingCase mc{
  get{return Mc;}
  }
 
  public  void ExecuteCase(){
  Mc.selectCase();
  }
 
  public  void ChangeCase(MeetingCase NewCase){
  this.Mc=NewCase;
  }
}

public class Client
  {
  public static int Main(string[] args)
 { 
 ISelectCase ms=new MeetingSelect();
  MeetingCase om=new OnMeeting();
  MeetingCase nm=new NoMeeting();

 
  if(DateTime.Now.Hour==5){
  ms.changeCase(om);
  ms.ExecuteCase();
  }
  else{
  ms.changeCase(nm);
  ms.ExecuteCase();
  }
  return 0;
  }
  }
}

这样就可以把决策权留到晚期在决定.


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-998951/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-998951/

内容概要:本文介绍了一个基于MATLAB实现的多目标粒子群优化算法(MOPSO)在无人机三维路径规划中的应用。该代码实现了完整的路径规划流程,包括模拟数据生成、障碍物随机生成、MOPSO优化求解、帕累托前沿分析、最优路径选择、代理模型训练以及丰富的可视化功能。系统支持用户通过GUI界面设置参数,如粒子数量、迭代次数、路径节点数等,并能一键运行完成路径规划与评估。代码采用模块化设计,包含详细的注释,同时提供了简洁版本,便于理解和二次开发。此外,系统还引入了代理模型(surrogate model)进行性能预测,并通过多种图表对结果进行全面评估。 适合人群:具备一定MATLAB编程基础的科研人员、自动化/控制/航空航天等相关专业的研究生或高年级本科生,以及从事无人机路径规划、智能优化算法研究的工程技术人员。 使用场景及目标:①用于教学演示多目标优化算法(如MOPSO)的基本原理与实现方法;②为无人机三维路径规划提供可复现的仿真平台;③支持对不同参数配置下的路径长度、飞行时间、能耗与安全风险之间的权衡进行分析;④可用于进一步扩展研究,如融合动态环境、多无人机协同等场景。 其他说明:该资源包含两份代码(详细注释版与简洁版),运行结果可通过图形界面直观展示,包括Pareto前沿、收敛曲线、风险热图、路径雷达图等,有助于深入理解优化过程与结果特性。建议使用者结合实际需求调整参数,并利用提供的模型导出功能将最优路径应用于真实系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值