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;
}
posted @ 2022-08-11 00:03  battles  阅读(414)  评论(0)    收藏  举报