当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 希望在专题开发版内 大家都是主人翁 积极发表对本版的建议 谢谢支持 如有问题想和我讨论: msn:chenga@netease.com ......
 ·关于数据库连接的问题    »显示摘要«
    摘要: 我是一名vb。net的新手,现正用v.net开发asp.net的应用程序,在数据库连接中,我不想用.net提供的数据连接控件,我想在编程中实现数据的连接(oracle8),我遇到了以下几个问题,请各位高手指教。 1、首先在起始页中定义了mydataset,mycommand,myconnection几个变量,在这个web页中实现了数据库的连接,但我在同一项目中新建了一个web页后,请问如何......


HELP一道规划问题的优化 问题描述(太长了,只好发到2个贴子)

/*  
  问题:  
          把n个人分成p组,每组m人。每个人都有k个特性。现在我们只考虑把50个人分成5组,每组10人,每个人都有5个特性:性别,有无工程师背景,是否是国际学生,   有无marketing背景,   GMAT成绩。分组的5个标准是:每组要求女性成员小于等于2人,大于等于1人;   国际学生大于等于1人,工程师等于2人。有marketing背景的大于等于2人。每组的GMAT平均成绩等于所有50个学生的平均值。要求分组后,各组都尽可能达到这些要求,如果有些组女性多于2人或小于1人,多的人数或少的人数都要乘以罚金10;如果有些组国际学生小于1人,少的人数乘以罚金5;如果有些组工程师不等于2人,超过或不足的人数都要乘以罚金8。如果有些组有marketing背景的人数小于2人,不足的人数乘以罚金12;每组的GMAT平均成绩多于或少于总平均值的分数都乘以罚金1。分组的目标就是使得这5个目标的总罚金为最小。  
   
  分组过程:  
  (1)   从50个人中随机选一人放入第一组,   然后计算加入剩下49人中的一人后的总罚金,也就是组里只有2个人的罚金,然后按罚金从小到大排序成一队,在队列的前40%中随机选一个人作为这组中第2个成员。然后再计算加入另外48人中的一人后的总罚金,也就是组里只有3个人的罚金,然后按罚金从小到大排序成一队,在队  
  列的前40%中随机选一个人作为这组中第3个成员。直到满足人数要求10。在从剩下40人中随机选一人放入第二组,用同样的方法直到把所有的人分成5组。这样就得到一个完整的分组解而且有一个现有的总罚金。  
   
          (2)然后每个组中的每一个人都要与其他组的成员交换位置,如果交换后的总罚金小于现有值,就把新的解取代原来的解保存下来。所有的交换结束后就得到第一次循环后的当前最优解。  
          (3)然后在重新开始以上的步骤,从50个人中随机选一人放入第一组...   再得到一个完整的分组解而且有一个现有的总罚金,交换位置后把产生的解作为目前最优解保存下来。如果这个当前最优解好于第一次循环产生的,就用后来好的解代替原来的目前最优解。这样不断循环,直到循环50次,结束寻找。  
          把50次循环产生的最优解作为最终的结果。  
   
  初始数据:存放在当前目录下的data.txt文件中  
  1 0 0 1 640  
  1 1 0 1 710  
  0 0 0 0 610  
  1 0 0 0 700  
  0 0 1 0 670  
  1 0 0 0 680  
  0 0 0 0 640  
  0 0 1 0 630  
  0 0 0 0 570  
  0 1 0 1 640  
  0 0 0 0 670  
  0 0 0 0 670  
  0 0 0 0 640  
  1 0 0 1 610  
  1 0 0 0 570  
  0 0 0 0 590  
  1 0 0 0 650  
  1 0 0 0 610  
  0 0 0 0 600  
  1 1 0 0 650  
  0 1 0 0 520  
  1 1 0 1 610  
  1 0 0 0 650  
  0 0 0 0 720  
  1 1 0 1 590  
  0 0 1 0 660  
  0 0 0 0 710  
  1 0 0 1 600  
  0 0 0 1 610  
  1 0 0 0 550  
  0 0 0 0 610  
  0 0 0 0 570  
  0 1 1 0 600  
  0 0 0 0 640  
  0 0 0 0 720  
  1 0 0 1 680  
  0 0 1 0 640  
  0 0 0 0 700  
  0 1 0 0 700  
  0 0 1 0 760  
  1 1 0 1 630  
  0 0 0 0 730  
  1 0 1 0 590  
  1 0 0 0 680  
  0 0 0 0 660  
  0 0 0 0 630  
  1 1 0 0 610  
  0 0 0 0 630  
  0 0 0 0 580  
  0 1 1 0 640  
  */  
 

NO.1   作者: SoftWare1999

你的寻优过程,就只是一个贪心而已啊,没有理论支持,你的寻优过程是最优的。  
   
  只不过用了50次找最优,造这样看。还不如用遗传算法,或模拟退火算法寻优还好些。  
   
  还有你Help什么啊?


 ·如何实现打印功能    »显示摘要«
    摘要: 如何在自己的windows程序中调用dos命令,我要实现的是dos命令下的打印功能,因为我的打印机只支持dos的打印,我的程序是用vc6做的windows程序,怎么办,请各位帮帮我? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE