zoukankan      html  css  js  c++  java
  • 数学建模(Lingo)(非线性整数规划)

    原非线性规划式子:

     代码展示如下:

    model:!编程开始;
    title:life;!标题;

    sets:!集合段;
    row/1..4/:b;
    col/1..5/:c1,c2,x;
    link(row,col):a;
    endsets

    data:!数据段;
    c1=1,1,3,4,2;!对应目标函数中的x的平方;
    c2=-8,-2,-3,-1,-2;!对应目标函数中的x的一次方;

    !约束条件系数;
    a=1 1 1 1 1
    1 2 2 1 6
    2 1 6 0 0
    0 0 1 1 5;
    b=400,800,200,200;
    enddata

    max = @sum(col:(c1*x^2+c2*x));!计算段;
    @for(row(i):@sum(col(j):a(i,j)* x(j))<=b(i));
    @for(col:@gin(x));
    @for(col:@bnd(0,x,99));
    end

    提醒一下上面有几个小函数,

    首先是Lingo中所有函数都要加上@

    然后@for是循环,@sum是求和,@gin是限制整数;@bnd是限制变量x在[0,99]中

    其实还有挺多函数的,如果有兴趣知道详情的话可以去百度,我个人看的是这个网页

    [整理版]lingo中的函数 - 豆丁网 (docin.com)

    然后还有个小问题就是我的Lingo代码里加了中文注释,我个人是不推荐在自己使用Lingo的时候加上中文的,

    因为部分版本的Lingo中加中文会导致关键字显示不正确,比如这样(sets和col变成绿色的了,虽然好像不影响使用,但我个人总感觉不太舒服)

     然后我最后再附上没有中文的Lingo代码,以及运行结果

    代码:

    model:
    title:life;

    sets:
    row/1..4/:b;
    col/1..5/:c1,c2,x;
    link(row,col):a;
    endsets

    data:
    c1=1,1,3,4,2;
    c2=-8,-2,-3,-1,-2;
    a=1 1 1 1 1
    1 2 2 1 6
    2 1 6 0 0
    0 0 1 1 5;
    b=400,800,200,200;
    enddata

    max = @sum(col:(c1*x^2+c2*x));
    @for(row(i):@sum(col(j):a(i,j)* x(j))<=b(i));
    @for(col:@gin(x));
    @for(col:@bnd(0,x,99));
    end

    然后这是结果:

    最优解:

    各变量值:

    老规矩,做一名深情的单身程序员

    (PS:我不主动找你, 不是因为你不重要了, 而是我知道我不重要了 。)

  • 相关阅读:
    JS 继承
    Ajax 与 Comet
    JS事件对象
    JS事件处理程序
    在JavaScript中创建命名空间的几种写法
    DOM0 DOM2 DOM3
    html5脚本编程
    canvas画图
    R语言平均值和加权平均值
    pyqt5通过文本对话框打开文件
  • 原文地址:https://www.cnblogs.com/yeluozhiqiumax/p/15247673.html
Copyright © 2011-2022 走看看