gams使用入门

gams使用入门
gams使用入门

二 GAMS 简明教程 由Richard E. Rosenthal 编著

(译者:该翻译由华中科技大学能源与动力工程学院小海完成,由于译者水平有限,其中肯定会有些问题,欢迎大家阅读并批评指正!)

2.1 简介

这本书的简介部分以一个详细的例子结束,这个例子是一个用GAMS 进行表达、解决和分析的小而简单的优化问题。由来自蒙特利尔市Naval 研究生院的Richard E.Rownthal 编写。通过这个例子我们可以对GAMS 有一个快速而全面的了解。很多地方引用到本书其他章节的知识,方便大家进一步查阅;而阅读这一部分即使不看本书其他章节也能看懂并且有所收获。

例子是一个关于运输的线性规划问题,这个问题在最优化技术发展过程中曾经被当做实验对象。用这个例子展示GAMS 这类代数建模语言的强大功能是很好的选择,因为不管手头要处理的问题有多大,运输问题本身具有一个简单的、可用的代数结构。你可以发现,如果要解决一个非常大的运输问题,我们将呈现的用于解决小规模运输问题的GAMS 输入文件中的内容并不需要改变多少。

在熟悉的运输问题中,我们考虑几个工厂的供应和几个市场的需求的商品,我们也给出从工厂运输商品到市场的单位花费。这其中的经济学问题是:怎样安排运输使得我们的总运输成本最小?

这个问题的代数表达常常采用下列方式:

Indices:

i = plants

j = markets

Given Data:

i a = supply of commodity of plant i (in cases)

ij b = demand for commodity at market j

ij c = cost per unit shipment between plant i and market j ($/case)

Decision Variables:

ij x = amount of commodity to ship from plant i to market j (cases),

Where ij x ≥0, for all i, j

Constraints:

Observe supply limit at plant i: j ij j a x ≤∑ for all i (cases)

Satisfy demand at market j: ij j i x b ≥∑ for all j (cases)

Objective Function: Minimize ij ij i j c x

∑∑ ($K)

注意这个例子显示了一些一般情况下我们认为是好习惯的建模方式,这些在GAMS 里面被继承了。首先,模型程序中的各组成部分都按类型分组定义了。其次,GAMS 程序各组成部分先后次序已经定好了,因此没有标识符能在被定义之前使用。第三,各组成部分都有特定的单位。第四,选择的单位要使优化过程中得到的数值具有相对较小的绝对数量级。(例如标识$K 表示dollar 的千倍)

各组成部分类型的名称在不同的模型中可能不一样。例如,经济学家分别用外生变量和内生变量来表示已知数据和决策变量。(译者:在经济模型中,内生变量是指该模型所要决定的变量。外生变量指由模型以外的因素所决定的已知变量,它是模型据以建立的外部条件。内生变量可以在模型体系内得到说明,外生变量决定内生变量,而外生变量本身不能在模型体系中得到说明。参数通常是由模型以外的因素决定的,因此也往往被看成外生变量。例:P=a+bQ,表示价格与数量的关系,则a、b是参数,都是外生变量;P、Q是模型要决定的变量,所以是内生变量。除此之外,譬如相关商品的价格,人们的收入等其他于模型有关的变量,都是外生变量)

在GAMS中,被采用的相关术语是:sets表示指数下标,parameters表示已知数,variables表示决策变量,equations 表示约束方程和目标方程。

运输问题的GAMS语言表述紧密的联系了上述几个部分。最主要的区别在于GAMS表述可以被电脑读取和运行。

作为运输问题的例子,假设有两个罐头厂和三个市场,已知数据如表2.1所示。运输距离的单位是千英里,运输成本是$90.00每箱每千英里。这个例子的GAMS表述是:

Sets

i canning plants / seattle, san-diego /

j markets / new-york, chicago, topeka / ;

Parameters

a(i) capacity of plant i in cases

/ seattle 350

san-diego 600 /

b(j) demand at market j in cases

/ new-york 325

chicago 300

topeka 275 / ;

Table d(i,j) distance in thousands of miles

new-york chicago topeka

seattle 2.5 1.7 1.8

san-diego 2.5 1.8 1.4 ;

Scalar f freight in dollars per case per thousand miles /90/ ;

Parameter c(i,j) transport cost in thousands of dollars per case ;

c(i,j) = f * d(i,j) / 1000 ;

Variables

x(i,j) shipment quantities in cases

z total transportation costs in thousands of dollars ;

Positive Variable x ;

Equations

cost define objective function

supply(i) observe supply limit at plant i

demand(j) satisfy demand at market j ;

cost .. z =e= sum((i,j), c(i,j)*x(i,j)) ;

supply(i) .. sum(j, x(i,j)) =l= a(i) ;

demand(j) .. sum(i, x(i,j)) =g= b(j) ;

Model transport /all/ ;

Solve transport using lp minimizing z ;

Display x.l, x.m ;

如果你在GAMS中建立一个文件,将以上内容输入进去,运输模型就可以被建立和进行计算了。要使GAMS在不同的计算机上运行需要改变一些细节,但是最简单的方法(不提供非必要服务的方法)是在输入文件的名字后面加上GAMS这几个字母。在程序运行过程中,你将看到一些精练的描述GAMS运行过程的字符行,包括了写入输出结果的文件名。当GAMS程序结束时,检查文件,如果一切正常的话,那么最优化运输方案将显示如下:

new-york chicago topeka

seattle 50.000 300.000

san-diego 275.000 275.000

你还可以得到如下所示边际成本(单纯形乘数):

chicago topeka

seattle 0.036

san-diego 0.009

这些结果表明,举例来说,采用最优化方案就不要从Seattle送货到Topeka,但是你坚持要这样做的话,你将比最优化方案多付0.036$K($36.00)每箱的成本。(你能从优化运输方案和已知数据中证明这个数据的正确性吗?) (译者:可以这样想,因为只能由Seattle和San Diego向Topeka送货,为了满足Topeka市场275箱的需求,从San Diego少送一箱就要从Seattle补送一箱,这样算来,多出的成本就等于(1.8‐1.4)*90=36)

2.2 GAMS模型的结构

本章的剩余部分我们将讨论GAMS模型的基本组成部分,还是以上面提到的运输问题为例。表2.2列出了基本组成部分。

GAMS中有可供用户选择的输入模块,例如编辑损坏数据的检查信息和要求显示客户结果列表。其他可供选择的高级特征包括保存和恢复原模型,以及在一次运行中创建联合模型,但是这个教程仅仅讨论基本的部分。

在开始介绍各个部分之前,以下几点需要说明:

1.GAMS模型是指一组GAMS语言表述的集合。而组织这些表述的唯一规则是在模型的一个部分被声明之前它是

无法被引用的。

2.GAMS的表述能以任何一种吸引人的排版方式呈现在用户眼前,一个表述占用多行,插入空白行,以及一行中

多个表述都是可以的。在这个教程中你可以了解那些是被允许的格式,但是一些更详细的规则将在下一章给出。

3.如果你是GAMS新手,你应该在每一个表述的最后加上分号,如例中所示。GAMS编译器不区分大小写字母,

你可以随意使用。

4.说明文档方便用户看懂数学模型。说明文档整个集中的被包含在模型表述中比把它分开书写要更为有效(往往

也更为准确)。至少有两种方法向GAMS模型中插入此类说明文件。第一,GAMS编译器将把以一个星号开头的行作为注解行。第二,或许更为重要,可以用特定的GAMS语句插入说明文档。在运输模型中所有的小写文字都是以第二种形式插入的说明文档。

Inputs:

Sets

Declaration

Assignment of members

Data (Parameters, Tables, Scalars)

Declaration

Assignment of values

Variables

Declaration

Assignment of type

Assignment of bounds and/or initial values (optional)

Equations

Declaration

Definition

Model and Solve statements

Display statement (optional)

Outputs:

Echo Print

Reference Maps

Equation Listings

Status Reports

Results

Table 2.2: The basic components of a GAMS model

5.正如你看到的以上输入部分,建构GAMS组成部分包括两个部分:声明以及赋值或者定义。声明是指表明其存

在性并且给其取个名字。赋值或者定义是指给其赋予某个值或者格式。以equations为例,你必须用单独的GAMS 表述声明和定义它。然而对于其他所有的GAMS组成部分,你可以选择在同一个表述中或者单独对其进行声明或赋值。

6.模型各组成部分的名字必须以字母开头,并且长度不超过31个字符,除第一个字符外可以使用字母或数字。

2.3 Sets 指数下标

Sets是GAMS模型基本的组成部分,它如同数学公式中的指数下标。运输例子中该部分表述如下:

Sets

i canning plants / seattle, san-diego /

j markets / new-york, chicago, topeka / ;

本表述的作用很明显。我们声明了两个指数下标并且给它们起名为i和j。我们还给它们赋了值:

i = {Seattle, San-Diego}

j = {New York, Chicago, Topeka};

你应该注意到GAMS格式和一般数学格式对于列举指数下标元素的区别。GAMS用‘/’斜杠而不是用‘{}’大括号,这是因为不是所有的电脑键盘都有大括号这个键。同时注意到在这里多字名如‘New York’不能使用而用了连字号。 Sets表述中小写文字被称为文本。文本可有可无。它们仅为内部文档存在,在模型中没有正式的作用。GAMS编译器不会在意文本的含义,但是为了方便用户,会保留文本并呈现给用户多次。

将i 和j的表述合并并不是必要的。我们也可以将它们分开:

Set i canning plants / seattle, san-diego / ;

Set j markets / new-york, chicago, topeka / ;

至于使用多少空格和空行(如用大或者小写一样)完全取决于用户。每一个GAMS用户都愿意遵从自己的格式习惯。(用单数set还是负数sets也取决于用户。在进行单个声明的表述中用set,在进行多个声明的表述中用sets,这是符合英语语法的,但是GAMS不区分set和sets。)

当要赋的值是一个系列的时候,用星号*是很方便的。例如:

Set t time periods /1991*2000/;

Set m machines /mach1*mach24/;

这就相当于:

t = {1991,1992,1993, ....., 2000}

m = {mach1, mach2,......, mach24};

这里将赋的值看成字符串,所以t的值不是数字。

另外一个好用的表述是alias,它可以给先前声明的set另外一个名字。例如:

Alias (t,tp);

在一般数学表达中tp和t’相似。这对于包含有同一个set中元素交互作用的模型很有用。

例子所示的i,j,t和m是静态的指数下标,它们包含的元素由用户赋予并且不会改变。GAMS有一定的建立动态指数下标的能力,这要求它们包含的元素执行集理论和进行逻辑操作。章节12第107面将讨论动态指数下标。另外一个有价值的高级特征是多维指数下标,将在4.5节,39页进行说明。

2.4 数据

运输模型GAMS表述展示了所有的三种基本的数据输入格式。它们是列表、表格和直接赋值。

下面三个小节将讨论这三种格式。

2.4.1 列表数据输入

第一种数据输入方式由例子中首个Parameters表述呈现出来:

Parameters

a(i) capacity of plant i in cases

/ seattle 350

san-diego 600 /

b(j) demand at market j in cases

/ new-york 325

chicago 300

topeka 275 / ;

这个表述的意思仍然是很明显的,但是有必要分析下其中的细节。这个表述声明了两个参量的存在,取名为a和b,并分别给出了指数域i和j(指数域是指指数下标,或者指数小标元组,参量、变量或者方程式在其中被定义)。该表述同时给出了每个参量的说明文档并且对于每个i和j赋予了a(i)和b(j)相应的值。如果你愿意的话,也可以用两个表述来代替这一个表述:

Parameters a(i) capacity of plant i in cases

/ seattle 350

san-diego 600 / ;

Parameters b(j) demand at market j in cases

/ new-york 325

chicago 300

topeka 275 / ;

当使用列表方式输入数据时应该注意:

1.只要你愿意你可以以几乎所有的方式呈现出指数域元素和与它们对应的各参量值的列表。唯一的规定是整个列

表需要用斜杠包括起来,并且各个元素和它们对应的值必须用逗号分开或者从不同的行中输入。

2.在该列表中不需要用分号将名字、指数域和说明文档隔开。这是因为当你使用列表方式时这个表述即被当做声

明过程又被当做赋值过程。(这种列表本身不能被GAMS识别,将会导致报错)

3.GAMS编译器有一个称为域检查的特征,它将确认域中各元素是否是相应指数下标中的元素。例如,你把set i

的声明中的“Seattle”在后面的元素值列表中误拼成“Seatle”,GAMS编译器将报错并给出信息指出“Seatle”

不属于set i。

4.所有参量的默认值是0。因此,你只需要在列表中输入非零量即可,输入的顺序任意。

5.标量是指没有域的参量,通过Scalar表述来声明和赋值,标量只有一个值,如下所示运输模型中的表述:

Scalar f freight in dollars per case per thousand miles /90/;

如果一个参量的域是二维或者多维的,它仍然可以用列表格式输入其值。这对于输入稀疏的(有少数非零值)和非常稀疏的(有少数不等的非零值)矩阵很有帮助。

2.4.2 表格数据输入

有时候优化工作者会注意到一个大模型的输入数据源于一些相对较小的数据表格。那么,用表格形式来输入数据是很方便的。下面是运输模型中的一个二维表格:

Table d(i,j) distance in thousands of miles

new-york chicago topeka

seattle 2.5 1.7 1.8

san-diego 2.5 1.8 1.4 ;

这个表述的作用是声明了参量d并且如同i和j的笛卡尔积一样按顺序排好相应域。d的值在对应的标题下被给出。在表格中出现空白输入的话将被看做0对待。

就像在列表格式中,GAMS在这里也将用域检查来确定行名和列名是不是相应域下的元素。而对于在一行中无法输入所有列值的表格和大于二维的表格将会在章节5,43页中讨论。

2.4.3 直接赋值输入

与其上述两种输入方式不同,直接赋值输入通过不同的表述将声明过程和赋值过程分开。运输模型中对应的这种输入方法是:

Parameter c(i,j) transport cost in thousands of dollars per case ;

c(i,j) = f * d(i,j) / 1000 ;

这里要强调一下第一行最后的分号。如果没有这个分号,GAMS编译器将把两行当做同一个表述的两个部分。(GAMS 将不能分辨有效的解释,因此将发给用户一个精炼的有用的错误报告)

第一行的表述的作用是声明参量c,指明域(i,j),并且给出说明文档。第二行的表述给c(i,j)赋值,这些值由f和d(i,j)决定。当然,只有在先前的表述中给f和d(i,j)赋值过这里才不会出错。

直接赋值作用了所有c(i,j)的指数域。如果你想给特定的某个c(i,j)赋值,你应该写上相应域元素的名字并用引号括起来。如下所示:

c('Seattle','New-York') = 0.40;

这是一个有效的GAMS表述。

同一个参量可以被多次赋值。每个赋值表述在下一个赋值表述之前有效。(相比之下,同一个参量不能被多次声明。这是GAMS中的一种错误检查,它使你避免对两个不同的东西使用同一个名字)

赋值表述的右边可以包含一系列数学表达和内建函数。假如你熟悉某种科学程序语言例如FORTRAN或者C,那么在GAMS中写赋值表述对于你而言就很简单了。(需要注意的是,GAMS有些东西与FORTRAN和C都不一样,例如,我们不用循环语句就可以对所有的c(i,j)赋值)

GAMS的标准操作和提供的函数将随后给出。接下来是一些有效赋值的例子。在所有情况下,确保左边的参量都已经被声明并且右边的参量都已经在前面的表述中被赋值。

csquared = sqr(c);

e = m*csquared;

w = l/lamda;

eoq(i) = sqrt( 2*demand(i)*ordcost(i)/holdcost(i));

t(i) = min(p(i), q(i)/r(i), log(s(i)));

euclidean(i,j) = qrt(sqr(xi(i) - xi(j) + sqr(x2(i) - x2(j)));

present(j) = future(j)*exp(-interest*time(j));

之后介绍的求和和乘积算子也能被直接用于赋值。

2.5 变量

在GAMS模型中的决策变量(内生变量)必须用Variables表述予以声明。每个变量都会有一个名字,合适的话就有对应的一个域,还有说明文档(不是必须的)。运输模型中的相关表述如下所示:

Variables

x(i,j) shipment quantities in cases

z total transportation costs in thousands of dollars ;

这个表述为每一对(i,j)做出了装载变量声明。(在章节8,65页,你将看到GAMS是怎样解决现实世界的问题,在这个过程中只允许(i,j)的子域用于运输装载)

变量z被声明却没有给出指数域是因为它与取值是一一对应的关系。每一个GAMS优化模型必须包括这样一个变量,

它是最小化或者最大化的目标。

一旦被声明,每一个变量都必须被赋予一个类型。表2.3给出了可用的类型:

作为最小化或者最大化的目标的变量必须是变量性质的并且属于free类型。在这个运输模型例子中,z默认是free 类型,但是x(i,j)通过以下表述限制成非负值:

Positive variable x ;

注意,x的指数域不要在类型表述中出现。域中所有的条目有相同的类型。

2.10小节将说明如何规定变量的上下边界和初始值。

2.6 方程式

GAMS的代数建模语言在创建模型的方程和不等式的时候功能很强大。这是因为当一组方程式具有相同代数结构的时候,它们是同时而不是一个个被创建。

2.6.1 方程式声明

GAMS中要用单独的表述对方程式进行声明和定义。其声明的格式与声明GAMS其他部分相同。首先,在这里要用到关键字Equations,之后是名字,指数域和一组或者多组被声明方程式或不等式的说明文档。运输模型中的表述如下所示:

Equations

cost define objective function

supply(i) observe supply limit at plant i

demand(j) satisfy demand at market j ;

要记住的是Equation这个词在GAMS中意思很宽泛。它包含了等式和不等式,而GAMS中一个Equation的名字可以对应一个或者多个式子。例如,cost没有指数域所以是一个单独的式子,而supply对应指数域i下定义的一组式子。

2.6.2 GAMS求和(连乘)符号

在介绍方程式定义之前我们先说明一下GAMS中的求和符号。GAMS是以标准键盘和逐行输入检查为标准设计的,所以在做求和时是不能用标准数学符号的(尽管这对用户造成不便)。

GAMS中的求和符号可用于简单和复杂的表达式中。它的格式是基于对求和的一般思维过程,这样的算符有两个自变量:Sum(index of summation,summand)用一个逗号分隔两个自变量,如果第一个自变量中用到逗号则用括号括起来。第二个自变量可以是任意一种数学表达式包括求和表达式。

举一个简单的例子,运输模型包含表述:

Sum(j, x(i,j))

这与ij j x ∑等价。

再举一个稍微复杂点的例子:

Sum((i,j), c(i,j)*x(i,j))

这与ij ij i j c x ∑∑等价。

最后一个例子也可以写成包含嵌套求和运算的表述:

Sum(i, Sum(j, c(i,j)*x(i,j)))

在11.3节,100页,我们会介绍如何使用dollar 算符给求和算符加上约束使得满足特定条件的i 和j 才可以被求和。 GAMS 中定义的连乘符号的格式与求和符号一样,用Prod 取代Sum 。例如:

prod(j, x(i, j))

等价于ij j x ∏。

求和符号和连乘符号可以用在对参数的直接赋值表述中。例如:

scalar totsupply total supply over all plants;

totsupply = sum(i, a(i));

2.6.3 方程式定义

方程式定义因为其种类繁多而成为GAMS 中最为复杂的表述。一个方程式定义包括,按顺序:

1. 被定义方程式的名字

2. 指数域

3. 指数域约束条件(可选)

4. 符号“..”

5. 左手边表达式

6. 关系算符:=l=,=e=,或者=g=

7. 右手边表达式

运输模型包含有三个这种表述:

cost .. z =e= sum((i,j), c(i,j)*x(i,j)) ;

supply(i) .. sum(j, x(i,j)) =l= a(i) ;

demand(j) .. sum(i, x(i,j)) =g= b(j) ;

以下是一些要注意的地方:

? 指数域对用单个GAMS 表述联立方程组进行控制。例如,约束demand 的定义产生了对域j 中每个元素的约束,

GAMS 输出显示为:

DEMAND(new-york).. X(seattle,new-york) + X(san-diego,new-york) =G=325 ;

DEMAND(chicago).. X(seattle,chicago) + X(san-diego,chicago) =G=300 ;

DEMAND(topeka).. X(seattle,topeka) + X(san-diego,topeka) =G=275 ;

? 这里的关键是,无论是解决一个像例子那样的小规模模型或者是有20000个数据的现实问题,对于demand 的

约束都是一样的。不管是哪种情况,用户只需要输入一个代数方程式,GAMS 就可以建立特定的与当前模型相

适应的方程式。(使用一些其他的优化包,就像上述的一样,它是作为输入的一部分而不是输出的一部分)

?在很多现实问题中,因为存在某种例外,一些方程式指数域中的元素需要被忽略或者区别对待。GAMS可以很快的用一种被称为dollar或者“such‐that”的有力方式来调整结构的损失,这里不会对此进行说明。为了使现实世界的模型在解决的范围以内,对于域的约束性质是完全必要的。

?关系算符含义如下:

=l= 小于等于

=g= 大于等于

=e= 等于

?分清楚“=”和“=e=”是很重要的。“=”只被用于直接赋值,而“=e=”只被用于方程式定义。这两者含义相差很大。直接赋值是指在运算之前赋予某参量一个特定的值。一个方程式定义也描述了一个特定的关系,但是在运算开始之前它是不能成立的。由此可见,方程式定义必须含有变量而直接赋值不能含有变量。

?变量可以出现在方程式的左边或者右边或者两边。同一个变量可以在方程式中出现多次。在进行运算之前,GAMS 运算器会自动将其转化为标准形式(变量在左,且合并变量系数)。

?只要方程式定义中包含的所有的方程式、变量和参量在先前就声明过,该定义可以出现在GAMS输入的任何地方。(注意,出现在方程式中的参量可以在方程式定义后再被赋值和重新赋值。这对于运行同一个GAMS输入下的联合模型时是很方便的)方程式不必按照声明它们的顺序来进行定义。

2.7 目标函数

GAMS中没有称为目标函数的特定的组成部分。为了区分要被优化的函数,你必须建立一个变量,它的类型是free (在符号上没有限制)并且与其取值是一一对应的(没有指数域),还要在方程式定义中将它等同于目标函数。

2.8 模型和运算表述

单词model在GAMS中有很明确的意思。它是指一系列方程式。就像其他GAMS组成部分一样,在声明过程中我们要给它一个名字。对模型进行声明的格式是在关键字model后面输入模型的名字,随后在斜杠中输入该模型所包含的方程式的名字。如果模型包含之前所有定义的方程式,你可以输入/all/来代替它们名字的详细列表,表述如下:

model transport /all/ ;

这个表述看起来是多余的,但是对于在同一个GAMS文件中可能建立多个模型的高级用户来说是有用。如果我们要用详细列表,上述表述替换为:

model transport / cost, supply, demand / ;

因为指数域不是方程式的名字,在这里它们被省略了。当且仅当现存方程式的子域包含有一个正在建立的模型(或者说是子模型)时,列表才会被使用。

一旦一个模型被声明和赋予了方程式,就做好了运算的准备了。这时我们会用到solve表述:

solve transport using lp minimizing z ;

如下为solve表述的格式:

1.关键字solve

2.要计算的模型的名字

3.关键字using

4.选择一个可用的运算程序。所有可用的程序列表如下:

lp 线性规划

qcp 二次约束规划

nlp 非线性规划

dnlp 具有非连续倒数的非线性规划

mip 混合整数规划

rmip 宽松混合整数规划

miqcp 具有二次约束的混合整数规划

minlp 混合整数非线性规划

rmiqcp 具有二次约束的宽松混合整数规划

rminlp 宽松的很合整数非线性规划

mcp 混合互补问题

mpec 具有平衡约束的数学规划

cns 约束非线性系统

5.关键字“minimizing”或者“maximizing”

6.被优化的变量名字

2.9 显示表述

在执行Solve表述后会引发一些事件。比如,有关模型的具体的相关的例子会被生成,为了将问题导入运算过程而生成了合适的数据结构,算法将被调用,同时来自运算的输出也会打印到一个文件中。为了获得最初的以及/或者双重变量的最优化值,我们可以查看运算的输出,或者如果愿意的话,我们可以要求GAMS显示出这些。例子中包含如下表述:

display x.l, x.m ;

x.l要求打印出变量的最终值,x.m要求打印出装载变量x(i,j)的边界值。GAMS将自动将这些输出生成带有合适标题的表格。

2.10 “.lo,.l,.up,.m”数据库

GAMS被设计带有一个小的数据库系统,它用于维护关于变量和方程式的记录。记录中最为重要的领域是:

.lo 下边界

.l 当前值或者初始值

.up 上边界

.m 边界值或者双重变量

引用这些相关量的格式是,变量或者方程式的名字,随后是领域名,(如果需要的话)再是指数域(或者指数域中的元素)。

GAMS允许用户完成读取和写入数据库。现在这些或许对你没有什么用,但是对于高级用户而言这是一个相当有价值的特点。以下举一些使用数据库的例子。

2.10.1 赋值变量边界值和初始值

变量的下边界和上边界根据变量的类型(free,positive,negative,binary,integer)而自动的设定,但是用户可以重新设定这些边界。下面是一些例子:

x.up(i,j) = capacity(i,j) ;

x.lo(i,j) = 10.0 ;

x.up('seattle','new-york') = 1.2*capacity(seattle','new-york') ;

第一个和第三个例子中假定capacity(i,j)这个参量已经被声明和赋值过了。这些表述必须在声明变量之后,在solve 表述之前。右手边可以使用所有赋值过程中可用的数学表达。

在非线性规划问题中,建模过程要尽可能的缩小上下边界之间的差值,这对于运算过程很重要,而为搜寻最优化值的运算指出一个初始值也很重要。例如,在一个带有约束的库存模型中,变量是quantity(i),而且已知非约束情况下的最优化值是eoq(i)。作为对约束情况的猜测,我们输入:

quantity.l(i) = 0.5*eoq(i) ;

(一般情况下默认的初始值被设为0,除非0不在边界范围内,而在这种情况下,它取最接近0的边界值)

注意,.lo和.up值完全由用户控制。相比之下,虽然.l和.m也要用户赋予初始值,但是它们由算法控制。

2.10.2 最优化值的变形和显示

(如果要求的话这一小节可以被跳过)

当solve表述引用优化器后,优化器初次和第二次计算的变量的结果将会在数据库中的.l和.m项列出。我们可以应用相应的GAMS语句来调用查看这些结果。

例如,在运输问题中,假设我们想知道各个工厂对每个市场需求的占有率。在solve表述后,我们要输入:

parameter pctx(i,j) perc of market j's demand filled by plant i;

pctx(i,j) = 100.0*x.l(i,j)/b(j) ;

display pctx ;

依靠这些对于原始运输问题的指令我们可以得到如下输出结果:

pctx percent of market j's demand filled by plant I

new-york chicago topeka

seattle 15.385 100.000

san-diego 84.615 100.000

在一个包含边际值的例子中,我们简单的考虑比率约束,它在混合和提炼问题中很常见。这些线性规模型需要决定每种可用的原材料用于每种需求的产品的优化量。设定变量y(i ,j)表示用于生成产品j的原材料i的吨数。假设比率约束为任何一种产品中同一种成分的含量不超过25%,也就是:

y(i,j)/q(j) =l= .25 ;

对于所有的i和j,为了保证模型的线性,约束将被写成:

ratio(i,j).. y(i,j) - .25*q(j) =l= 0.0 ;

这样比直接表示为比率关系要更好。

这里的问题在于ratio.m(i, j)(与约束的线性表达方式相关的边际值)没有固有的含义。在优化问题中,它表示了在不考虑约束以上比率约束时我们至少能获利多少。但是这没有什么实际意义。我们关心的约束是比率约束的非线性形式。例如,我们希望知道当比率约束上升时能获取的边际收益

y(i,j)/q(j) =l= .26 ;

实际上我们可以通过输入如下有关非所求边际值的语句看来获取所关注的边际值:

parameter amr(i,j) appropriate marginal for ratio constraint ;

amr(i,j) = ratio.m(i,j)*0.01*q.l(j) ;

display amr ;

注意amr在数据库中对应的.m和.l项的赋值表述。在这个等价变形的表述中我们需要注意的是

y(i,j)/q(j) =l= .26 ;

等价于

y(i,j) - .25*q(j) =l= 0.01*q(j) ;

2.11 GAMS输出

GAMS的默认输出包含的内容很广泛,信息量大。在一个完整的讨论中,见章节10,79页,它把输出分为以下几部分来叙述:

Echo Print Reference Maps Status Reports

Error Messages Model Statistics Solution Reports

一些教科书和用户手册说准确的运用高级软件对于任何正常人来说都是轻而易举的,这给读者留下了错误的印象,并引起了不必要的恐慌。GAMS在设计的时候考虑的是即使是最有经验的用户也会犯错误。GAMS将尽快的发现错误并最小化它们的影响。

2.11.1 Echo Prints

不管错误是不是阻碍你的优化问题被解决,输出的第一个部分是你输入文件的一个echo,或者说是拷贝。为了方便后面引用,GAMS在每一行的前面都加上了行号。在我们的运输例子中,有幸的是这个例子不含任何错误,echo print 部分是:

3 Sets

4 i canning plants / seattle, san-diego /

5 j markets / new-york, chicago, topeka / ;

6

7 Parameters

8

9 a(i) capacity of plant i in cases

10 / seattle 350

11 san-diego 600 /

12

13 b(j) demand at market j in cases

14 / new-york 325

15 chicago 300

16 topeka 275 / ;

17

18 Table d(i,j) distance in thousands of miles

19 new-york Chicago topeka

20 seattle 2.5 1.7 1.8

21 san-diego 2.5 1.8 1.4 ;

22

23 Scalar f freight in dollars per case per thousand miles /90/ ;

24

25 Parameter c(i,j) transport cost in thousands of dollars per case;

26

27 c(i,j) = f * d(i,j) / 1000 ;

28

29 Variables

30 x(i,j) shipment quantities in cases

31 z total transportation costs in thousands of dollars ;

32

33 Positive Variable x ;

34

35 Equations

36 cost define objective function

37 supply(i) observe supply limit at plant i

38 demand(j) satisfy demand at market j ;

39

40 cost .. z =e= sum((i,j), c(i,j)*x(i,j)) ;

41

42 supply(i) .. sum(j, x(i,j)) =l= a(i) ;

43

44 demand(j) .. sum(i, x(i,j)) =g= b(j) ;

45

46 Model transport /all/ ;

47

48 Solve transport using lp minimizing z ;

49

50 Display x.l, x.m ;

51

这个echo print从行号3开始而不是行号1是因为输入文件包含了两个dollar打印控制表述。这种说明控制了输出打印,但是既然它与优化模型的定义无关,在echo中它就被忽略了。Dollar打印控制符必须出现在第一列。

$title a transportation model

$offuppper

$title会让它后面的文本内容显示在输出的每一页的顶部。$offupper允许echo中包含大写和小写。其他说明在附录D,193页给出。

2.11.2 Error Message

当GAMS编译器在输入文件中碰到一个错误,它将在echo现实中错误发生的下一行插入一个编了号的错误信息。这些信息通常由****开头并且包含有一个“$”,它位于编译器认定的错误发生行的下一行。$后面是错误代码,它将在echo内容之后被解释。以下是一些例子。

例1:输入表述

set q quarterly time periods / spring, sum, fall, wtr / ;

在echo中会的得到:

1 set q quarterly time periods / spring, sum, fall, wtr / ;

**** $160

在这种情况下,GAMS编译器暗示set元素中的sum存在错误。在echo显示的底部,我们将看见杜宇错误代码160的解释:

Error Message

160 UNIQUE ELEMENT EXPECTED

这里的错误在于sum是一个代表加法运算的关键字,所以我们的set元素中不能使用它而要用其他的像是“summer”这样的字符串来代替。这是一个初学者容易犯的错误。所有关键字的列表将在下一章中给出。

例2:另外一个普遍的错误是在直接赋值或等式定义前遗漏了分号。在我们的运输例子中,假设我们遗漏了c(i, j)赋值表达前面的分号:

parameter c(i,j) transport cost in 1000s of dollars per case

c(i,j) = f * d(i,j) / 1000 ;

那输出将会是:

16 parameter c(i,j) transport cost in 1000s of dollars per case

17 c(i,j) = f*d(i,j)/1000

**** $97 $195$96$194$1

Error Message

1 REAL NUMBER EXPECTED

96 BLANK NEEDED BETWEEN IDENTIFIER AND TEXT

(-OR-ILLEGAL CHARACTER IN IDENTIFIER)

(-OR-CHECK FOR MISSING ';' ON PREVIOUS LINE)

97 EXPLANATORY TEXT CAN NOT START WITH '$', '=', or '..'

(-OR-CHECK FOR MISSING ';' ON PREVIOUS LINE)

194 SYMBOL REDEFINED

195 SYMBOL REDEFINED WITH A DIFFERENT TYPE

像遗漏一个分号这样的小问题导致产生5条可怕的错误信息的情况并不少见。这里要表明的是:请把重点放在第一条错误上先忽略其他错误!在第17行检测道德第一个错误,代码97,表示GAMS认为17行中出现的字符是16行中解释文档的后续内容而不是我们想要的直接赋值表述。错误信息也适当的建议我们检查上一行是否遗漏了分号。 不幸的是,你不可能总是得到错误信息的准确建议。编译器无法解读你的想法。它有时无法理解你的意图,所以有必要学会顺着GAMS给你的错误提示来寻找错误。例如,遗漏的分号可以通过查阅对照表(将在下一部分介绍)中输入项c来检测,我们注意到它并没有被赋值。

SYMBOL TYPE REFERENCES

C PARAM DECLARE

D 15 REF 17

例3:很多错误仅仅是因为拼写错误造成的,这些错误将在它们造成影响之前被检测出来。例如,在表格中“Seattle”的拼写不同于它在set声明中的拼写,我们将会看到如下错误信息。

4 sets

5 i canning plants /seattle, san-diego /

6 j markets /new-york, chicago, topeka / ;

7

8 table d(i,j) distance in thousand of miles

9 new-york chicago topeka

10 seatle 2.5 1.7 1.8

**** $170

11 san-diego 2.5 1.8 1.4 ;

Error Message

170 DOMAIN VIOLATION FOR ELEMENT

例4:类似的,如果我们错误的在需求约束的右边输入dem(j)而不是b(j),结果是

45 demand(j) .. sum(i, x(i,j) ) =g= dem(j) ;

**** $140

Error Message

140 UNKNOWN SYMBOL, ENTERED AS PARAMETER

例5:这个例子中出现的是数学错误,有些时候建模新手会犯这样的错误,而GAMS 善于检测这样的错误。下面的表述在数学上是不连续的,所以它表意不明确。

For all i ,

100ij i x =∑

在这个等式中有两个错误,它们都因为指数运用而造成。对指数i 限定的太多,而对指数j 限定的太少。

你应该发现对指数i 的限定是有冲突的。“For all i ”表示i 在等式中是固定不变的。但是,后面的加法运算中i 又不断在变化。i 无法同时满足这两个条件。然而,对指数j 没有任何限定,所以我们不知道将会用到它的哪些可能的取值。

如果我们将这个表述输入到GAMS 中,两个错误都将被准确的纠正。

meaninglss(i) .. sum(i, x(i,j)) =e= 100 ;

**** $125 $149

ERROR MESSAGES

125 SET IS UNDER CONTROL ALREADY [This refers to set i]

149 uncontrolled set entered as constant [This refers to set j]

更多关于错误信息的报告将会在章节10.6,92页中给出。理解好错误侦测和精心设计的错误消息对于顺利快捷的进行模型的计算是有很大帮助的。

2.11.3 关系图

输出的下一个部分是一对关系图,为了纠错和形成文档,它们包含有对输入文件的概括与分析,而当错误被侦测到以后这将会是输出的最后一个部分。

第一个关系图是一个对照表,在多数现代的编译器中都可以找到。它列举出模型中出现的所有元素(sets, parameters, variables, equations )。这个对照表中显示了每个元素的类型以及它们在输入文件中出现的行号。对于运输模型这个对照表是(这里没有显示完整的对照表):

SYMBOL TYPE REFERENCES

A PARAM DECLARED 9 DEFINED 10 REF 42

B PARAM DECLARED 13 DEFINED 14 REF 44

C PARAM DECLARE

D 25 ASSIGNED 27 REF 40

COST EQU DECLARED 36 DEFINED 40 IMPL-ASN 48

REF 46

D PARAM DECLARED 18 DEFINED 18 REF 27

DEMAND EQU DECLARED 38 DEFINED 44 IMPL-ASN 48

REF 46

F PARAM DECLARED 23 DEFINED 23 REF 27

SET DECLARED 4 DEFINED 4 REF 9

18 25 27 30 37 2*40

2*42 44 CONTROL 27 40 42

44

J SET DECLARED 5 DEFINED 5 REF 13

18 25 27 30 38 2*40

42 2*44 CONTROL 27 40 42

44

SUPPLY EQU DECLARED 37 DEFINED 42 IMPL-ASN 48

REF 46

TRANSPORT MODEL DECLARED 46 DEFINED 46 IMPL-ASN 48

REF 48

X VAR DECLARED 30 IMPL-ASN 48 REF 33

40 42 44 2*50

Z VAR DECLARED 31 IMPL-ASN 48 REF 40

48

例如,这个对照表告诉我们符号A是一个参量,它在第10行被声明,在第11行被定义,在第43行被引用过。符号I在对照表中是一个信息更为复杂的元素。它被看成是一个在第5行被声明和定义的指数域。它在第10,19,26,28,31,38,45行被引用过一次,在第41,43行被引用过两次。指数域I在求和运算中,等式定义过程中和参数直接赋值过程中还被用来限定其中指数的范围,分别出现在第28,41,43和45行。

对于GAMS初学者,对于对照表细节的分析不是那么重要。而通过对照图找到带有标点符号或者语法错误的模型中被错误输入的元素这一点对与初学者来讲更为有用。

关系图的第二部分是模型中出现的所有组成部分的列表,它们按类型排列,并且列出其对应的说明文本 。这种列表如下所示:

sets

i canning plants

j markets

parameters

a capacity of plant i in cases

b demand at market j in cases

c transport cost in 1000s of dollars per case

d distanc

e in thousands o

f miles

f freight in dollars per case per thousand miles

variables

x shipment quantities in cases

z total transportation costs in 1000s of dollars

equations

cost define objective function

demand satisfy demand at market j

supply observe supply limit at plant i

models

transport

2.11.4 等式列表

当你成功的创建了没有错误的输入文件,GAMS就将生成它的模型。这时问题出现了,而且只有你才能回答它,这个模型真的就是你想要的吗?

等式列表可能是最好的帮助你回答这个问题的工具了。

作为solve指令的生成品,等式列表列出了模型的一组特定的值,它是通过将sets和paremeters的现值带入模型中各个符号后得到的。例如,运输模型中在输入文件中给出的总需求约束是:

demand(j) .. sum(i, x(i,j)) =g= b(j) ;

而得到的特定约束的等式列表是:

--------demand =g= satisfy demand at market j

demand(new-york).. x(seattle, new-york) +x(san-diego, new-york) =g= 325 ;

demand(chicago).. x(seattle, chicago) +x(san-diego, chicago ) =g= 300 ;

demand(topeka).. x(seattle, topeka) +x(san-diego, topeka) =g= 275 ;

这里默认的输出是各个式子能得到的最大值。如果想改变默认值的话,在solve表述前插入input表述:

option limrow = r ;

这里的r代表一个预期的数值。

默认的输出也包含有一个叫做column列表的部分,与等式列表类似,对于每个通用变量它显示了三个特定变量的系数。这个列表对于修改之前以MPS格式实现的GAMS模型有很大的帮助。如果想改变特定column输出的默认值的话,可以用如下命令:

option limrow = r, limcol = c ;

这里c是columns的预期值。(在确定你的模型没有错误后,将limrow和limcol设置为0是节省篇幅的好办法)

在非线性模型中,GAMS等式列表列出了非线性方程的一阶近似泰勒展开式。这些近似值将会由变量的起始值产生。

2.11.5 模型统计信息

在GAMS调用算法之前输出的最后一部分是一组关于模型大小的统计信息,如下所示:

MODEL STATISTICS

BLOCKS OF EQUATIONS 3 SINGLE EQUATIONS 6

BLOCKS OF VARIABLES 2 SINGLE VARIABLES 7

NON ZERO ELEMENTS 19

BLOCK是用来给通用方程式和变量计数的。SINGLE是用来给生成的特定模型中的方程式和变量计数的。对于非线性模型,一些其他的统计信息将会给出用以描述问题的非线性程度。

2.11.6 状态报告

当算法执行以后,GAMS将显示一个简明的计算信息概要,其中两个重要的组成部分是SOLVER STATUS和MODEL STATUS。运输模型的计算信息概要如下所示:

S O L V E S U M M A R Y

MODEL TRANSPORT OBJECTIVE Z

TYPE LP DIRECTION MINIMIZE

SOLVER BDMLP FROM LINE 49

**** SOLVER STATUS 1 NORMAL COMPLETION

**** MODEL STATUS 1 OPTIMAL

**** OBJECTIVE VALUE 153.6750

RESOURCE USAGE, LIMIT 0.110 1000.000

ITERATION COUNT, LIMIT 5 1000

状态报告如错误信息一样以****开头,所以在你要习惯在第一次查看输出的时候查找这种字符串。预期的算法状态

是1 NORMAL COMPLETION,但是这里可能出现其他情况,它们对应着不同的错误和事故,这将在章节10.5,85页进行说明。

一共有11种模型状态,包括普通的线性规划完结状态(1 OPTIMAL,3 BOUNDED,4 INFEASIBLE),其他的是有关非线性规划和整数规划的。非线性规划问题对应的是2 NORMAL COMPLETION。对于非线性规划GAMS最多能保证的是一个局部优化结果。而用户有责任分析这个问题的突出方面从而决定这个局部优化结果是否适用于整体。

对应于整数规划的状态是8 INTEGER SOLUTION。这表明程序得到了一个可行的整数结果。其他细节还包括这个计算结果是否适用于现实问题以及是否处在用户可容忍的误差范围内。

2.11.7 结果报告

如果算法状态和模型状态问题不大,那么你将得到该优化问题的结果。这个结果首先以标准数学规划格式输出,其中带有该模型中按照名字排列的行和列的附加特征。在这种格式中,对于每一行和列都有下限、现值、上限和边界值的信息。通用方程组和列输出根据通用变量将行输出分组。为了方便阅读其中也列入了Set中的元素名字。在运输问题中,该部分表示如下:

---- EQU SUPPLY observe supply limit at plant i

LOWER LEVEL UPPER MARGINAL

seattle -INF 350.000 350.000 EPS

san-diego -INF 550.000 600.000 .

---- EQU DEMAND satisfy demand at market j

LOWER LEVEL UPPER MARGINAL

new-york 325.000 325.000 +INF 0.225

chicago 300.000 300.000 +INF 0.153

topeka 275.000 275.000 +INF 0.126

---- VAR X shipment quantities in cases

LOWER LEVEL UPPER MARGINAL

seattle .new-york . 50.000 +INF .

seattle .chicago . 300.000 +INF .

seattle .topeka . . +INF 0.036

san-diego.new-york . 275.000 +INF .

san-diego.chicago . . +INF 0.009

san-diego.topeka . 275.000 +INF .

单个“.”代表0。EPS代表epsilon(ε),是一个趋近于0的值。在这个例子中,EPS表示退化。(用以描述Seattle 供给约束的松弛变量的初始值是0。而用EPS来标记边界值而不是用0是为了使由旧的初始值开始重新进行优化计算变得更容易。)

假如计算结果中含有不可行的或者带有错误符号的边界成本,那么有问题的条目将会分别被标记上INFES和NOPT。如果问题终止的时候没有边界,那么与边界线相关的行和列将被标记为UNBND。

在计算结果报告的最后是一个非常重要的报告概要,它给出了非优化、不可行和无边界的行和列的总数记录。在我们的例子中,这个报告概述和预期的一样显示的都是0记录。

**** REPORT SUMMARY : 0 NONOPT

0 INFEASIBLE

0 UNBOUNDED

在这个报告生成之后,程序控制权又回到了GAMS手中。所有的现值和边界值都将输入到GAMS数据库中对应的.L 和.m项中。然后这些值就可以在其他任何的预期报告中被转化和显示了。正如我们之前谈到的一样,用户很少会列出程序将显示的数量,而GAMS会自动的格式化和标记出一个适当的排列。例如,输入命令:

Display x.l, x.m ;

将会得到以下结果:

---- 50 VARIABLE X.L shipment quantities in cases

new-york Chicago topeka

seattle 50.000 300.000

san-diego 275.000 275.000

---- 50 VARIABLE X.M shipment quantities in cases

chicago topeka

seattle 0.036

san-diego 0.009

这正如在关系图中看到的一样,类似于方程式列表,结果报告和优化值显示。GAMS将保存这个文档文本并且将它拷贝给输出从而保证这个模型能够更好的被记录。

2.12 概述

这个教程介绍了GAMS的一些设计特点,这将使你能够快捷有效的建立实用的优化模型。以下的讨论将概括说明对比矩阵生成器和会话式计算器诸如GAMS这样的代数模型语言所具备的优势。

?通过使用一个基于数学格式的标记,将优化模型输入电脑就和你将它写给一个有数学知识的人一样简单。

?只要建立了某个问题的数学描述,GAMS模型中大部分的语句都能适用于新的与之前类似或者相关的问题。这一点对于模型时常变化的情况很重要。

?通过在一个表述中建立一套极为相关的约束,你将会节省时间并减小错误发生率。

?模型是自解释的。由于建模过程和模型记录的工作是同时进行的,建模过程更有利于保持模型相关记录的准确和时效。

?GAMS的输出很容易阅读和使用。算法自动生成结果报告,所以相关的方程式和变量能被列在一起并且被适当的标记。同时,display命令可以让你很容易的实现对结果的修改和列举。

?如果你正在教授或者学习建模,你将受益于GAMS编译器中每个方程式和代数表达非常类似这一点。就算你是一个资深的建模专家,侦测错误的多种方法也会缩短你建模的时间。

?通过使用dollar控制符和其他一些这个简明教程中没有涉及到的高级特征,你可以有效的建立规模巨大的模型。

Dollar控制符的一些典型用途如下所述:

1.它加强了对模型中包含的变量和方程式中对指数联合的逻辑控制。因此你可以筛选出不需要的行和列从而

控制模型的尺寸在可执行的范围内。

2.它可用于建立复杂的加法和乘法,这些运算可在方程式或者定制的报告中用到。

3.它可用于发布错误信息或者用于针对条件变化提前终止对特定数据的编辑过程。

一个使用gromacs进行蛋白质模拟的入门教程

Lysozyme in Water Justin Lemkul Department of Biochemistry, Virginia Tech This example will guide a new user through the process of setting up a simulation system containing a protein (lysozyme) in a box of water, with ions. Each step will contain an explanation of input and output, using typical settings for general use. This tutorial assumes you are using a GROMACS version in the 4.5.x series.

Step One: Prepare the Topology We must download the protein structure file we will be working with. For this tutorial, we will utilize hen egg white lysozyme (PDB code 1AKI). Go to the RCSB website and download the PDB text for the crystal structure. Once you have downloaded the structure, you can visualize the structure using a viewing program such as VMD, Chimera, PyMOL, etc. Once you've had a look at the molecule, you are going to want to strip out the crystal waters. Use a plain text editor like vi, em acs (Linux/Mac), or Notepad (Windows). Do not use word processing software! Delete the lines corresponding to these molecules (residue "HOH" in the PDB file). Note that such a procedure is not universally appropriate (i.e., the case of a bound active site water molecule). For our intentions here, we do not need crystal water. Always check your .pdb file for entries listed under the comment MISSING, as these entries indicate either atoms or whole residues that are not present in the crystal structure. Terminal regions may be absent, and may not present a problem for dynamics. Incomplete internal sequences or any amino acid residues that have missing atoms will cause pdb2gmx to fail. These missing atoms/residues must be modeled in using other software packages. Also note that pdb2gmx is not magic. It cannot generate topologies for arbitrary molecules, just the residues defined by the force field (in the *.rtp files - generally proteins, nucleic acids, and a very finite amount of cofactors, like NAD(H) and ATP). Now that the crystal waters are gone and we have verified that all the necessary atoms are present, the PDB file should contain only protein atoms, and is ready to be input into the first GROMACS tool, pdb2gmx. The purpose of pdb2gmx is to generate three files: 1.The topology for the molecule. 2. A position restraint file. 3. A post-processed structure file. The topology (topol.top by default) contains all the information necessary to define the molecule within a simulation. This information includes nonbonded parameters (atom types and charges) as well as bonded parameters (bonds, angles, and dihedrals). We will take a more detailed look at the topology once it has been generated. Execute pdb2gmx by issuing the following command: pdb2gmx -f 1AKI.pdb-o 1AKI_processed.gro-water spce The structure will be processed by pdb2gmx, and you will be prompted to choose a force

APBS教程

目录 1.怎样阅读教程 2.怎样准备结构来进行静电势计算 2.1PQR格式 2.2XML格式 2.3由PDB文件生成PQR文件(PDB2PQR) 3.怎样观察生物大分子周围的静电势 3.1VMD 3.2PyMOL 3.3PMV 4.怎样计算溶剂化能 4.1极性溶剂化 4.2非极性溶剂化 5.怎样计算结合能 5.1溶剂化能对结合的贡献 5.2包括库仑力贡献 5.3不行!配体没有设置参数 5.4一个配体结合的例子 6.怎样计算溶剂化力 7.怎样计算PKa? 7.1概况 7.2介绍 7.3应用于溶菌酶 8.我的计算需要的内存太大了! 8.1并行计算:一个例子 8.2异步时序计算 9.如何将APBS用于分子动力学软件(MM/PBSA等)? 10.怎样通过网络运行APBS?(Gemstone) 10.1得到Gemstone 10.2用PDB2PQR来准备结构 10.3用APBS进行静电计算 11.更多例子…… 12.所有这些没有回答我的问题-…… 图像清单 3.1 .弓形阻遏物的等势线(在VMD中) 3.2.弓形阻遏物表面势能(在VMD中) 3.3.FAS2静电势能等势线(+/- KT/e)(在PyMOL中) 3. 4.FAS2静电表面势能(+/- 5KT/e)(在PyMOL中) 3. 5.全溶剂化能循环 5.1. 结合自由能循环 7.1. pK a摄动自由能循环原理图 7.2. HEWL活性位点

8.1.并行计算得到的肌动蛋白二聚体等势线 10.1. Gemstone PDB2PQR 计算 10.2. Gemstone APBS/Calculation 屏幕 10.3. Gemstone APBS/Grid屏幕 10.4. Gemstone APBS/Physics屏幕 10.5. Gemstone APBS/File I/O屏幕 10.6. Gemstone APBS/Calculation屏幕(运行完成) 表格清单 7.1. 常见可滴定基团的模型氨基酸pKa 值; 数据来自Nielsen et al (见注脚) List of Examples 4.1. 玻恩离子PQR 4.2.玻恩输入文件示例 方程式清单 4.1. 玻恩离子极性溶剂化能 5.1. 结合自由能方程 5.2. 溶剂化对结合自由能的贡献 5.3. 库仑力对结合自由能的贡献 5.4. 结合自由能 7.1. 酸解离自由能 7.2. 迁移自由能 Chapter 1.怎样阅读教程 这本教程是以"怎样做"的形式设计的,使读者能熟悉使用APBS进行静电计算。读者需要最新版本的APBS((https://www.360docs.net/doc/fc8774169.html,)来演示本教程中提供的实例。需要的其他文件列在Individual section里。 重要信息 注意本教程中的许多实例操作也可以通过网络Gemstone实现,而不需要在本地装载APBS 软件。更多信息见Chapter 10, 怎样通过网络运行APBS ? (Gemstone) 。 提示 本教程仍在完善之中,并且会在下一版本的APBS 开 发出之前完成。未完成部分涵盖的许多课题在APBS 实例目录中有所展示。

介词from的语法特点与用法习惯

介词?f rom的语法特点与用法习惯 1.不要根据汉语意思在及物动词后误加介词?from。如: 他上个星期离开中国去日本了。 误:?H e left from China for Japan last week. 正:?H e left Chine for Japan last week. 另外,也不要根据汉语意思错用介词?from。如: 太阳从东方升起,从西方落下。 误:?T he sun rises from the east and sets from the west. 正:?T he sun rises in the east and sets in the west. 2.f rom虽然本身是介词,但它有时也可接介词短语作宾语。如: Choose a book from among these. 从这些书中选一本吧。 A man stepped out from behind the wall. 一个人从墙后走出来。 比较: I took it from the bed. 我从床那儿(或床上)拿的。 I took it from under the bed. 我从床下拿的。 注意,下面一句用了?from where(引导非限制性定语从句),而未用?f rom which,其中的where=i n the tree,即?from where=f rom in the tree。如: He hid himself in a tree, from where he could see the enemy in the distance. 他躲在一棵树上,从那儿他可以看到远处的敌人。 3.有时其后可接?w hen, where引导的宾语从句,此时可视为其前省略了?t he time, the place。如: He didn’t speak to me from when we moved in. 从我们迁入之时起,他没和我说过话。

一个使用gromacs进行蛋白质模拟的入门教程

GROMACS Tutorial Lysozyme in Water Justin Lemkul Department of Biochemistry, Virginia Tech This example will guide a new user through the process of setting up a simulation system containing a protein (lysozyme) in a box of water, with ions. Each step will contain an explanation of input and output, using typical settings for general use. This tutorial assumes you are using a GROMACS version in the series.

GROMACS Tutorial Step One: Prepare the Topology We must download the protein structure file we will be working with. For this tutorial, we will utilize hen egg white lysozyme (PDB code 1AKI). Go to the RCSB website and download the PDB text for the crystal structure. Once you have downloaded the structure, you can visualize the structure using a viewing program such as VMD, Chimera, PyMOL, etc. Once you've had a look at the molecule, you are going to want to strip out the crystal waters. Use a plain text editor like vi, emacs (Linux/Mac), or Notepad (Windows). Do not use word processing software! Delete the lines corresponding to these molecules (residue "HOH" in the PDB file). Note that such a procedure is not universally appropriate ., the case of a bound active site water molecule). For our intentions here, we do not need crystal water. Always check your .pdb file for entries listed under the comment MISSING, as these entries indicate either atoms or whole residues that are not present in the crystal structure. Terminal regions may be absent, and may not present a problem for dynamics. Incomplete internal sequences or any amino acid residues that have missing atoms will cause pdb2gmx to fail. These missing atoms/residues must be modeled in using other software packages. Also note that pdb2gmx is not magic. It cannot generate topologies for arbitrary molecules, just the residues defined by the force field (in the *.rtp files - generally proteins, nucleic acids, and a very finite amount of cofactors, like NAD(H) and ATP).

现代汉语连词意义及用法总结

连词 连词是用来连接词与词、词组与词组、句子与句子,表示某种逻辑关系的虚词。连词可以表并列、承接、转折、因果、选择、假设、比较、让步、递进、条件、目的等关系。一般说来,连词有很多是由副词、介词发展而来的;很多副词、介词又是由动词发展而来。所以动词、介词、连词需要区别。 和 =跟、=与、=及、=同<方>。表示并列关系、联合关系。 车上装的是机器和材料。他的胳膊和大腿都受伤了。工人和农民都是国家的主人。工业与农业。批评与自我批评。我同你一起去。图书、仪器、标本及其他。(注意:用“及”连接的成分多在词义上有主次之分,主要成分放在“及”的前面) 以及 连接并列的词或词组(“以及”前面往往是主要的):院子里种着大丽花、矢车菊、夹竹桃以及其他的花木。 既=既然 既来之,则安之。既然他不愿意,那就算了吧。既然知道做错了,就应该赶紧纠正。你既然一定要去,我也不便阻拦。既要做,就一定要做好。既然这样,还不去做?用在上半句话里,下半句话里往往用副词就、也、还跟他呼应,表示先提出前提,而后加以推论。 既然。。。就。。。既然。。。也。。。既然。。。还。。。 继而=既而 先是惊叹,既而大家一起欢呼起来。人们先是一惊,继而哄堂大笑。先是一个人领唱,继而全体跟着一起唱。表示紧随在某一情况或动作之后。 而 1、连接动词、形容词、词组、分句。 (1)连接语意相承的成分。伟大而艰巨的任务。战而胜之,取而代之,我们正从事一个伟大的事业,而伟大的事业必须有最广泛的群众的参加和支持。 (2)连接肯定和否定相互补充的成分:此种花香浓而不烈,清而不淡。马克思主义叫我们看问题不要从抽象的定义出发,而要从客观存在的事实出发。有转折的意思。 (3)连接语意相反的成分,表转折:如果能集中生产而不集中,就会影响改进技术、提高生产。 (4)连接事理上前后相因的成分:因困难而畏惧而退却而消极的人,不会有任何成就。 2、有“到”的意思。一而再,再而三。由秋而冬。由南而北。 3、把表示时间、方式、目的、原因、依据等的成分连接到动词上面。匆匆而过、挺身而出、为正义而战、因公而死、视情况而定、三十而立。 而且 表示更进一步,前面往往有“不但、不仅”跟它呼应:性情温和而且心地善良。他不仅会开汽车,而且会修汽车。不但战胜了各种灾害,而且获得了丰收。 因而=因此 表示结果。下游河床狭窄,因而河水容易泛滥。 因为 常跟所以连用,表示因果关系。因为今天事情多,所以没去成。 何况 用反问的语气表示更进一层的意思。这么多事情一个人一天做完是困难的,何况他又是新手。他在生人面前都不习惯讲话,何况要到大庭广众之中呢?(even)

动名词的语法特征及用法

动名词的语法特征及用法 动名词由动词加-ing词尾构成,既有名词的特征,又有动词的特征。了解动名词的语法特征可帮助学习者深入理解动名词的意义,从而正确使用动名词。 一、动名词的名词特征 动名词的名词特征表现在它可在句子中当名词来用,作主语、宾语、表语、定语。例如: Beating a child will do more harm than good.打孩子弊大于利。(作主语) Do you mind answering my question?你不介意回答我的问题吧?(作宾语) To keep money that you have found is stealing.把拾到的钱留起来是偷盗行为。(作表语) No one is allowed to speak aloud in the reading room.阅览室里不许大声说话。(作定语) 在动名词担任这些句子成分时,学习者需注意的是: 1、有些动词后只能用动名词作宾语,构成固定搭配,需特别记忆。常见的这类动词有:admit(承认),advise(建议),allow(允许), appreciate(感激),avoid(避免),can't help(禁不住),consider(考虑),deny(否认),dislike(不喜欢),enjoy(喜欢),escape(逃脱),excuse(原谅),feel like(想要),finish(结束),give up(放弃),imagine(想象),involve(包含),keep(保持),mind(介意),miss(错过),permit(允许),practise(练习),quit(停止),recollect (记得),recommend(推荐),suggest(建议),stop(停止),resent(对……感到愤恨、怨恨),risk(冒……危险),cannot stand(受不了)等。例如: We do not permit smoking in the office.我们不允许在办公室吸烟。 In fighting the fire,he risked being burnt to death.在救火中,他冒着被烧死的危险。 She denied having stolen anything.她否认偷过任何东西。 I suggest doing it in a different way.我建议换一个方法做这件事。 2、动名词常用于一些固定句型中,常见的有:It is no use /no good...;It is a waste oftime...;It is fun /nice /good...;There isno...(不可以/不可能……)等。例如: It is no use asking him.He doesn't know any more than you do. 问他也没用,他并不比你知道得更多。 It's no fun being lost in rain.在雨中迷路可不是好玩的。 It's a waste of time your reasoning with him.你和他讲道理是在浪费时间。

pymol使用教程

pymol使用教程

简介&安装 Pymol是一个开放源码,由使用者赞助的分子三维结构显示软件,由Warren Lyford DeLano编写,并且由DeLano Scientific LLC负责商业发行。 Pymol被用来创作高品质的分子(特别是生物大分子如蛋白质)三维结构。据软件作者宣称,在所有正式发表的科学论文中的蛋白质结构图像中,有四分之一是使用Pymol来制作的。 Pymol名字的来源:“Py”表示该软件基于python这个计算机语言,“Mol”则是英文分子(molucule)的缩写,表示该软件用来显示分子结构。 由于实验需要,本人正在学习该软件,在这里把学习过程记录下来,希望对有需要的朋友有所帮助。今天先来说说安装吧。 自2006年8月1日起,DeLano Scientific 对事先编译好的PyMOL执行程序(包括beta版)采取限定下载的措施。目前,只有付费用户可以取得。不过源代码目前还是可以免费下载,供使用者编译。如果你和我一样,不想为此花钱的话: 1.如果你是Windows用户,首先下载Pymol的源代码。 然后安装CygWin,并且确保正确安装以下模块: ?C++ (gcc or g++ package name) ?Python ?OpenGL ?PNG 然后在源代码目录里面依次运行: 2.如果你是Linux用户,首先确保以下东东已安装: ?Python ?Pmw ?OpenGL driver(我用的是NVdia) ?libpng ?Subversion client(下载源代码需要) 然后下载Pymol的源代码 $ mkdir pymol-src $ svn co https://https://www.360docs.net/doc/fc8774169.html,/svnroot/pymol/trunk/pymol pymol-src 然后进入源代码目录 # cd pymol-src 开始依次编译

and的用法及含义

and的用法及含义 And是英语中一个普通的连词,然而and并非只作并列连词用,它还具有一些不太常见的表达方式和意义,应根据上下文的特殊环境,作出判断才能准确理解其用法和意思。 1.and作并列连词,译为“和、并且”等,当连接三个以上的并列成分时,它放在最后一个成分之前,其余用逗号分开,例如: He bought a book and a pen.他买了一本书和一支笔。 Solid,liquid and gas are the three states of matter.固态、液态和气态是物质的三种状态。 2.名词+and+名词,若这种结构表示一个概念时,and+名词相当于介词with+名词,译为“附带、兼”的意思,例如: Noodle and egg is a kind of delicious food.(and egg=with egg)鸡蛋面是一种美味食物。 Whose is this watch and chain?(and chain=with chain)这块带表链的手表是谁的? 3.名词复数+and+同一名词的复数,强调连续或众多的含义。例如: There are photos and photos.照片一张接着一张。 They saw film hours and hours last week.上星期他们一小时接一小时地看电影。 4.形容词+and+形容词,这种结构形似并列,实际并非并列结构。例如: This roon is nice and warm(=nicely warm). The coffee is nice and hot(=thoroughly hot). 5.用and连接动词的用法:and+动词作目的状语。动词go(come,stop等)+and+动词,此时,and+动词相当于in order to+动词,例如: ①I'll go and bring back your boots,(go and bring back=go in order to bringback)我去把你的靴子拿来。 ②and+动词,起现在分词的作用,表示方式或伴随情况。例如: He sat and waited.(and waited=waiting)他坐着等。 ③and+同一动词表示动作长时间地“继续”或“重复”,例如:

pymol 基本操作

简介&安装 Pymol是一个开放源码,由使用者赞助的分子三维结构显示软件,由Warren Lyford DeLano编写,并且由DeLano Scientific LLC负责商业发行。 Pymol被用来创作高品质的分子(特别是生物大分子如蛋白质)三维结构。据软件作者宣称,在所有正式发表的科学论文中的蛋白质结构图像中,有四分之一是使用Pymol来制作的。 Pymol名字的来源:“Py”表示该软件基于python这个计算机语言,“Mol”则是英文分子(molucule)的缩写,表示该软件用来显示分子结构。 由于实验需要,本人正在学习该软件,在这里把学习过程记录下来,希望对有需要的朋友有所帮助。今天先来说说安装吧。 自2006年8月1日起,DeLano Scientific 对事先编译好的PyMOL执行程序(包括beta版)采取限定下载的措施。目前,只有付费用户可以取得。不过源代码目前还是可以免费下载,供使用者编译。如果你和我一样,不想为此花钱的话: 1.如果你是Windows用户,首先下载Pymol的源代码。 2.然后安装CygWin,并且确保正确安装以下模块: ?C++ (gcc or g++ package name) ?Python ?OpenGL ?PNG 然后在源代码目录里面依次运行: 3.如果你是Linux用户,首先确保以下东东已安装: ?Python ?Pmw ?OpenGL driver(我用的是NVdia) ?libpng ?Subversion client(下载源代码需要) 然后下载Pymol的源代码 $ mkdir pymol-src $ svnpymol-src 然后进入源代码目录 # cd pymol-src 开始依次编译 # python setup.py install

法语语法-名词的特点和用法

{1} 1. 名词(le nom, le substantif)的特点 名词是实体词,用以表达人、物或某种概念,如:le chauffeur(司机),le camion(卡车),la beauté(美丽)等。 法语的名词各有性别,有的属阳性,如:le soleil(太阳),le courage(勇敢),有的属阴性,如:la lune(月亮),la vie(生活)。名词还有单数和复数,形式不同,如:un ami(一个朋友),des amis(几个朋友)。 法语名词前面一般要加限定词(le déterminant),限定词可以是数词、主有形容词,批示 形容词或冠词。除数词外,均应和被限定性名词、数一致,如:la révolution(革命),un empire (一个帝国),cermarins(这些水手),mon frère(我的兄弟)。https://www.360docs.net/doc/fc8774169.html, 大部分名词具有多义性,在文中的意义要根据上下文才能确定,如: C’est une pluie torrentielle.(这是一场倾盆大雨。) Lorsque rentre la petite fille, c’est sur elle une pluie de baisers.(当小姑娘回家时,大家都拥上去亲吻她)。 第一例, pluie是本义,第二例, pluie是上引申意义。 2. 普通名词和专有名词(le nom commun et le nom propre) 普通名词表示人、物或概念的总类,如:un officier(军官),un pays(国家),une montagne (山),la vaillance(勇敢、正直)。 专有名词指特指的人、物或概念,如:la France(法国)。 专有名词也有单、复数;阴阳性。如:un Chinois(一个中国男人),une Chinoise(一个中国女人),des Chinois(一些中国人)。 3. 普通名词和专有名词的相互转化(le passage d’une catégorie àl’autre) 普通名词可转化为专有名词,如:报刊名:l’Aube(黎明报),l’Humanité(人道报),l’Observateur(观察家报)等报刊名称是专有名词,但它们是从普通名词l’aube(黎明),I’humanité(人道),l’Observateur(观察家)借用来的。 专有名词也可以转化为普通名词,意义有所延伸,其中许多还保持第一个字母大写的形式,如商品名:le champagne(香槟酒),une Renault(雷诺车),le Bourgogne(布尔戈涅洒)。以上三例分别来自专有名词la Champagne(香槟省),Renault(雷诺,姓),la Bourgogne(布尔戈涅地区)。 4. 具体名词和抽象名词(les noms concrèts et les noms abstraits)

常见系动词的分类及使用特点

常见系动词的分类及使用特点 系动词词义不完整,在句中不能单独使用(除省略句外),后面必须接有表语,系动词和表语一起构成合成谓语。常见的系动词大致可分为三类。 第一类:表示特征或状态的,有 be, look, feel, seem, appear, smell, taste, sound, turn out(结果是、证明是)等。 You'll be all right soon. You don't look very well. I feel rather cold. He seems to be ill. It appears that he is unhappy. The roses smell sweet. The mixture tasted horrible. How sweet the music sounds! The day turned out (to be)a fine one. 第二类:表示从一种状态到另一种状态的变化,有 become, get, grow, turn, fall, go, come, run 等。 He became a world-famous scientist. It is getting warmer and warmer. It grew dark. The food has turned bad. Yesterday he suddenly fell ill. Mary's face went red. His dream has come true. The boy's blood ran cold. 第三类:表示保持状态的,有keep, remain, continue 等。 Keep quiet, children! The weather continued fine for a long time. It remains to be proved. 系动词后的表语可以是名词、代词、数词、形容词、分词、动名词、不定式、副词、介词短语、词组、从句,系动词 be 可用于上述所有情况。如: The people are the real heroes. (名词) That's something we have always to keep in mind. (代词) She is often the first to come here. (数词) She is pretty and wise. (形容词). The news was surprising. (分词) His job is teaching English. (动名词) The only method is to give the child more help. (不定式) I must be off now. (副词) The bridge is under construction. (介词短语) That would be a great weight off my mind. (词组) This is why he was late. (从句) 系动词的使用特点: 1、所有的系动词都可接形容词作表语,此处略举数例。

统编《语文》二年级下册主要特点及使用建议

统编《语文》二年级下册主要特点及使用建议 原创 2018-03-21 张立霞人教教材培训 导读 2018年春季统编《语文》二年级下册教材网络培训讲义精要。 一、激发儿童学习兴趣,保护儿童天性 1. 选文富有童趣,利于激活儿童的经验、想象。 儿童有自己的世界,有应予尊重的天性。为顺应儿童心理,保护儿童天性,提高教育、教学效果,教科书进行了多方面的尝试与探索。 首先选文富有童趣,利于激活儿童的经验、

想象。生活故事,注意选择儿童凭借有限的生活经验就能理解的文本。童话故事,知识背景相对简单,利于减少阅读障碍。孩童化的表达,贴近儿童的心灵,同时又含了某种诗意和哲理。读起来好玩、有趣,同时内心里会沉淀些有份量的、值得未来去品味的东西。 教材的选文注重借助该年龄段有限的现实经验和相对丰富的想象,激发学习的动力和兴趣。 2. 采用游戏、活动等方式让学生在玩中学。 课后练习:在准确把握习题意图的前提下,尽可能寻找练习中的游戏、活动因素,让学习变得有趣、轻松。 文中泡泡。 字词句运用。

口语交际。 3. 注意练习的趣味性,减少畏难情绪。 写话: (1)精心设计写话内容及呈现方式,尽可能减少畏难情绪。表格的呈现方式,直观提示要写的内容,表格的示例内容也尽量贴近儿童真实生活,利于调动生活积累。 (2)色彩丰富的画面,儿童化的角色选择,有趣的情节设定,可以调动儿童的参与积极性,减少写话障碍。 (3)引导学生不拘形式地写下自己想说的话。 二、注重文化传承,立德树人自然渗透,涵养品格 教科书中的课文,“有意思”与“有意义”兼具,在激发学生学习兴趣的同时,有助于学生的精神成长。教科书统筹安排中华优秀传统文化内容,增强学生的文化认同感和民族自豪感。

最新pymol作图的一个实例

Pymol作图的实例 这是一个只是用鼠标操作的初步教程 Pdb文件3ODU.pdb 打开文件 pymol右侧 All指所有的对象,2ODU指刚才打开的文件,(sele)是选择的对象 按钮A:代表对这个对象的各种action, S:显示这个对象的某种样式, H:隐藏某种样式, L:显示某种label, C:显示的颜色 下面是操作过程: 点击all中的H,选择everything,隐藏所有 点击3ODU中的S,选择cartoon,以cartoon形式显示蛋白质 点击3ODU中的C,选择by ss,以二级结构分配颜色,选择 点击右下角的S,窗口上面出现蛋白质氨基酸序列,找到1164位ITD,是配体 点击选择ITD ,此时sele中就包含ITD这个残基,点击(sele)行的A,选 择rename selection,窗口中出现,更改sele 为IDT,点击(IDT)行的S选择sticks,点击C,选择by element,选择,,调 整窗口使此分子清楚显示。 寻找IDT与蛋白质相互作用的氢键: IDT行点击A 选择find,选择polar contacts,再根据需要选择,这里选择to other atoms in object ,分子显示窗口中出现几个黄色的虚线,IDT行下面出现了新的一行,这就是氢键的对象,点击这一行的C,选择 red red,把氢键显示为红色。 接着再显示跟IDT形成氢键的残基 点击3ODU行的S,选择lines,显示出所有残基的侧链,使用鼠标转动蛋白质寻找与IDT 以红色虚线相连的残基,分别点击选择这些残基。注意此时selecting要是

residures。选择的时候要细心。取消选择可以再次点击已选择的残基。使用上述的方法把选择的残基(sele)改名为s1。点击S1行的S选择sticks,C选择by elements,点击L选择residures显示出残基名称.在这个例子中发现其中有一个N含有3个氢键有两个可以找到与其连接的氨基酸残基,另一个找不到,这是因为这个氢键可能是与水分子形成的,水分子在pdb文件中只用一个O表示,sticks显示方式没有显示出来水分子,点击all行S选择nonbonded,此时就看到一个水与N形成氢键 ,点击分子空白处,然后点击选择这个水分子,更改它的名字为w。在all 行点击H,选择lines,在选择nonbonded,把这些显示方式去掉只留下cartoon。点击w行s 选择nb-spheres. 到目前为止已经差不多了 下面是一些细节的调整 残基名称位置的调整:点击右下角是3-button viewing 转变为3-button viewing editing,这样就可以编辑修改 pdb文件了,咱们修改的是label的位置。按住ctrl键点击窗口中的残基名称label,鼠标拖拽到适合的部位,是显示更清晰。 然后调整视角方向直到显示满意为止,这时就可以保存图片了,file>>save image as>>png

“之”的意义和用法

“之”的意义和用法 在古代汉语中,“之”字可作实词,也可作虚词,在不同的语境里有不同的意义和用法,同学们在备考时应引起重视。 一、“之”作实词 1、“之”作动词 这时,“之”的意思是“到……去”“往”“到”“至”。 例1 奚以之九万里而南为?(《逍遥游》) 例2项伯乃夜驰之沛公军。(《鸿门宴》) 例3辍耕之垄上。(《陈涉世家》) 2、“之”作代词 “之”作动词的情况在古代汉语中不多见,作代词相对常见一些。“之”作代词时,一般用作宾语,代人、事、处所,所代的对象大多出现在上下文中。作代词时,“之”又分为指示代词和人称代词。 (1)“之”作人称代词,可译为“他(们)”“她(们)”“它(们)”,用作宾语。 例4君为我呼入,吾得兄事之。(《鸿门宴》)

例5生乎吾前,其闻道也固先乎吾,吾从而师之。(《师说》) 例6虽有(通“又”)槁暴,不复挺者,鞣使之然也。(《劝学》) 例7是何异于刺人而杀之,曰“非我也,兵也”?(《寡人之于国也》) 例8盖将自其变者而观之,则天地曾不能以一瞬。(《赤壁赋》) 从上面所举的几个例子我们可以发现,“之”作人称代词时,一般用在动词之后。 “之”所代的人称在上下文中不一定有具体交代,要根据语言环境进行判断,灵活翻译,如“人非生而知之者”中的“之”,其上下文都找不到先行词,它是泛指“知”的对象,即知识、道理等,可略而不译,也可根据上下文之意译为“知识”或“道理”。 (2)“之”作指示代词,译为“此”“这”“那里”“这样”“这个”等,此时,“之”可作定语,也可作宾语。 例9以故其后名之曰“褒禅”。(《游褒禅山记》) 例10由山以上五六里,有穴窈然,入之甚寒。(《游褒禅山记》) 例11均之二策,宁许以负秦曲。(《廉颇蔺相如列传》) 例12之二虫又何知!(《逍遥游》)

各种鱼钩的特点及使用介绍

各种鱼钩的特点及使用介绍 袖:此钩型无倒刺。钩尖锋利,钩柄长,钩条细钩身轻,适用于吸入取食的小型鱼种,快钓快取,多用于钓白鲫、小白条等 伊豆:此钩型有倒刺,钩尖稍向外歪,钩柄较长,钩尖锋利。适用于淡水,适用于钓鲮鱼、乌头鱼等。 小矶:此钩有倒刺。钩柄较之伊势尼更短,钩身更粗,钩身呈稍圆弧。鱼的吃钩率高。适用于淡水鲤鱼、草鱼、乌头鱼等。 伊势尼:此钩分为有倒刺和无倒刺两种。钩柄短,钩身粗,鱼钩的硬度好。鱼吃入嘴后不易吐钩,吃钩率高于长柄钩,适用于淡水钓取大鱼。如:草鱼,大头鱼,鲤鱼等。在抛钓中,也常用此钩制成吸食爆炸钩 千又:此钩型有倒刺,多为长柄,钩尖向内弯,与钩柄不平行且向外倾斜(俗称“歪嘴钩”),鱼吞钩后不易吐钩逃脱。适合于淡水多种鱼类,也是最为常用的海钓钩。 管付千又:此钩型钩柄尾端弯成圆形,钩型同千又一样,渔线经过钩柄圈系住钩,拴线牢固,以钓取较大鱼类。多用于海钓凶猛鱼类,鱼吃钩后不易逃脱。 新关东:此钩型无倒刺,钩柄长,钩尖锋利,钩门较宽,,上鱼率高,有快钓快取的优越性。适合钓淡水鱼种。如:鲫鱼,罗非鱼等。 改良新关东:此钩型在新关东的钩型上稍改进,钩柄较之新关东更长,快钓快取,适用于淡水鱼种。 鱿鱼钩:鱿鱼钩:多用于海水,针对鱿鱼专用,一般拖钓为主,采用抛、拖、逗、摆的钓法。它的引诱力强,上鱼快。现在市面上的鱿鱼钩可分为:猎人虾、莹光虾、沉浮型、带铅型等。 铁板钩:铁板钩:在深海或近海拖钓、底钓钓法中,铁板是作钓饵及铅坠用。它的样式五花八门,颜色以鲜艳为主。在水中的状态能使海鱼产生很大的吸引力,而它所用的三叉钩有三个钩尖,可使鱼上钩的潜力大增。适合的鱼群有大眼金枪鱼、青干、白卜、七点鲹等。 爆炸钩:爆炸钩:用于海竿钓法。上面的透明胶管设计可以以防止钩与钩之间的缠绕。强拉力红锦纶线下,六枚鱼钩环形张开 昆虫拟钩:用羽毛等绑扎在鱼钩上拟似昆虫

相关文档
最新文档