本文档为您介绍工艺推荐引擎的使用场景、基本原理及配置方法。

工艺推荐引擎是AI创作间用于解决生产过程中工艺参数推荐类任务的一种通用算法引擎, 可帮助AI创作者通过图形化配置快速生成工艺参数推荐算法服务。该算法引擎通过将实践验证有效的行业模板与自研的优化算法及工业预测引擎相结合,大幅度提升优化效果,降低优化算法的使用门槛,提升工艺优化算法的交付效率,对于没有任何优化算法背景的工程师,也可基于该引擎得到较优的工艺参数,并用于生产实践,大幅度提高工艺优化算法的交付效率。

引擎使用场景

引擎典型使用场景包括光伏行业组件生产物料组合推荐、化工行业胎面压出工艺优化、化工行业复合肥养分优化等。

引擎工作基本原理

典型的间歇生产过程工艺参数推荐可抽象成工艺参数优化任务,包括建模和求解两个过程。建模过程包含变量配置、目标定义、约束条件定义三个子过程。求解过程则基于建立的优化模型和状态变量具体数值计算出最优解,并发布成在线优化服务。

引擎配置说明

算法建模过程配置分为变量配置和参数配置。
  • 变量配置
    变量类型分为 决策变量状态变量中间变量,变量配置如下图:
    工艺推荐引擎变量配置图
    • 决策变量:需要推荐的可调节的工艺参数,必须指定取值范围。
      • 当变量类型为NUMERIC时,需要给定决策变量的最小值和最大值。例如变量variable0·mock_num_reg_rec要求推荐范围在[0,1]之间,则配置如下:

      • 当变量类型为CATEGORY时,需要给定决策变量可取的值。例如变量variable1·mock_num_reg_rec为离散变量,可取值的类型为A,B,C,D,E和F,则配置如下:

    • 状态变量:描述生产状态的监控变量。
    • 中间变量:工业预测模型的目标变量。
  • 参数配置
    参数配置包括 目标定义约束条件定义
    • 目标定义
      目标定义需要基于已配置的变量和选择的模型,填写目标函数的表达式,如下图所示:
      工艺推荐引擎目标定义参数配置
      说明 变量名可以通过右键画布上的变量图标获得。
    • 约束条件定义
      约束条件需要基于已配置的变量和选择的模型,填写约束函数的表达式,如下图所示:
      工艺推荐引擎约束条件定义
      参数配置如下表:
      选择模型 可选,单击选择已经训练完成的预测模型。选择了模型后,该模型的连线信息会自动出现在画布中,您需要将模型的变量作为算法的输入变量,否则算法会运行失败。
      目标函数 必选,填写工艺推荐问题的优化目标,只支持最小化优化目标。例如: 目标要求 target·mock_num_reg_rec 接近 10,并且 variable0·mock_num_reg_recvariable1·mock_num_reg_rec 尽量接近,则目标函数需填入 (target·mock_num_reg_rec-10)**2+(variable0·mock_num_reg_rec-variable1·mock_num_reg_rec)**2
      约束条件 可选,填写工艺推荐问题中各个变量需要满足的约束条件,默认支持的不等式约束为 f(x)>=0,其中f(x)是关于变量的函数表达式。例如:有三个变量 variable0·mock_num_reg_recvariable1·mock_num_reg_recvariable2·mock_num_reg_rec
      • 若约束是:variable0·mock_num_reg_rec - variable1·mock_num_reg_rec - variable2·mock_num_reg_rec >= 10

        则:f(variable0·mock_num_reg_rec, variable1·mock_num_reg_rec, variable2·mock_num_reg_rec) = variable0·mock_num_reg_rec - variable1·mock_num_reg_rec - variable2·mock_num_reg_rec - 10

        那么约束条件输入框中应该填入:variable0·mock_num_reg_rec -variable1·mock_num_reg_rec - variable2·mock_num_reg_rec - 10

      • 若约束是:variable0·mock_num_reg_rec – variable1·mock_num_reg_rec <= 0

        则:f(variable0·mock_num_reg_rec, variable1·mock_num_reg_rec) = -(variable1·mock_num_reg_rec - variable0·mock_num_reg_rec)

        那么约束条件输入框中应该填入variable1·mock_num_reg_rec - variable0·mock_num_reg_rec

    • 输出说明
      引擎通过API返回输出,输出为json,格式如下:
      {
      "variable0·mock_num_reg_rec":1,
      "variable1·mock_num_reg_rec":2,
      "best":0
      }
      										
      • variable0·mock_num_reg_recvariable1·mock_num_reg_rec为决策变量的变量名。
      • 12 分别为 variable0·mock_num_reg_recvariable1·mock_num_reg_rec 的推荐值。
      • best 为引擎找到的目标函数的最优值。

引擎使用注意的问题

  • 画布上所有变量名相同的变量视为同一变量。所有相同的变量共享连线信息。
  • 画布上每个变量必须连接且只能连接到决策变量状态变量中间变量其中的一个节点上。多个相同变量只需选择任意一个变量进行连接。
  • 引擎支持的决策变量小于20个,支持的约束条件小于20个。
  • 目标函数约束条件中的输入的表达式需要同时满足以下条件:
    • 只允许填入由变量名、固有函数名、+、-、*、^、/、.、(、) 和数字组成的字符串。
    • 符合算术表达式的逻辑。
    • 变量名只支持字母,数字和中文,不支持纯数字的变量名。
    • 变量名和固有函数名不允许相同。
    • 引擎支持的常见函数包含:
      • 以自然常数e为底的指数函数,exp(x)
      • 以自然常数e为底的对数函数,log(x)
      • 非负实数的平方根函数,sqrt(x)
      • x的y次幂指数函数,pow(x,y)
      • 绝对值函数,abs(x)
      • x的y次方,x**y或x^y
      • x加y,x + y
      • x减y,x - y
      • x乘y,x * y
      • x除y,x / y
  • 目前不支持等式约束。简单的等式约束可通过公式化简代入其他约束和目标函数中。
  • 在测试运行中必须对每个状态变量进行赋值。
  • 在进行引擎配置前,首先需要在引擎配置页面左上角选择引擎版本号,版本号确定后,再进行配置,默认为最新版本。