导图社区 OPL算法
运筹学软件OPL基本用法思维导图
排队论(Queuing Theory) ,是研究系统随机聚散现象和随机服务系统工作过程的数学理论和方法,又称随机服务系统理论,为运筹学的一个分支。
项目管理是管理学的一个分支学科 ,对项目管理的定义是:指在项目活动中运用专门的知识、技能、工具和方法,使项目能够在有限资源限定条件下,实现或超过设定的需求和期望的过程。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
运筹学软件OPL基本用法
实例1
dvar float x1; dvar float x2; maximize 3*x1+5*x2; subject to { 4*x1+8*x2<=100; 7*x1-2*x2<=35; }
要点
关键字dvar定义决策变量
关键字maximize/minimize定义目标函数
关键字“subject to”定义约束
决策变量类型
Float (浮点型/实型) dvar float f; dvar float+ f; (注意:float+ 表示非负实数)
float f = 3.2; (注意:不能写成 float+ f = 3.2; )
Integer(整型) dvar int x; dvar int+ x; (注意:int+ 表示非负整数)
int n = 3; (注意:不能写成 int+ n = 3; ) int size = n*n;
0-1变量 dvar boolean y;
String(字符串型) string Task = "ceiling";
实例2 定义参数
int c1=3; int c2=5; dvar float x1; dvar float x2; maximize c1*x1+c2*x2; subject to { 4*x1+8*x2<=100; 7*x1-2*x2<=35; }
/* .mod file */ int c1=...; int c2=...;
/* .dat file */ c1=3; c2=5;
数据与程序分离
范围
(1) range Rows = 1..10; range float X = 1.0..100.0;
(2) int n = 8; range Rows = n+1..2*n+1;
(3)range R = 1..100; int A[R]; // A is an array of 100 integers
(4)range R = 1..100; forall(i in R) { //element of a loop 循环语句 }
数组
一维数组 One-dimensional arrays
1、int a[1..4] = [10, 20, 30, 40]; 2、float f[1..4] = [1.2, 2.3, 3.4, 4.5]; 3、string d[1..2] = [“Monday”, “Wednesday”];
range R = 1..4; int a[R] = [10, 20, 30, 40];
多维数组 Multidimensional Array
/* .mod file */ int a[1..2][1..3] = ...;
/* .dat file */ a = [ [10, 20, 30], [40, 50, 60] ];
范围与数组
range Range_A = 1..10; range Range_B = 1..20; dvar int+ y[Range_A][Range_B]; dvar int x[Range_A][Range_B] in 0..100;
约束
range Range_A = 1..10; range Range_B = 1..20; dvar int x[Range_A][Range_B] in 0..100; dvar int+ y[Range_A][Range_B]; minimize …
subject to{ forall( i in Range_A) x[i][1] ==1; forall( i in Range_A) sum( j in Range_B) y[i][j] <= 200; //求和关键字:sum … }
实例3
模型文件
定义
int m=...; int n=...; int a[1..m] = ...; int b[1..n] = ...; int c[1..m][1..n] = ...; dvar float+ x[1..m][1..n];
目标函数
minimize sum( i in 1..m, j in 1..n) c[i][j] * x[i][j] ;
subject to{ forall( i in 1..m ) sum( j in 1..n) x[i][j] == a[i]; forall( j in 1..n ) sum( i in 1..m) x[i][j] == b[j]; }
数据文件
m=3; n=4; a =[7, 4, 9]; b =[3, 6, 5, 6]; c = [ [3, 11, 3, 10], [1, 9, 2, 8], [7, 4, 10, 5] ];