information_schema系统表——COLUMNS

本文介绍了COLUMNS系统表的内容,该表提供了数据库中各表列的详细信息,包括列名、数据类型、默认值等属性,并解释了这些信息如何用于理解和管理数据库结构。

该系统表包含了所有表的列信息

The COLUMNS table provides information about columns in tables.

INFORMATION_SCHEMA Name SHOW Name Remarks
TABLE_CATALOG   def
TABLE_SCHEMA    
TABLE_NAME    
COLUMN_NAME Field  
ORDINAL_POSITION   see notes
COLUMN_DEFAULT Default  
IS_NULLABLE Null  
DATA_TYPE Type  
CHARACTER_MAXIMUM_LENGTH Type  
CHARACTER_OCTET_LENGTH    
NUMERIC_PRECISION Type  
NUMERIC_SCALE Type  
DATETIME_PRECISION Type  
CHARACTER_SET_NAME    
COLLATION_NAME Collation  
COLUMN_TYPE Type MySQL extension
COLUMN_KEY Key MySQL extension
EXTRA Extra MySQL extension
PRIVILEGES Privileges MySQL extension
COLUMN_COMMENT Comment MySQL extension
GENERATION_EXPRESSION   MySQL extension

Notes:

  • In SHOW, the Type display includes values from several different COLUMNS columns.

  • ORDINAL_POSITION is necessary because you might want to say ORDER BY ORDINAL_POSITION. Unlike SHOWSELECT does not have automatic ordering.

  • CHARACTER_OCTET_LENGTH should be the same as CHARACTER_MAXIMUM_LENGTH, except for multibyte character sets.

  • CHARACTER_SET_NAME can be derived from Collation. For example, if you say SHOW FULL COLUMNS FROM t, and you see in the Collation column a value oflatin1_swedish_ci, the character set is what is before the first underscore: latin1.

  • GENERATION_EXPRESSION is nonempty for generated columns and displays the expression used to compute column values. For information about generated columns, see Section 13.1.18.8, “CREATE TABLE and Generated Columns”.

  • The EXTRA column contains VIRTUAL GENERATED or VIRTUAL STORED for generated columns.




<think>嗯,用户想了解如何将分支定界法与列生成相结合在优化中的应用。首先,我得回顾一下这两种方法的基本概念。分支定界法是一种用于整数规划问题的精确算法,通过不断分割可行解空间并计算上下界来剪枝,减少搜索范围。而列生成则适用于大规模线性规划问题,通过动态生成变量(列)来避免枚举所有可能的变量,特别在解决主问题时,通过子问题生成有潜力的新列。 接下来,用户的问题是如何将两者结合起来。可能的应用场景是处理大规模整数规划问题,比如车辆路径问题或资源分配问题,其中问题规模太大无法直接使用传统的分支定界法。这时候,列生成可以嵌入到分支定界的每个节点中,生成必要的列来得到更紧的上下界,从而提升整体效率。 我需要考虑两者的结合方式。例如,在分支定界的每个节点上,使用列生成来解决线性松弛问题,生成有效的列,然后根据当前解的情况进行分支。不过,这里可能存在一些问题,比如如何处理整数性条件,或者在列生成过程中如何维护分支后的约束。此外,列生成本身可能带来计算开销,如何平衡生成列的数量和分支的速度也是一个挑战。 参考现有的文献,比如引用[1]提到的列生成与分支策略的结合,可能涉及分支定价(Branch-and-Price)方法。这种方法在分支的同时,不断生成新的列,以保持主问题的紧凑性,同时确保每个节点的解都满足整数条件。另外,引用[2]中提到的精确算法可能与这种结合有关,尤其是在多目标优化中如何应用。 还需要注意列生成中的限制主问题和子问题的设计,确保在分支后子问题能适应新的约束条件。例如,当分支决策限制了某些变量的取值时,子问题需要能够反映这些限制,避免生成不符合分支条件的列。此外,如何有效地管理分支定界树中的节点,避免重复计算或遗漏可行解,也是需要考虑的。 总结来说,结合的关键点在于将列生成嵌入到分支定界的每个节点中,通过动态生成变量来提高每个节点的线性松弛质量,从而加速整体的搜索过程。同时,需要处理整数约束和分支带来的额外限制,确保算法的正确性和效率。</think>### 分支定界法与列生成结合的关键步骤 分支定界法(Branch and Bound, B&B)与列生成(Column Generation, CG)的结合在优化领域被称为**分支定价(Branch-and-Price)**,主要用于大规模整数规划问题(如车辆路径、调度问题)。以下是核心实现步骤: 1. **主问题建模** 将原问题分解为限制性主问题(Restricted Master Problem, RMP),仅包含部分变量(列),并通过线性松弛忽略整数约束。例如,在车辆路径问题中,主问题可能仅包含部分可行路径集合[^1]。 2. **列生成迭代** - **求解RMP**:通过线性规划(LP)求解当前主问题,获得对偶变量值。 - **子问题求解**:利用对偶变量构建子问题(如定价问题),生成能改进目标函数的新列(变量)。子问题通常是最短路径、背包问题等组合优化问题。 - **终止条件**:当子问题无法生成负检验数的列时,列生成终止。 3. **分支定界框架** - **分支决策**:若RMP的松弛解不满足整数性(如变量$x_{ij} \notin \{0,1\}$),按特定规则分支(如选择分数变量$x_{ij}=0$或$x_{ij}=1$)。 - **节点管理**:将分支后的子问题作为新节点加入搜索树,重复列生成过程直至所有节点完成搜索。 $$ \min \sum_{j \in J} c_j x_j \quad \text{s.t.} \quad \sum_{j \in J} a_{ij} x_j \geq b_i \quad (i \in I), \quad x_j \in \{0,1\} $$ 4. **关键技术挑战** - **稳定性**:列生成中可能出现震荡现象(交替生成重复列),需通过扰动或稳定化技术缓解[^1]。 - **分支兼容性**:分支规则需与子问题结构兼容,例如在资源约束问题中使用Ryan-Foster分支规则[^2]。 - **启发式加速**:结合启发式方法(如限制主问题规模、提前终止列生成)提升计算效率[^3]。 ### 应用示例:车辆路径问题(VRP) 1. **主问题**:选择部分路径覆盖所有客户需求。 2. **子问题**:生成费用最低的新路径(检验数计算)。 3. **分支**:若某路径使用次数为分数,强制其被包含或排除。 ```python # 伪代码示例:分支定价框架 def branch_and_price(): root_node = initialize_root() active_nodes = [root_node] best_solution = None while active_nodes: node = select_node(active_nodes) columns = generate_columns(node) # 列生成过程 solve_rmp(node, columns) if node.lb < global_ub: if solution_is_integer(node): update_global_ub(node) else: branch_on_variable(node) add_children_to_active(active_nodes) return best_solution ``` ### 引用说明 - 列生成与分支策略的兼容性设计可参考资源分配问题的分支规则。 - 多目标优化中的分支定价需结合分层目标方法。 - 动态调整策略(如自适应查询执行)可提升鲁棒性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值