数独问题SAS/OR求解-经管之家官网!

人大经济论坛-经管之家 收藏本站
您当前的位置> 软件培训>>

SAS软件培训

>>

数独问题SAS/OR求解

数独问题SAS/OR求解

发布:zhou.wen | 分类:SAS软件培训

关于本站

人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!

经管之家新媒体交易平台

提供"微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯"等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

提供微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

利用PROCCLP求解数独问题.TranslatedFromSASHELP........CLP过程简介:解决CSP(约束满足问题),即由一个变量集合和一个约束集合组成。问题的一个状态是由对一些或全部变量的一个赋值定义的完全赋值:每个变量都参与 ...
免费学术公开课,扫码加入


利用PROC CLP求解数独问题.
Translated From SAS HELP........
CLP过程简介:
解决CSP(约束满足问题),即由一个变量集合和一个约束集合组成。问题的一个状态是由对一些或全部变量的一个赋值定义的完全赋值:每个变量都参与的赋值。问题的解是满足所有约束的完全赋值,或更进一步,使目标函数最大化。
var 语句:声明变量的定义域:例如:variable <=[lower-bound <, upper-bound>]>
alldiff语句:互不相等条件,约束输入变量必须为互不相等的变量
如:var (X1-X3) A B;alldiff (X1-X3) (A B); 等价于:X1 ne X2,X2 ne X3 ,X3 ne X1 and A ne B
lincon语句:线性约束,例如:lincon 4 * x1 - 3 * x2 = 5;
有如下数独问题(以下代码需在SAS9.3版本或以上方可运行成功)
1.输入数独矩阵:
  1. data indata;
  2. input C1-C9;
  3. datalines;
  4. . . 5 . . 7 . . 1
  5. . 7 . . 9 . . 3 .
  6. . . . 6 . . . . .
  7. . . 3 . . 1 . . 5
  8. . 9 . . 8 . . 2 .
  9. 1 . . 2 . . 4 . .
  10. . . 2 . . 6 . . 9
  11. . . . . 4 . . 8 .
  12. 8 . . 1 . . 5 . .
  13. ;
  14. run;
复制代码2.将数独矩阵赋值给宏变量C_1_1至C_9_9
  1. %macro store_initial_values;
  2. /* 储存初值到宏变量C_i_j */
  3. data _null_;
  4. set indata;
  5. array C{9};
  6. do j = 1 to 9;
  7. i = _N_;
  8. call symput(compress('C_'||put(i,best.)||'_'||put(j,best.)),
  9. put(C[j],best.));
  10. end;
  11. run;
  12. %mend store_initial_values;

  13. %store_initial_values;
复制代码3.利用CLP过程求解数独问题
  1. %macro solve;
  2. proc clp out=outdata;

  3. /* VAR 语句 声明求解变量X_1_1至X_9_9取值范围为[1,9] */
  4. /* alldiff语句:约束条件:行约束,每行元素互不相同,如X_1_1:X_1_9的取值互不相同*/
  5. %do i = 1 %to 9;
  6. var (X_&i._1-X_&i._9) = [1,9];
  7. alldiff(X_&i._1-X_&i._9);
  8. %end;

  9. /* alldiff语句:约束条件:列约束,每列元素互不相同,如X_1_1:X_9_1的取值互不相同*/
  10. %do j = 1 %to 9;
  11. alldiff(
  12. %do i = 1 %to 9;
  13. X_&i._&j
  14. %end;
  15. );
  16. %end;

  17. /* alldiff语句:约束条件:块约束,3X3矩阵元素互不相同,如X_1_1:X_3_3的取值互不相同*/
  18. %do s = 0 %to 2;
  19. %do t = 0 %to 2;
  20. alldiff(
  21. %do i = 3*&s + 1 %to 3*&s + 3;
  22. %do j = 3*&t + 1 %to 3*&t + 3;
  23. X_&i._&j
  24. %end;
  25. %end;
  26. );
  27. %end;
  28. %end;

  29. /* lincon语句:初值约束,已知变量约束如X_1_3=C_1_3=5 */
  30. /* 如果C_i_j非缺失,则X_i_j = C_i_j*/
  31. %do i = 1 %to 9;
  32. %do j = 1 %to 9;
  33. %if &&C_&i._&j ne . %then %do;
  34. lincon X_&i._&j = &&C_&i._&j;
  35. %end;
  36. %end;
  37. %end;

  38. run;
  39. %put &_ORCLP_;
  40. %mend solve;

  41. %solve
复制代码4.输出结果work.outdata

本帖曾在论坛引起争议,自知理亏,不辩解。日后SASHELP的东西也注明出处。。
「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
本文关键词:

本文论坛网址:https://bbs.pinggu.org/thread-2679978-1-1.html

人气文章

1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。