lingo模型求解脚本及与vc交互程序

该博客展示了如何在VC环境中运用LINGO软件解决线性规划问题。通过建立运输问题的数学模型,包括设定变量、目标函数和约束条件,然后读取数据并求解,最终将结果输出到文本文件。模型中包含了产量约束、总量限制以及特定元素的含量要求。
摘要由CSDN通过智能技术生成
sets:
	j3(j1,j2)|&2#gt#&1|:c;
endsets
&1表示第一个基本集合元素的索引值

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

输出

在这里插入图片描述
在这里插入图片描述

@GIN(X) 定义 X 为整型变量,代表X为正整数解

@SUM(<集合名>(下标范围):关于集合属性的目标函数表达式);
model: 
sets: 
    cols/1..24/: e;    !这是列;
    rows/1..53/: s;    !这是行;
    links(rows,cols): c; !运输单价,决策运输量;        c为矩阵
endsets
!==================================;
data: 
 
	c = @file('data_std.txt'); 
	s = @file('data2.txt'); 
	
enddata
!==================================;
submodel transfer:
	max = cost;   ! 目标函数极小化;
	cost = @sum(links: c*e); !目标函数:运输总成本; 
!	cost = @sum(cols(j): c(4,j)*e(j)); 

	@for(rows(i):
	    @sum(cols(j): c(i,j)*e(j)) >= s(i) ); ! 产量约束;
	@sum(cols(j): e(j))=500;  !一天的标定食量;
	e(8)>=300;     !大米的含量要求;
endsubmodel
!==================================;
calc:
    @solve(transfer);   !运行子模块(解线性规划);
    @divert('transfer_out.txt');!向.txt文件按自定格式输出数据;
    @write('最大活性物质含量权值=',cost,@newline(1),'最优分配方案x=');
! @for(rows(i):
          @write(@newline(1));
@writefor(cols(j): ' ',@format(e(j),'8.8f') ) ;
    @divert(); !关闭输出文件;
endcalc 
end

vc中运行的求解模型
model: 
sets: 
    cols/1..24/: e;    !这是列;
    rows/1..53/: s,d,t;    !这是行;
    links(rows,cols): c; !运输单价,决策运输量;
endsets
!==================================;
data: 
 
	c = @file('data_std.txt'); 
	
enddata

DATA:
!把VC中的数据m_Num1,…,m_Num6传递到Lingo中的变量num1,…,num6;
	s=@POINTER(1);
	d=@POINTER(2);
!把Lingo计算的结果和状态分别传到VC中的变量res,dStatus;
@POINTER(3)=e;
	
@POINTER(4)=@STATUS();


ENDDATA
!==================================;
submodel transfer:
	!max = cost;   ! 目标函数极大化;
    [cost]max = @sum(rows(i):d(i)*@sum(cols(j):c(i,j)*e(j)));
	!cost = @sum(cols(j): c(4,j)*e(j)); 
	@for(rows(i):
	    @sum(cols(j)|s(i)#GT#0: c(i,j)*e(j)) >= s(i) ); ! 产量约束;
	@sum(cols(j): e(j))=500;  !一天的标定食量;
	e(8)>=300;     !大米的含量要求;
endsubmodel
!==================================;
calc:
    @solve(transfer);   !运行子模块(解线性规划);	
    
     
    @for(rows(i):
	    t(i) = @sum(cols(j):c(i,j)*e(j)));
	!t(1) = 8;
	
	@divert('transfer_out.txt');!向.txt文件按自定格式输出数据;
	
    @write('最大活性物质含量权值=',cost,@newline(1),'最优分配方案x=');

   ! @write(@newline(1));
    @writefor(cols(j): '  ,',@format(e(j),'7.3f') ) ;
	
	@write(@newline(1));
	@write('最优分配方案下的各净含量t=');
	@writefor(rows(i): '  ,',@format(t(i),'10.3f') );

    @divert(); !关闭输出文件;
endcalc  
DATA:
  @POINTER(5)=cost;
  @POINTER(6)=t;
ENDDATA
end

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值