Cplex软件入门
Cplex软件入门
来源:bilibili,xuzhijun1998,快速学懂Cplex软件及其编程方法
声明:本人抱着学习和记录的心态记录老师视频中的部分内容,供个人学习使用
1. Cplex编程方法
- 不使用集合语言
- 使用集合语言(sum/forall/…)
主要思想:
①多式之和: $a_1x_1 + a_2x_2 + … + a_nx_n \triangleq \sum_{i = 1}^{n}a_ix_i $
code:sum(i in 1..n)a[i]*x[i]
②多个约束条件:
\[\left\{
\begin{matrix}
x_1 \le b_1
\\x_2 \le b_2
\\…
\\x_n \le b_n
\end{matrix}\right. \Rightarrow x_j \le b_j , j=1,2,…,n\]
code:forall(j in 1..n)x[j]≤b[j]
2.Cplex程序框架
- 已知量
int/float/range …
- 未知量
dvar int/float/boolean/int+/float+
- 目标函数
maximize/minimize
- 约束条件
subject to { }
- [脚本]
execute { }
例:$$ max z = {12x_1 + 11x_2 + 9x_3 + 8x_4}$$
\[ s.t. \left\{
\begin{matrix}
8x_1 \le 13
\\6x_2 \le 13
\\4x_3 \le 13
\\3x_4 \le 13
\\x_i \in {0,1}, i = 1,2,3,4
\end{matrix}\right.\]
code:
int n = 4;
int C = 13;
int p[1..n] = [12,11,9,8];
int w[1..n] = [8,6,4,3];
dvar boolean x[1..n];
maximize sum(j in 1..n) p[j] * x[j];
subject to {
sum(j in 1..n) w[j] * x[j] <= C;
}