ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数建--LINGO软件介绍

2022-01-24 10:32:49  阅读:205  来源: 互联网

标签:.. 数建 -- x2 100 x1 集合 LINGO


LINGO软件介绍

一、LINGO 基本操作

  • LINGO初印象

    • LINGO 窗口 在这里插入图片描述

    • LINGO 工具栏在这里插入图片描述

    • LINGO模型文件在这里插入图片描述

  • LINGO的运算符

    • 算术运算符: 用于数与数之间的数学运算 (前三个无前面的/)
      • /+
      • /-
      • /*
      • /
      • ^ (求幂)
    • 关系运算符: 表示 “ 数与数之间” 的大小关系。
      • < (<=)
      • =
      • 大于 (>=)
  • 简单程序编写

    -在这里插入图片描述

    • 程序

      model :
      title 求解线性规划
      max = 2 * x1 + 3 * x2;
      2*x1 + x2 < 8;
      4 * x1 + 3 * x2 < 15;
      end
      
    • 在这里插入图片描述

    • 在这里插入图片描述

  • 例题:在这里插入图片描述

    • 程序
    Model:
    Title:求解二次规划
    !小程序可用,大程序不提倡
    [opt] max = 98 * x1 + 277 * x2 - x1 ^ 2 - 0.3*x1*x2 - 2 * x2 ^ 2;
    [st1] x1 + x2 < 100;
    [st2] x1 < 2 * x2;
    @gin(x1);@gin(x2);
    end
    
    • 在这里插入图片描述

    • 在这里插入图片描述

    • 在这里插入图片描述

二、一维数组型变量

  • 段的概述: LINGO中建立的优化模型可以由六个部分组成,或称六“段”。

    • 集合段: 用于定义数组型性变量 SETS : …… ENDSETS
    • 数据段: 用于变量赋值与数据传递 DATA :…… ENDDATA
    • 目标与约束段: 用于列出目标与约束 (唯一一个没有段的开始和结束标记)
    • 计算段: 用于数据初始整理计算 CALC:…… ENDCALC
    • 初始段: 用于变量赋初值迭代寻优 INT:…… ENDINT
    • 自模型段: 用于表达子模型进行调用 @SUBMODEL mymodel 可执行语句(约束+目标) ENDSUBMODEL
  • 基本集合 与 属性变量

    • 在这里插入图片描述

      sets: ! 集合段
      s/1..100/:x; !基本集合,集合名与属性变量
      endsets
      !目标与约束段;
      @sum(s(i) : x(i)) < 90; !循坏求和函数
      
    • 在这里插入图片描述

      sets: ! 集合段
      ss/1..10/:b; !基本集合,集合名与属性变量
      endsets
      data: !数据段;
      b = 1 0 1 2 3 5 2 6 1 2;
      enddata
      

    -在这里插入图片描述

    sets: ! 集合段
    a/1..100/:x; !基本集合,集合名与属性变量
    b/1..200/:y; !基本集合,集合名与属性变量
    endsets
    !目标与约束段
    @ for(b(j):@gin(y(j)));
    @ for(a(i):@bin(x(i)));
    
  • 实例:

    • 题目 在这里插入图片描述

    • 建立模型 在这里插入图片描述

    • 程序

      model:
      TITLE 超市大赢家
      SETS:
      S/1..50/:W,V,X;
      ENDSETS
      DATA:
      V = 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130,125, 122, 120, 118, 115, 110, 105, 101, 100, 100, 98,96, 95, 90, 88,82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60, 58,56, 50, 30, 20, 15,10, 8, 5, 3, 1
      w = 80, 82, 85, 70, 72, 70, 66, 50, 55, 25, 50, 55, 40, 48,50, 32, 22,  60, 30, 32, 40, 38, 35, 32, 25, 28, 30, 22, 50, 30, 45,30, 60, 50, 20, 65, 20, 25, 30, 10, 20, 25, 15, 10, 10, 10, 4, 4, 2,1
      ENDDATA
      MAX = @SUM(S(I) : V(I) * X(I));
      @SUM(S((I) : W(I)*X(I))) < 1000;
      @FOR(S(I):@BIN(X(I)));
      END
      

      在这里插入图片描述

三、多维数组型变量

  • 派生集合与多维数字型变量

    • 在这里插入图片描述

      sets:
      a/1..10/ : ;
      b/1..200/: ;
      C(a,b) : x; ! 派生集合;
      endsets
      ! 目标与约束段;
      @ sum(c(i,j):x(i,j)) = 280;
      
      
    • 在这里插入图片描述

    sets:
    a/1..100/:;
    b/1..200/:;
    C(a,b):x;
    Endsets
    ! 目标与约束段
    @for(b(j):@sum(a(i):x(i,j)) > 150.001);
    !集合 元素循坏函数
    
    • 在这里插入图片描述

      sets;
      a/1..100/:;
      b/1..200/:y;
      C(a,b):x;
      Endsets
      !目标与约束段;
      @for(b(j):@gin(y(j)));
      @for(c(i,j):@bin(x(i,j)));
      
  • 逻辑运算符与过滤条件(无前面的/)

    • / # AND # (与)
    • / # OR # (或)
    • / # NOT # (非)
    • / # EQ # (等于)
    • / # NE # (不等于)
    • / # GT # (大于)
    • / # GE # (大于等于)
    • / # LT # (小于)
    • / # LE # (小于等于)
    • @IF(logical_condition, true_result, false_result) 当逻辑表达式logical_condition的结果为真时,返回true_result, 否则返回false_result。

在这里插入图片描述

  • 案例:

    • 在这里插入图片描述

      sets:
      a/1..20/:;
      b/1..30/:;
      C/1..40/:;
      d(a,b,c):x;
      endsets
      ! 目标与约束段;
      @ for(a(i) : @for(b(j):@sum(c(i,j,k) | k#gt#1#and#k#ne#10:x(i,j,k)) = 100 )); !过滤条件
      
    • 在这里插入图片描述

四、线性规划模型的LINGO求解

-在这里插入图片描述

sets:
HANG/1..3/:B;
LIE/1..4/:x;
XISHU(HANG,LIE):A;
endsets
DATA:
A = 1 2 3 1
    2 5 1 2
    3 1 6 -2;
B = 4 5 7;
enddata
@ for(HANG(I) :
     @sum(LIE(J) : A(I,J) * X(J)) > B(I));
  • 例二在这里插入图片描述

标签:..,数建,--,x2,100,x1,集合,LINGO
来源: https://blog.csdn.net/qq_54145399/article/details/122662137

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有