34
Xpress-Kalis 入入 林林林林 2007.6

Xpress-Kalis 入门

  • Upload
    palmer

  • View
    195

  • Download
    0

Embed Size (px)

DESCRIPTION

Xpress-Kalis 入门. 林森科技 2007.6. 概述. 约束规划的基本概念 建模基础 约束 枚举. 约束规划的基本概念. 一个约束规划( CP )问题由带有域的决策变量和在这些变量上的约束来定义。问题的定义通常由分支策略(也指枚举或者搜索策略)完成。 针对不同的约束采用不同的策略 约束传播:无论何时变量域被修改,即触发这个变量上所有约束的一个重求值. 约束传播示例. 建模. 用 Xpress-Kalis 创建和求解简单 CP 模型 理解和分析软件产生的输出 扩展带有数据处理的模型 定义一个目标函数 修改缺省分支策略. 模型示例. - PowerPoint PPT Presentation

Citation preview

Page 1: Xpress-Kalis 入门

Xpress-Kalis 入门

林森科技2007.6

Page 2: Xpress-Kalis 入门

概述

约束规划的基本概念

建模基础

约束

枚举

Page 3: Xpress-Kalis 入门

约束规划的基本概念 一个约束规划( CP )问题由带有域的决策

变量和在这些变量上的约束来定义。问题的定义通常由分支策略(也指枚举或者搜索策略)完成。

针对不同的约束采用不同的策略 约束传播:无论何时变量域被修改,即触发

这个变量上所有约束的一个重求值

Page 4: Xpress-Kalis 入门

约束传播示例

Page 5: Xpress-Kalis 入门

建模 用 Xpress-Kalis 创建和求解简单 CP 模型 理解和分析软件产生的输出 扩展带有数据处理的模型 定义一个目标函数 修改缺省分支策略

Page 6: Xpress-Kalis 入门

模型示例考虑下面的问题:我们希望在三个时

间空挡(从 1 到 3 )安排四个会议 A,B,C 和D 。由同一部分人参加的会议,不能在同一时间举行,即:会议 A 不能与会议 B 或者 D在同一时间,会议 B 不能与会议 C 或者 D在同一时间。

Page 7: Xpress-Kalis 入门

为了更加正式,我们可以象下面那样写出这个问题,这里 planm ()表示会议 m 的时间空挡――这些是我们问题的决策变量。

Page 8: Xpress-Kalis 入门

通用结构 使用 Kalis 约束求解器 定义决策变量队列 设置变量的域 定义约束 使用函数 cp_find_next_sol 求解问题

Page 9: Xpress-Kalis 入门

模型示例一个科技大学需要在学期末用几

个可选择的模块为课程编排考试时间。每一场考试时间为 2 小时。考试在两天内完成,每天的考试时间段为: 8:00–10:00, 10:15–12:15, 14:00–16:00, 和 16:15–18:15 ,也就是总共八个时间段。对于每一个考试,如果因为参加考试的人是相同的学生则考试不能发生在同一时间,这个不相容的考试集合如下表 2.1 所示

Page 10: Xpress-Kalis 入门

不同考试间的不相容性

Page 11: Xpress-Kalis 入门

模型描述 设置变量的域 定义一个不相容队列

Page 12: Xpress-Kalis 入门

输入文件

Page 13: Xpress-Kalis 入门

优化 我们最小化时间安排 引入新决策变量 numslot ,它定义为大于

每个 plan 的值 这样我们最小化 numslot 就得到了 plan 安

排的最少时间 使用函数 cp_minimize(numslot)

Page 14: Xpress-Kalis 入门

枚举 自定义枚举策略 cp_set_branching(assign_var(KALIS_SM

ALLEST_DOMAIN, KALIS_MIN_TO_MAX)) KALIS_SMALLEST_DOMAIN 从域值区间最

小的变量出发 KALIS_MIN_TO_MAX 从最小值到最大值进

行搜索

Page 15: Xpress-Kalis 入门

IVE 搜索树显示 可行解被绿色正方形表示 最佳解被略大的正方形标记 在树上的搜索框中通过指明变量名称来突出给定变量分支

Page 16: Xpress-Kalis 入门
Page 17: Xpress-Kalis 入门

第 3章 约束 all_different ,全不同约束 abs 和距离约束 element元素 约束

Page 18: Xpress-Kalis 入门

all_different全不同约束: Sudoku难题 Sudoku难题,起源于日本,最近在许多西方报纸中出现过。这些难题的观点是完成一个给定的,部分地用数字 1 到 9 填充的 9×9棋盘,按照这种方法――即行,列或者 3×3 正方形不包含重复数字。表 3.1 和 3.2显示了这个难题的例子。同时聪明地解决这个难题,可以通过 CP方法来进行。

Page 19: Xpress-Kalis 入门
Page 20: Xpress-Kalis 入门

在例子中,我们用集合 XS = {A, B, . . . , I}标注棋盘的列,用集合 YS = {1, 2, . . . , 9}标注行。对于在 XS中的每一个 x 和在 YS中的y,我们定义一个决策变量 vxy,它取位置为( x,y)处的数为其值。

Page 21: Xpress-Kalis 入门

利用 all-different 表示

Page 22: Xpress-Kalis 入门

表示方法 all_different(union(x in {’G’,’H’,’

I’}, y in {1+3*i,2+3*i,3+3*i}) {v(x,y)}) 缺省是 KALIS_FORWARD_CHECKING ,前向检查策略

还可以采用 KALIS_GEN_ARC_CONSISTENCY 通用弧一致策略

Page 23: Xpress-Kalis 入门

abs 和距离:频率分配我们根据离散频率带宽的需求给出了

一个单元(节点)网络。每个单元对一些频率(带宽)有一定的需求。图 3.1显示了网络的结构。由边连接的节点被看做是邻居。它们不能被赋予相同的频率以避免干扰。另外,如果一个单元使用几个频率,所有频率必须至少相差 2 。目标最小化网络中使用的频率数。

Page 24: Xpress-Kalis 入门
Page 25: Xpress-Kalis 入门

每个节点的频率需求

Page 26: Xpress-Kalis 入门

模型表述 定义节点集合 定义频率集合 定义频率需求集合 定义连接集合

Page 27: Xpress-Kalis 入门

实现 distance(use(c), use(d)) >= 2 或者 abs(use(c) - use(d)) >= 2

Page 28: Xpress-Kalis 入门

元素:在一台机器上的顺序工作

Page 29: Xpress-Kalis 入门

分离表达 分离表达式

约束表达形式

Page 30: Xpress-Kalis 入门

实现 disjunctive(union(j in JOBS) {start(j)}, DURS, Disj, 1)

Star 表示起始时间的矩阵 DURS整数表达的持续时间 Disj空矩阵,最后的结果 1 ,表示资源可占有数

Page 31: Xpress-Kalis 入门

Strategy(1):= settle_disjunction(Disj)

从左到右进行搜索

Page 32: Xpress-Kalis 入门

第 4章枚举

预定义搜索策略

中断和重新开始枚举的方法

搜索回退

用户搜索策略的定义

Page 33: Xpress-Kalis 入门

预定义搜索策略(域策略) KALIS_INPUT_ORDER 按照给定顺序的变量, KALIS_LARGEST_MAX 按照上限最大的变量, KALIS_LARGEST_MIN 按照下限最大的变量, KALIS_MAX_DEGREE 按照变量涉及的约束数, KALIS_MAXREGRET_LB 按照下限和次最小值间的差异递减的顺序, KALIS_MAXREGRET_UB 按照上限和次最大值间的差异递减的顺序, KALIS_RANDOM_VARIABLE 按照随机选择, KALIS_SDOMDEG_RATIO 按照域值和搜索深度比率递增的顺序, KALIS_SMALLEST_DOMAIN 按照域值递增的顺序, KALIS_SMALLEST_MAX 按照上限最小的变量, KALIS_SMALLEST_MIN 按照下限最小的变量。

Page 34: Xpress-Kalis 入门

值策略 KALIS_MAX_TO_MIN 以降序排列进行枚举, KALIS_MIDDLE_VALUE 在变量域的中间值枚举第

一个值, KALIS_MIN_TO_MAX 以升序排列进行枚举, KALIS_NEAREST_VALUE 选择接近先前由 settar

get 指定的目标值, KALIS_RANDOM_VALUE 从变量域内选择随机值。