QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4557|回复: 5
打印 上一主题 下一主题

c调用lingo问题,求大侠帮忙

[复制链接]
字体大小: 正常 放大
ckyych        

3

主题

7

听众

29

积分

升级  25.26%

  • TA的每日心情
    无聊
    2013-8-7 09:47
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    自我介绍
    lingo 探索者
    跳转到指定楼层
    1#
    发表于 2013-7-24 09:00 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    在lingo内直接运行,无法寻到局部最优解,勾选全局优化选项后,可以找到全局最优解,但是通过c调用lingo文件,始终返回的是无解,即使在c内set gloval 1也无用。一旦将lingo文件改成lp模型,c调用可以求解,遇到NLP模型c调用返回的是无解,到底是哪里出了问题,版本问题还是???请会c调用lingo的朋友帮忙看看,现将文件贴上
    shili_liuyu_no-reservoir.lg4

    model:
    sets:
    !1..m~;
    smonth/1..12/:qr;
    !1..n~;
    squyu/1..2/:qz;
    scoefficient(squyu,smonth):qsmin,qfmin,qsc,qsh,qst,qscx,qstx,qf,qj,qscmin,qstmin,qscb,qstb;
    huiguixishu:xssc,xssh,xsst,alw;
    endsets
    [OBJECTIVE]  max = @SUM(scoefficient(i,j):qf(i,j));
    !约束条件;
    alw(1)=@SUM(scoefficient(i,j):qscx(i,j)-qsc(i,j)+qstx(i,j)-qst(i,j));!统计缺水量;
    @for(scoefficient(i,j)|i#eq#1:qsc(i,j)+qsh(i,j)+qst(i,j)<=qr(j)+qj(i,j)-qsmin(i,j));
    @for(scoefficient(i,j)|i#eq#2:qsc(i,j)+qsh(i,j)+qst(i,j)<=qf(i-1,j)+qj(i,j)-qsmin(i,j));
    @for(scoefficient(i,j): @bnd(qscmin(i,j),qsc(i,j),qscx(i,j)));
    @for(scoefficient(i,j): @bnd(qstmin(i,j),qst(i,j),qstx(i,j)));
    @for(squyu(i): @sum(smonth(j):qst(i,j)+qsc(i,j)+qsh(i,j))<=qz(i));
    @for(scoefficient(i,j)|i#eq#1:qr(j)+qj(i,j)-xssc(1)*qsc(i,j)-xssh(1)*qsh(i,j)-xsst(1)*qst(i,j)-qf(i,j)=0);
    @for(scoefficient(i,j)|i#eq#2:qf(i-1,j)+qj(i,j)-xssc(1)*qsc(i,j)-xssh(1)*qsh(i,j)-xsst(1)*qst(i,j)-qf(i,j)=0);
    @for(scoefficient(i,j):qf(i,j)>=qfmin(i,j));
    @for(scoefficient(i,j):qscb=@if(qsc(i,j)#eq#qscx(i,j),1,0));
    @for(scoefficient(i,j):qstb=@if(qst(i,j)#eq#qstx(i,j),1,0));
    @SUM(scoefficient(i,j):qscb(i,j))/24>=0.9;
    @SUM(scoefficient(i,j):qstb(i,j))/24>=1;
    data:
    qz=32.4439,52.9415;
    qsmin=@file('liuyu.txt');
    qfmin=@file('liuyu.txt');
    qscx=@file('liuyu.txt');
    qsh=@file('liuyu.txt');
    qstx=@file('liuyu.txt');
    qr=@file('liuyu.txt');
    qj=@file('liuyu.txt');
    qscmin=@file('liuyu.txt');
    qstmin=@file('liuyu.txt');
    xssc=0.6;
    xssh=0.64;
    xsst=0.64;
    @text('result\qsc.txt')=scoefficient,qsc;
    @text('result\qsh.txt')=scoefficient,qsh;
    @text('result\qst.txt')=scoefficient,qst;
    @text('result\qf.txt')=scoefficient,qf;
    @pointer(1)=OBJECTIVE;
    @pointer(2)=qf;
    @pointer(3)=@status();
    enddata
    end

    liuyu.txt
    5.52         5.17         5.52         5.35         5.52         5.35         5.52         5.52         5.35         5.52         5.35         5.52
    7.37         6.89         7.37         7.13         7.37         7.13         7.37         7.37         7.13         7.37         7.13         7.37 ~
    8.76         8.19         8.76         8.48         8.76         8.48         8.76         8.76         8.48         8.76         8.48         8.76
    9.16         8.57         9.16         8.86         9.16         8.86         9.16         9.16         8.86         9.16         8.86         9.16 ~
    0.88         0.88         0.88         2.12         2.12         2.12         5.63         5.63         5.65         2.12         0.88         0.88
    2.06         2.06         2.06         3.73         3.73         3.73         8.48         8.48         8.51         3.73         2.06         2.06 ~
    0.11         0.11         0.11         0.11         0.11         0.14         0.35         0.35         0.35         0.14         0.11         0.11
    0.22         0.22         0.22         0.22         0.22         0.25         0.66         0.66         0.66         0.25         0.22         0.22~
    0.03         0.03         0.03         0.03         0.03         0.03         0.08         0.08         0.08         0.03         0.03         0.03
    0.05         0.05         0.05         0.05         0.05         0.05         0.14         0.14         0.14         0.05         0.05         0.05 ~
    6.81         4.73         17.03         67.89         35.34         31.50         22.70         56.73         20.24         11.47         9.00         8.88 ~
    6.20         4.94         14.66         34.39         26.02         29.85         18.43         38.00         17.05         9.18         6.29         5.25
    8.02         6.38         11.25         22.38         10.55         38.21         16.74         17.12         17.71         7.66         4.14         3.52 ~
    0.73         0.73         0.73         1.60         1.60         1.60         4.05         4.05         4.07         1.60         0.73         0.73
    1.76         1.76         1.76         2.94         2.94         2.94         6.26         6.26         6.28         2.94         1.76         1.76~  
    0.02         0.02         0.02         0.02         0.02         0.03         0.08         0.08         0.08         0.03         0.02         0.02
    0.04         0.04         0.04         0.04         0.04         0.05         0.12         0.12         0.12         0.05         0.04         0.04~

    shili_liuyu.c
    #include <stdlib.h>
    #include <string.h>
    #include "lingd11.h"


    void main()
    {
            int i,j, nPointersNow, nError;
       double dStatus=-1.0,lgsolution,lgvolume[2][12];
       pLSenvLINGO pLINGO;  
       char pcScript[256];

        pLINGO = LScreateEnvLng();
       if (!pLINGO)
       {
         printf("Can't create LINGO environment!\n");
          goto FinalExit;
       }
        // Open LINGO's log file  
       nError = LSopenLogFileLng( pLINGO, "LINGO.log");
       if ( nError) goto ErrorExit;

       // Pass memory transfer pointers to LINGO
       // @POINTER(1) - Items set
       nError = LSsetPointerLng( pLINGO,(void*)&lgsolution,
        &nPointersNow);
       if ( nError) goto ErrorExit;

       // @POINTER(2) - Item weights
       nError = LSsetPointerLng( pLINGO, lgvolume,
        &nPointersNow);
       if ( nError) goto ErrorExit;

       // @POINTER(3) - Item ranks
       nError = LSsetPointerLng( pLINGO, (void*)&dStatus,
        &nPointersNow);
       if ( nError) goto ErrorExit;
        // Here is the script we want LINGO to run:
       //  Load the model, solve the model, exit.
       strcpy( pcScript, "set GLOBAL 1\n TAKE shili_liuyu_reservoir.lng\n GO \n QUIT \n");

       // Run the script
       nError = LSexecuteScriptLng( pLINGO, pcScript);
       if ( nError) goto ErrorExit;

       // display solution status
       printf("\nSolution status (should be 0): %d\n", (int) dStatus);

       // display items in optimal sack
       printf("\n lgsolution: %f \n",lgsolution);
       printf("\n lgvolume: \n");
               for(i=0;i<2;i++)
               {
                  for(j=0;j<12;j++)
             printf(" %f\t ",lgvolume[j]);          
                 printf("\n");
               }

       // Close the log file
       LScloseLogFileLng( pLINGO);

       // All done
       goto NormalExit;

    ErrorExit:
       printf("LINGO Error Code: %d\n", nError);

    NormalExit:
       LSdeleteEnvLng( pLINGO);

    FinalExit: ;

    }
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    ckyych        

    3

    主题

    7

    听众

    29

    积分

    升级  25.26%

  • TA的每日心情
    无聊
    2013-8-7 09:47
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    自我介绍
    lingo 探索者
    回复

    使用道具 举报

    guzili        

    0

    主题

    0

    听众

    2

    积分

    升级  40%

    该用户从未签到

    自我介绍
    wu
    回复

    使用道具 举报

    ckyych        

    3

    主题

    7

    听众

    29

    积分

    升级  25.26%

  • TA的每日心情
    无聊
    2013-8-7 09:47
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    自我介绍
    lingo 探索者
    回复

    使用道具 举报

    21

    主题

    97

    听众

    3110

    积分

  • TA的每日心情
    奋斗
    2014-3-2 00:26
  • 签到天数: 243 天

    [LV.8]以坛为家I

    好问题!记下了。可是C神马的忘得差不多了,先补补相关内容再看看!欢迎大神们解答!

    点评

    ckyych  没有大师回答啊  详情 回复 发表于 2013-8-6 19:15
    回复

    使用道具 举报

    ckyych        

    3

    主题

    7

    听众

    29

    积分

    升级  25.26%

  • TA的每日心情
    无聊
    2013-8-7 09:47
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    自我介绍
    lingo 探索者
    wujianjack2 发表于 2013-7-24 16:54
    好问题!记下了。可是C神马的忘得差不多了,先补补相关内容再看看!欢迎大神们解答!

    没有大师回答啊
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-25 08:49 , Processed in 0.633855 second(s), 83 queries .

    回顶部