跳转到内容

EasySolve使用教程

EasySolve是由浙江大学SCOOL实验室开发的模型求解计算平台,模型输入简易,求解算法丰富,求解速度高效。

EasySolve是模型求解计算平台,您可以根据需要选择您的求解模式。本平台提供四种求解模式,分别是线性方程组求解(Ax=b)、非线性方程组求解(f(x)=0)、混合整数线性规划(MILP)、非线性规划(NLP),各个模式的格式见EasySolve求解模式。

您可以通过手动输入求解内容,也可以通过import自动上传求解模型。点击Clear可以清空输入窗口内容,重新进行书写。完成书写后,点击Solve,EasySolve会进行求解,并在右侧result页面输出结果。您可以点击Export输出结果,将生成一个excel表格存放结果;也可以选择Copy复制结果。您可以通过点击Verbose/Simple键切换结果显示的模式。

您可以在设置中更改设置,在右侧历史记录中查询历史版本。

按照求解模型的不同需求,EasySolve分成四种不同的求解模式。

求解模式模式名称含义
Ax=b线性方程组求解对非齐次线性方程组进行求解
f(x)=0非线性方程组求解对齐次线性方程组进行求解
MILP混合整数线性规划混合整数线性规划问题求解
NLP非线性规划非线性规划问题求解

可求解非齐次方程组 Ax = b,其中 A 为系数矩阵,x 为未知数组成的向量,b 为常数项向量。

在该模式下进行模型求解时,首先分行列写各方程,在最后一行列写所有变量,以**,**隔开。点击Solve,即可进行求解,在右侧result页面中输出结果。

#1)方程组:#
<方程式1>;
<方程式2>;
...
#2)变量声明:#
<变量名1>,<变量名2>,...
例:`
x1+3/3*x3+min(2,5)*x3=1
1*3*x2=4*3
1*3*x2+sin(8-4)*x3=7
x1,x2,x3

可求解齐次方程组 f(x)=0,在书写方程组时只需写出左侧表达式,默认右侧为0。

书写方法与**Ax=b(非齐次方程组求解)**一致,先分行列写各方程,最后一行列写所有变量。点击Solve,即可进行求解,在右侧result页面中输出结果。

#1)方程组:#
<方程式1>;
<方程式2>;
...
#2)变量声明:#
<变量名1>,<变量名2>,...
注:为了使计算收敛,变量必要时需要赋初值,格式为<变量名:初值>;
例:`
x1^2-10*x1+x2^2+8
x1*x2^2+x1-10*x2+8
x1,x2

用于在给定可行域内,求解线性约束下线性目标函数的最优解及最优值。

MILP全称为Mixed-integer linear programming,即混合整数线性规划,指目标函数和约束条件均为线性,部分决策变量限制为整数的数学规划问题。具体来说,其约束条件支持等式约束及不等式约束;变量类型包括 0-1变量、整型变量、实数型变量。

混合整数线性规划(MILP)的设置参数包括:

#1)目标函数:#
min/max(<表达式>)
#2)约束条件:#
<bool表达式1>;
<bool表达式2>;
...
#3)变量声明:#
<变量名1>:<变量类型1>,
<变量名2>:<变量类型2>,
...

其中变量类型包括以下三类:

变量类型含义
10-1二进制变量
2整型变量
3实数型变量

实际列写时,按顺序写下目标函数、约束条件、变量声明的标准格式式子即可,上例中##间的备注内容不必写入。

例:
max((5*1)*x1+3*x2+2*x3+(10-3)*x4+4*x5)
2*x1+(2*4)*x1+4*x3+2*x4+max(1,5)*x5<=5*2
x1:1,x2:1,x3:1,x4:1,x5:1

此动作用于在给定可行域内,求解约束下目标函数的最优解及最优值,其中目标函数和约束条件至少有一个为非线性。

NLP全称为Nonlinear programming,即非线性规划,指目标函数和约束条件至少有一个为非线性的数学规划问题。具体来说,其约束条件支持等式约束及不等式约束;变量类型包括 0-1变量、整型变量、实数型变量。

#1)目标函数:#
<表达式>
#2)约束条件:#
<表达式1>:[表达式下限/表达式上限];
<表达式2>:[表达式下限/表达式上限];
...
#3)变量声明:#
<变量名1>:[变量下限/变量上限/初始值],
<变量名2>:[变量下限/变量上限/初始值],
...
注:
1.若无上下限对应位置不写,如x[/3]表示变量x≤3;
2.变量声明若无初始值要求,可简写为[变量下限/变量上限]。
例:
x1*x4*(x1+x2+x3)+x3
x1*x2*x3*x4:[25/2e19]
x1^2+x2^2+x3^2+x4^2:[40/40]
x1:[1/5],x2:[1/5],x3:[1/5],x4:[1/5],x5:[1/5]

EasySolve可以直接将某一数值或表达式赋给某个变量。赋值号为冒号:或等号=,推荐使用冒号:,赋值顺序为将赋值号右边的值赋给左边。

相关示例如下:

#示例1:直接将值1赋给变量State_POINT
State_POINT: 1;
#示例2:将由变量Cartset_POINT与Cart_POINT组成的表达式的值赋给变量ECar
Ecar: Cartset_POINT - Cart_POINT;

EasySolve可完成的基本数值运算及涉及的运算符如下表所示。

名称运算符
四则运算+    -    *    /
关系运算<    <=    >    >=    ==    !=
逻辑运算&&    ||
取余运算%
幂运算^
位运算&    |    ^^    ~    <<    >>    @

相关示例如下:

#示例3:简单四则运算
Iout: Iout + Igain * Ecarn1 * Ts;
#示例4:多种运算混合
Ilimout: (Iout <= Iuplim && Iout >= Idownlim) * Iout + (Iout > Iuplim) * Iuplim + (Iout < Idownlim) * Idownlim;

EasySolve内置多种常用数学函数及实用时间获取函数,可通过向括号内传入参数进行直接调用,支持的函数及其具体功能如下表所示。

函数功能
abs()求绝对值
sqrt()求平方根
exp()求以e为底的指数
ln()、log10()求自然对数(以e为底)、求常用对数(以10为底)
sin()、cos()、tan()正弦函数、余弦函数、正切函数,单位为弧度
asin()、acos()、atan()反正弦函数、反余弦函数、反正切函数
sinh()、cosh()、tanh()双曲正弦函数、双曲余弦函数、双曲正切函数
asinh()、acosh()、atanh()反双曲正弦函数、反双曲余弦函数、反双曲正切函数
floor()向下取整,即取不大于传入参数的最大整数
ceil()向上取整,即取不小于传入参数的最小整数
round()将传入参数进行四舍五入
signum()符号函数,指出参数正负号,若为正则返回1;零返回0;负返回-1
atan2()计算方位角,弧度表示
max()、min()求多个参数的最大值/最小值,参数用“,”分隔

EasySolve支持的数学常数和数字表示约定如下表。

类别
名称
表示
数学常数
圆周率 pi
自然常数 e
数字表示方法
科学计数法 1e-2    1E-3
十六进制表示 x123    _123    $123