LINGO是用来求解线性和非线性优化问题的简易工具。
LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。
§1LINGO快速入门当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGOModel–LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1如何在LINGO中求解如下的LP问题:在模型窗口中输入如下代码:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后点击工具条上的按钮即可。
例1.2使用LINGO软件计算6个发点8个收点的最小费用运输问题。
产销单位运价如下表。
单位销地运价产地 B1 B2 B3 B4 B5 B6 B7 B8 产量A1 6 2 6 7 4 2 5 9 60A2 4 9 5 3 8 5 8 2 55A3 5 2 1 9 7 4 3 3 51A4 7 6 7 3 9 2 7 1 43A5 2 3 9 5 7 2 6 5 41A6 5 5 2 2 8 1 4 3 52销量 35 37 22 32 41 32 43 38 使用LINGO软件,编制程序如下:model:!6发点8收点运输问题;sets:warehouses/wh1..wh6/:capacity;vendors/v1..v8/:demand;links(warehouses,vendors):cost,volume;endsets!目标函数;min=@sum(links:cost*volume);!需求约束;@for(vendors(J):@sum(warehouses(I):volume(I,J))=demand(J));!产量约束;@for(warehouses(I):@sum(vendors(J):volume(I,J))<=capacity(I));!这里是数据;data:capacity=605551434152;demand=3537223241324338;cost=626742954953858252197433767392712395726555228143;enddataend然后点击工具条上的按钮即可。
为了能够使用LINGO的强大功能,接着第二节的学习吧。
§2LINGO中的集对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。
LINGO允许把这些相联系的对象聚合成集(sets)。
一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。
现在我们将深入介绍如何创建集,并用数据初始化集的属性。
学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。
2.1为什么使用集集是LINGO建模语言的基础,是程序设计最强有力的基本构件。
借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。
2.2什么是集集是一群相联系的对象,这些对象也称为集的成员。
一个集可能是一系列产品、卡车或雇员。
每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。
属性值可以预先给定,也可以是未知的,有待于LINGO求解。
例如,产品集中的每个产品可以有一个价格属性;
卡车集中的每辆卡车可以有一个牵引力属性;
雇员集中的每位雇员可以有一个薪水属性,也可以有一个生日属性等等。
LINGO有两种类型的集:原始集(primitive set)和派生集(derivedset)。
一个原始集是由一些最基本的对象组成的。
一个派生集是用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存在的集。
2.3模型的集部分集部分是LINGO模型的一个可选部分。
在LINGO模型中使用集之前,必须在集部分事先定义。
集部分以关键字“sets:”开始,以“endsets”结束。
一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分。
一个集部分可以放置于模型的任何地方,但是一个集及其属性
1
FreeBatchPhotoResizer是一个非常简单方便的Windows软件,用于以批处理模式调整数码照片的大小。
您可以指定新的像素尺寸以及百分比值。
您还可以通过指定边框的大小来调整照片的大小。
批量调整图片尺寸工具FreeBatchPhotoResizer中文版批量调整图片尺寸工具FreeBatchPhotoResizer中文版添加多张图片批处理文件处理支持同时修改其尺寸手动修改多张图片的大小可能是一项耗时且烦人的工作。
还有另一种方法可以更快,更轻松地获得相同的结果:使用专用的批量照片调整大小软件,例如FreeBatchPhotoResizer。
普通用户界面您可以直接从主窗口访问此有用程序的功能,因为它具有简单明了的界面,没有隐藏的菜单或选项。
将图像添加到应用程序后,您可以查看与文件名和位置有关的详细信息。
缺点是,FreeBatchPhotoResizer不支持拖放文件,因此访问内容的唯一方法是通过界面功能。
支持的文件类型很少尽管此实用程序可以一次处理多张照片,但是由于FreeBatchPhotoResizer仅提供对BMP,PNG和JPG文件类型的大小调整支持,因此缺少兼容的格式。
您可以在指定的框中输入新的所需尺寸参数,然后选择值是以像素还是百分比表示。
可以通过切换相应的选项来保持原始的宽高比。
配置所需的值后,您可以选择输出目标文件夹,应用程序可以开始相应地修改图片大小。
最后一个过程将打开一个新窗口,您可以在其中查看操作的进度条。
基本批量大小调整器除了提供批处理文件大小调整支持之外,在创新方面,与其他基本图像编辑工具(例如Windows的本机画图)相比,FreeBatchPhotoResizer没有其他功能。
此外,画图甚至还支持多种文件类型。
综上所述,FreeBatchPhotoResizer可以为您提供基本的调整大小功能,同时允许您一次处理多个文件。
但是,格式兼容性仅限于BMP,PNG和JPG,而不支持拖放操作。
2025/2/11 10:20:03 290KB 批量调整图片尺寸工具
1
(1) 利用文件来存储用户名、密码,实现一个登录验证的程序,验证用户输入的用户名、密码是否正确,正确显示学生信息浏览主窗口,不正确弹出对话框提示错误,并要求用户重新输入。
(2) 在主窗口上有一个菜单,菜单项有“新建”、“浏览”。
(3) 在“新建学生信息”窗口中,输入实验VI学生类中的ID、NAME、MATH、JAVA信息。
单击保存按钮,用文件存储学生信息。
(4) 在“浏览学生信息”窗口中,用前一个、后一个浏览所有学生信息。
(5) (选做)增加修改按钮,修改学生信息,并保存在文件中;
增加删除按钮,删除当前学生信息。
2024/12/5 10:54:27 280KB Swing版
1
Qt主窗口与子窗口之间相互传值,对新手可能有些帮助吧!
2024/10/28 16:41:26 5KB Qt窗口传值
1
No.4简单的MFC多对话框演示程序“MultiDialog”演示如何在工程中拥有多个对话框,及如何在一个对话框中调用另一个对话框。
重点:1、多个对话框类的建立;
2、对话框的模式(Modal)调用方法;
3、Spin控件的使用。
新建一个基于对话框的MFC工程,通过菜单"Insert>>Resource"打开添加资源对话框,在其中选择Dialog后点击New创建一个新的对话框按Ctrl+W打开ClassWizard,系统会提示刚才创建了一个新的对话框资源,是否建立对应的类,选择建立,然后在NewClass窗口中ClassName栏输入它的名称:CSubClass1,确定后系统会自动生成SubClass1.h和SubClass1.cpp并加入工程中,其中有已经创建好的CSubClass1的类的基本代码。
把这个对话框的Caption属性改为“难度选择”,在它上面画三个Radio“简单”、“标准”、“困难”,并建立相关联的变量m_Option1。
(要注意的是在ClassWizard中注意ClassName中应该选CSubClass1而不是之前的主对话框类)按照相同方法建立第二个新对话框,类名“CSubClass2”,Caption为“关卡选择”。
在上面画一个Edit和一个Spin,注意先画Edit后画Spin,将Spin的Autobuddy和Setbuddyinteger勾上。
按Ctrl+W打开ClassWizard,为Edit建立关联变量,不过注意是int型而不是CString型,也为Spin建立关联变量m_Spin1,注意这次是Control型变量CSpinButtonCtrl。
下面为这两个对话框添加代码。
双击“难度选择”对话框的OK按钮,建立对话框的OnOK映射。
在其中加入(在CDialog::OnOK();之前):UpdateData(TRUE);if((m_Option1>2)||(m_Option1<0)){MessageBox("错误的选择!","提示",MB_OK);return;}下面对“关卡选择”对话框添加初始化代码,由于关卡的有效值只有1到6,因此需要在初始化时设置Spin控件的有效值范围。
按Ctrl+W打开ClassWizard,在左侧列表选择这个对话框类CSubDialog2,在右侧列表中选择WM_INITDIALOG,点击右边的“AddFunction...”按钮,接着点击右边的“EditCode”按钮,在其中中加入(在CDialog::OnInitDialog()那句之后,在returnTRUE那句之前):m_Spin1.SetRange(1,6);m_Text1=1;m_Spin1.SetPos(1);其中CSpinButtonCtrl::SetRange()函数的作用是设置和他关联的Spin控件的范围,两个参数分别是下界和上界。
而CSpinButtonCtrl::SetPos()是设定Spin的当前位置。
两个新的对话框都已建立完毕,下来是如何在主对话框中使用的问题。
首先,两个新对话框都有各自的类,分别在SubDialog1.h和SubDialog2.h中有定义。
(类的细节则在对应的cpp中定义)因此,主对话框想要调用这两个新对话框,需要先包含这两个头文件,在你要使用的地方(本例是MultiDialogDlg.cpp中)文件前面加上#include"SubDialog1.h"#include"SubDialog2.h"然后在想要调用的地方就可以使用了。
本例中,首先为主窗口的两个Edit建立CString型关联变量m_Text1和m_Text2,然后在两个按钮的消息映射函数中分别加入:CSubDialog1dialog1;//定义CSubDialog1型对话框的一个新对象dialog1.DoModal();//使用“模式”调用,显示对话框m_Text1.Format("%d",dialog1.m_Option1);//此句在上面对话框没有关闭前不会执行到UpdateData(FALSE);和CSubDialog2dialog1;dialog1.DoModal();m_Text2.Format("%d",dialog1.m_Text1);UpdateData(FALSE);其中第一句均为定义对话框新实例的语句,定义一个你想要的类型的对话框。
第二句是通过调用CDialog::DoModal()方法,来显示这个对话框,并进入“模式”(Modal)状态在“模式”状态,当子对话框没有关闭之前,调用它的父对话框不能被响应,并且其语句执行会停留在刚才的DoModal语句上等待,直到子对话框关闭才接着执行下一个语句。
第三第四句将子对话框得到的数据(即类的成员变量)显示在父对话框的Edit上。
四句执行完后退出该函数,这时刚才定义的CSubDialog1等对话框类变量被销毁,因此创建的话框也被销毁。
2024/10/14 12:21:15 3.52MB MFC VC 多窗口 multiwidows
1
使用Qt实现的,功能基本和Windows自带的记事本一样。
不同的是这个无论打开多少个文件,多少个窗口,都只保持一个进程(单进程,多主窗口),另外里面增加了猜测utf-8编码集的功能,用于显示无BOM格式的UTF-8源代码时不乱码。
2024/10/4 20:05:20 3.96MB Qt C++ 记事本 源代码
1
里面有完整的注释!!适合学习贪食蛇编程要点1、每次刷屏时需要注意无效矩形区的大小和位置,一般取整条蛇最小坐标和最大坐标组成的矩形(包括蛇的头和身体)2、蛇全身的运行轨迹应该参照蛇头的运行轨迹3、蛇吃下东西之后身体各点的变化情况应该参照第一点的变化,即第一点发生变化之后下一时间段第二点发生变化,再下一时间段第三点发生变化,依此类推,直到最后一点发生变化结束4、分数的计算变量:蛇吃的一般屎数量、蛇吃大屎的数量、游戏的难度级别计算公式:(一般屎数量+大屎数量)*难度级别5、一个问题:游戏的难度设置选项框和主窗口发生数据交换采用了两种方法,发送消息法和读写外部文件法,第三种选择就是采用全局变量,但都不是太好,有没有更合适的方式保证实现该功能的同时不致使程序显得晦涩难懂不易修改和维护
2024/8/12 15:57:30 3.74MB 贪吃蛇源码
1
根据问题提供问题的解决方案,实现棋盘的绘制和棋子的内摆放功能。
而可以选择的存储结构为线性存储结构,逻辑结构为图形结构。
实现主窗口的棋子摆放规则,可以选用线性存储结构和图形结构构造一个新的数据结构,定义在其上的功能为根据循环递归法改变中皇后的位置,并将其传递给整个棋盘的对象,使其按照要求实现棋子的摆放,直到出现正确的放置方法。
2024/7/23 5:14:49 324KB 数据结构 八皇后问题
1
《嵌入式Qt实战教程》是配合QtGUI程序设计的指导教材,独立于任何Qt编程教科书。
主要内容有常用GUI介绍、Qt开发工具的安装及其优点、Qt入门、窗口的布局、信号和槽机制、常见对话框的使用、主窗口(QMainWindow类)的使用、菜单和工具条的实现、鼠标和键盘事件、Qt进程与线程、网络编程、互斥锁等。
最后还详细讲解了Qt的一些应用小项目,并列出了全部源代码,如图片浏览器、MP3播放器、网络视频播放器、门禁机项目。
2024/5/12 9:24:41 43.44MB 嵌入式 Q t实战 教程
1
1、无需设置由于它是一个便携式工具,它不需要您将其安装在目标计算机上,因为只需拆包其存档并启动可执行文件即可完全访问其功能。
您还可以从可移动存储介质(如USB闪存驱动器或外部HDD)运行它。
此外,它不会修改系统中的注册表项,也不会在您的PC上生成其他文件或文件夹,但未经您的明确许可。
2、综合界面dnSpy配备了一个时尚,全面的用户界面,包含广泛的有用功能,它们整齐地组织在主窗口的标准菜单中。
更重要的是,它具有标准配置窗口,您可以在其中调整各种组件的设置,如其反编译器,调试器或十六进制编辑器,但也可以修改显示或其他参数。
3、.NET反汇编程序如果您需要一个高效的工具,可以通过为您提供各种有用的工具来帮助您反编译.NET程序集,您可以转到dnSpy。
它配有一个反编译器,一个调试器,一个十六进制编辑器和一个程序集编辑器,让你以有效的方式处理程序集。
主窗口附带了一个AssemblyExplorer窗格,您可以在其中访问所需程序集的树视图。
您可以通过从计算机指定适当的文件或使用“从GAC打开”选项打开程序集,该选项为您提供全局程序集缓存中可用的条目列表。
4、.NET程序集的可靠反向工程工具所有考虑的事情,dnSpy是一个方便的应用程序,使您能够以有效的方式逆向工程.NET程序集,为您提供广泛的有用工具,包括反编译器,程序集编辑器和调试器。
它不需要安装,具有全面,平滑的用户界面,并为您提供了一个标准配置窗口,您可以在其中调整各种组件的设置。
2024/3/11 10:52:12 19.24MB dnSpy NET工具 net神器 Reflector
1
共 36 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡